generateRootResources function

void generateRootResources({
  1. required String output,
})

Implementation

void generateRootResources({required String output}) {
  final directory = Directory(output);
  final buffer = StringBuffer();
  final files = directory
      .listSync()
      .map((e) {
        if (e is File) {
          if (extension(e.unixPath) == '.dart' &&
              basename(e.unixPath) != 'resources.dart') {
            return e;
          }
        }
      })
      .whereType<File>()
      .toList()
    ..sort(
      sortFilesByName,
    );
  for (final file in files) {
    buffer.writeln("part '${basename(file.unixPath)}';");
  }
  buffer.writeln('''

class R {
  R._();
''');
  for (final file in files) {
    switch (basenameWithoutExtension(file.unixPath)) {
      case 'string_resources':
        buffer.writeln('  static const strings = _string_resources;');
        break;
      case 'image_resources':
        buffer.writeln('  static const images = _image_resources;');
        break;
      case 'vector_resources':
        buffer.writeln('  static const vectors = _vector_resources;');
        break;
      case 'font_resources':
        buffer.writeln('  static const fonts = _font_resources;');
        break;
      case 'script_resources':
        buffer.writeln('  static const scripts = _script_resources;');
        break;
      case 'color_resources':
        buffer.writeln('  static const colors = _color_resources;');
        break;
      case 'config_resources':
        buffer.writeln('  static const configs = _config_resources;');
        break;
      case 'value_resources':
        buffer.writeln('  static const values = _value_resources;');
        break;
      case 'raw_resources':
        buffer.writeln('  static const raws = _raw_resources;');
        break;
    }
  }
  buffer.writeln('}');
  Directory(output).createSync(recursive: true);
  File('$output/resources.dart')
    ..createSync()
    ..writeAsStringSync(buffer.toString());
}