run method

Future<void> run(
  1. List<String> arguments
)

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);
  }
}