run method
Implementation
Future<void> run(List<String> arguments) async {
_printBanner();
final parser = ArgParser()
..addCommand('scan')
..addCommand('build')
..addCommand('serve')
..addFlag('help', abbr: 'h', negatable: false, help: 'Show help')
..addFlag('version', abbr: 'v', negatable: false, help: 'Show version');
// Add build subcommand options
// final buildCommand = parser.commands['build']!
// ..addOption(
// 'format',
// abbr: 'f',
// allowed: ['json', 'markdown', 'html'],
// defaultsTo: 'html',
// )
// ..addOption('output', abbr: 'o', defaultsTo: 'docs');
//
// final serveCommand = parser.commands['serve']!
// ..addOption('port', abbr: 'p', defaultsTo: '8080');
try {
final results = parser.parse(arguments);
if (results['help'] as bool) {
_printHelp(parser);
return;
}
if (results['version'] as bool) {
_printVersion();
return;
}
if (results.command == null) {
_printHelp(parser);
return;
}
final command = results.command!;
switch (command.name) {
case 'scan':
await _handleScan(command.rest);
break;
case 'build':
await _handleBuild(command);
break;
case 'serve':
await _handleServe(command);
break;
}
} catch (e) {
_logger.err('Error: $e');
exit(1);
}
}