build method

Future<void> build()

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();
}