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;
isAllFlavor = argResults?['all-flavor'] 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');
}
if (clearOldFiles) deleteFiles();
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');
}
List<String> allFlavorPath = isAllFlavor
? find(
'color2dart.yaml',
recursive: true,
types: [Find.file],
workingDirectory: color2dartDir ?? join(current),
).toList()
: [pathColorYaml];
final colorYaml = YamlHelper.loadFileYaml(allFlavorPath.first);
generateBase(colorYaml.entries.firstOrNull);
for (var path in allFlavorPath) {
final flavor = path
.replaceAll('${separator}color2dart.yaml', '')
.split(separator)
.last;
final colorYaml = YamlHelper.loadFileYaml(path);
colorYaml.forEach((theme, value) {
generateTheme(theme, value, flavor);
generateColors(theme, value, flavor);
});
}
generateLibrary(colorYaml);
await ModularHelper.format([pathColors, pathThemes]);
StatusHelper.success('morpheme color2dart');
}