build method
Implementation
Future<void> build() async {
final ConcurrentQueue dartFileQueue = ConcurrentQueue(
autoStart: true,
concurrency: 1
);
final dartFile = Glob('${xmlOuputPath.absolute.path}/*.svg');
final List<FileSystemEntity> files = dartFile.listSync();
for (final entity in files) {
if (entity is File && entity.existsSync()) {
final File file = entity;
final String xml = file.readAsStringSync();
final ReCase iconName = ReCase(path.basenameWithoutExtension(file.path));
if (xml != '') {
XmlDocument xmlDocument = XmlDocument.parse(xml);
final root = xmlDocument.firstChild;
int width = int.tryParse(root?.getAttribute('width') ?? '') ?? 24;
int height = int.tryParse(root?.getAttribute('height') ?? '') ?? 24;
final String dartFile = buildPainterClass(iconName.pascalCase, xmlDocument, width, height);
dartFileQueue.add(() async {
final file = File('${outputPath.absolute.path}/${iconName.snakeCase}.dart');
await file.writeAsString(dartFile);
print('${path.basename(file.path)} saved');
});
} else {
print('failed to generate from $iconName as it is empty');
}
}
}
await dartFileQueue.onIdle();
}