generate static method

void generate(
  1. PackageSettings packageSettings
)

Generates an output pseudolocalization file

Implementation

static void generate(
  PackageSettings packageSettings,
) {
  // check that the file exists
  final file = File(packageSettings.inputFilepath);
  if (!file.existsSync()) {
    print('Error! File ${packageSettings.inputFilepath} does not exist!');
    return;
  }

  // check that the file has an extension - this is needed to determine if the file is supported
  if (!file.path.contains('.')) {
    print('Error! No file extension specified!');
    return;
  }

  final fileExtension = file.path.split('.').last;
  final filetype =
      Utils.convertSupportedInputFileTypeFromString(fileExtension);
  if (filetype == null) {
    print(
        'Error! File ${packageSettings.inputFilepath} has extension $fileExtension which is not supported!');
    return;
  }

  // generate output
  if (filetype == SupportedInputFileType.csv) {
    final outputFile = File(
      packageSettings.csvSettings.outputFilepath ??
          Utils.generateCSVOutputFilePath(
              inputFilepath: packageSettings.inputFilepath),
    );
    final fileContents = CSVGenerator.generate(file, packageSettings);
    outputFile.createRecursivelyAndWriteContents(fileContents);
  } else if (filetype == SupportedInputFileType.arb) {
    // firstly deal with base
    var outputFile = File(
      Utils.generateARBOutputFilepath(
        outputDirectory: packageSettings.arbSettings.outputDirectory,
        language: 'en',
      ),
    );
    if (packageSettings.replaceBase) {
      final fileContents = ARBGenerator.generate(file, packageSettings);
      outputFile.createRecursivelyAndWriteContents(fileContents);
    } else {
      outputFile.createRecursivelyAndWriteContents(file.readAsStringSync());
      print('Wrote to ${outputFile.path}');
    }

    // then generate any additional languages
    if (packageSettings.languagesToGenerate != null &&
        packageSettings.languagesToGenerate!.isNotEmpty) {
      for (final language in packageSettings.languagesToGenerate!) {
        final outputFile = File(
          Utils.generateARBOutputFilepath(
            outputDirectory: packageSettings.arbSettings.outputDirectory,
            language: Utils.describeEnum(language),
          ),
        );
        final fileContents = ARBGenerator.generate(
          file,
          packageSettings,
          supportedLanguage: language,
        );
        outputFile.createRecursivelyAndWriteContents(fileContents);
      }
    }
  }

  print('All Done!');
}