parse method
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();
}