run method
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');
}