parse method

CliArgs parse(
  1. List<String> args
)

Parse command-line arguments.

Implementation

CliArgs parse(List<String> args) {
  final result = _ParseState();

  var i = 0;
  while (i < args.length) {
    final arg = args[i];

    // Check for command (starts with :)
    if (arg.startsWith(':')) {
      final cmdName = arg.substring(1);
      result.commands.add(cmdName);
      result.currentCommand = cmdName;
      result.commandArgs[cmdName] = _PerCommandState();
      i++;
      continue;
    }

    // Check for long option
    if (arg.startsWith('--')) {
      i = _parseLongOption(args, i, result);
      continue;
    }

    // Check for short option
    if (arg.startsWith('-') && arg.length > 1) {
      i = _parseShortOption(args, i, result);
      continue;
    }

    // Positional argument
    result.positionalArgs.add(arg);
    i++;
  }

  return result.toCliArgs();
}