generateConfigResources function

void generateConfigResources({
  1. required String input,
  2. required String output,
  3. String? package,
  4. String? flavor,
})

Implementation

void generateConfigResources({
  required String input,
  required String output,
  String? package,
  String? flavor,
}) {
  Logger.verboseLog('Generating config resources...');
  final directory = Directory(input);
  if (!directory.existsSync()) {
    Logger.verboseLog('configs/ folder is not exist. Skipping...');
    return;
  }
  final buffer = StringBuffer(
    """
// ignore_for_file: non_constant_identifier_names, constant_identifier_names
part of '${flavor == null ? '' : '../'}resources.dart';

const _${flavor == null ? '' : '${flavor}_'}config_resources = (\n""",
  );
  try {
    final files = directory
        .listSync()
        .where(
          (element) =>
              element is File &&
              extension(element.unixPath) == '.json' &&
              !element.isHidden,
        )
        .cast<File>()
        .toList()
      ..sort(sortFilesByName);
    for (final file in files) {
      final line = file.readAsStringSync();
      final object = json.decode(line);
      buffer.write('  ${safeName(basenameWithoutExtension(file.unixPath))}: ');
      if (object is Map) {
        Writer(buffer).writeRecord(
          4,
          object.map((key, value) => MapEntry(key, value)),
        );
      }
      buffer.write(',\n');
    }
  } catch (_) {}
  buffer.writeln(');');
  Directory(join(output, flavor)).createSync(recursive: true);
  File(joinAll([output, flavor, 'config_resources.dart'].whereType<String>()))
    ..createSync()
    ..writeAsStringSync(buffer.toString());
  Logger.verboseLog('Generated config resources!');
}