run method

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

Implementation

Future<void> run(List<String> arguments) async {
  // Handle special case for config --state command
  if (arguments.length >= 3 && arguments[0] == 'config' && arguments[1] == '--state') {
    await _setStateManager(arguments[2]);
    return;
  }

  final parser = ArgParser()
    ..addFlag('help', abbr: 'h', help: 'Show this help message')
    ..addFlag('version', abbr: 'v', help: 'Show version information');

  try {
    final results = parser.parse(arguments);

    if (results['help']) {
      _showHelp();
      return;
    }

    if (results['version']) {
      _showVersion();
      return;
    }

    if (results.rest.isEmpty) {
      _showHelp();
      return;
    }

    final command = results.rest.first;
    final args = results.rest.skip(1).toList();

    switch (command) {
      case 'gen':
        await _handleGenCommand(args);
        break;
      case 'config':
        await _handleConfigCommand(args);
        break;
      default:
        print('Unknown command: $command');
        _showHelp();
    }
  } catch (e) {
    print('Error: $e');
    _showHelp();
  }
}