InitOptions.parse constructor

InitOptions.parse(
  1. List<String> args
)

Parses the args that follow the init command.

Implementation

factory InitOptions.parse(List<String> args) {
  var all = false;
  var minimal = false;
  var yes = false;
  var runPubGet = true;
  var force = false;
  var list = false;
  var help = false;
  final modules = <String>[];
  final unknown = <String>[];

  void addModulesFromValue(String value) {
    for (final part in value.split(',')) {
      final trimmed = part.trim();
      if (trimmed.isNotEmpty) modules.add(trimmed);
    }
  }

  for (var i = 0; i < args.length; i++) {
    final arg = args[i];
    switch (arg) {
      case '--all':
      case '-a':
        all = true;
        break;
      case '--minimal':
        minimal = true;
        break;
      case '--yes':
      case '-y':
        yes = true;
        break;
      case '--no-pub-get':
        runPubGet = false;
        break;
      case '--force':
      case '-f':
        force = true;
        break;
      case '--list':
      case '-l':
        list = true;
        break;
      case '--help':
      case '-h':
        help = true;
        break;
      case '--modules':
      case '-m':
        if (i + 1 < args.length) {
          addModulesFromValue(args[++i]);
        }
        break;
      default:
        if (arg.startsWith('--modules=')) {
          addModulesFromValue(arg.substring('--modules='.length));
        } else if (arg.startsWith('-')) {
          unknown.add(arg);
        }
        break;
    }
  }

  return InitOptions(
    all: all,
    minimal: minimal,
    modules: modules,
    yes: yes,
    runPubGet: runPubGet,
    force: force,
    list: list,
    help: help,
    unknownFlags: unknown,
  );
}