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
parser.commands['build']!
..addOption(
'format',
abbr: 'f',
allowed: ['json', 'markdown', 'html'],
defaultsTo: 'html',
)
..addOption('output', abbr: 'o', defaultsTo: 'docs');
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);
}
}