run method

  1. @override
void run()
override

Runs this command.

The return value is wrapped in a Future if necessary and returned by CommandRunner.runCommand.

Implementation

@override
void run() async {
  final clearOldFiles = argResults?['clear-files'] as bool;

  if (argResults?.rest.firstOrNull == 'init') {
    init();
    return;
  }

  final argMorphemeYaml = argResults.getOptionMorphemeYaml();
  YamlHelper.validateMorphemeYaml(argMorphemeYaml);
  final morphemeYaml = YamlHelper.loadFileYaml(argMorphemeYaml);

  if (morphemeYaml['color2dart'] == null) {
    StatusHelper.failed('color2dart not found in $argMorphemeYaml');
  }

  final morphemeColor2dart = morphemeYaml['color2dart'] as Map;
  final color2dartDir = morphemeColor2dart['color2dart_dir']?.toString();
  final outputDir = morphemeColor2dart['output_dir']?.toString();

  if (outputDir != null) {
    pathColors = join(outputDir, 'morpheme_colors');
    pathThemes = join(outputDir, 'morpheme_themes');
  }

  final argFlavor = argResults.getOptionFlavor(defaultTo: '');
  String pathColorYaml = color2dartDir != null
      ? join(current, color2dartDir, 'color2dart.yaml')
      : join(current, 'color2dart', 'color2dart.yaml');
  if (argFlavor.isNotEmpty) {
    pathColorYaml = color2dartDir != null
        ? join(current, color2dartDir, argFlavor, 'color2dart.yaml')
        : join(current, 'color2dart', argFlavor, 'color2dart.yaml');
  }
  if (!exists(pathColorYaml)) {
    StatusHelper.failed(
      'File $pathColorYaml is not found, you can create color2dart with `morpheme color2dart init`',
    );
  }

  final colorYaml = YamlHelper.loadFileYaml(pathColorYaml);
  if (clearOldFiles) deleteFiles();
  generateBase(colorYaml.entries.firstOrNull);

  colorYaml.forEach((theme, value) {
    generateTheme(theme, value);
    generateColors(theme, value);
  });

  generateLibrary(colorYaml);

  await ModularHelper.format([pathColors, pathThemes]);

  StatusHelper.success('morpheme color2dart');
}