AssetConfig.fromArgs constructor

AssetConfig.fromArgs(
  1. List<String> args
)

Implementation

factory AssetConfig.fromArgs(List<String> args) {
  bool allInOne = false; // default
  List<String> includePaths = [];
  String outputPath = "lib/generated/assets";
  String preClass = "App";
  String postClass = "";

  for (var i = 0; i < args.length; i++) {
    final arg = args[i];
    switch (arg) {
      case '--all-in-one':
        allInOne = true;
        break;
      case '--separate':
        allInOne = false;
        break;
      case '--include':
        if (i + 1 < args.length) {
          final paths = <String>[];
          for (var j = i + 1; j < args.length; j++) {
            if (args[j].startsWith('--')) break;
            paths.add(args[j]);
            i = j;
          }
          includePaths.addAll(paths);
        }
        break;
      case '--output':
        if (i + 1 < args.length) {
          outputPath = args[i + 1];
          i++;
        }
        break;
      case '--pre-class':
        if (i + 1 < args.length) {
          preClass = args[i + 1];
          i++;
        }
        break;
      case '--post-class':
        if (i + 1 < args.length) {
          postClass = args[i + 1];
          i++;
        }
        break;
      case '--help':
      case '-h':
        printHelp();
        exit(0);
    }
  }

  final outputDir = Directory(outputPath);
  if (!outputDir.existsSync()) {
    outputDir.createSync(recursive: true);
  }

  return AssetConfig(
    allInOne: allInOne,
    includePaths: includePaths,
    outputDirectory: outputDir,
    preClass: preClass,
    postClass: postClass,
  );
}