run method

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

Runs the CLI with the given command-line arguments.

Returns an exit code: 0 for success, non-zero for errors.

Implementation

Future<int> run(List<String> arguments) async {
  final ArgParser argParser = _buildParser();

  try {
    final ArgResults results = argParser.parse(arguments);

    // Process global flags
    if (results.flag('help')) {
      _printUsage(argParser);
      return 0;
    }
    if (results.flag('version')) {
      print('splendid_code_quality version: $version');
      return 0;
    }

    // Process commands
    if (results.command?.name == 'complexity') {
      return _handleComplexityCommand(results.command!);
    }
    if (results.command?.name == 'loc') {
      return _handleLocCommand(results.command!);
    }
    if (results.command?.name == 'cognitive') {
      return _handleCognitiveCommand(results.command!);
    }
    if (results.command?.name == 'halstead') {
      return _handleHalsteadCommand(results.command!);
    }
    if (results.command?.name == 'inheritance') {
      return _handleInheritanceCommand(results.command!);
    }
    if (results.command?.name == 'report') {
      return await _handleReportCommand(results.command!);
    }

    // No command provided
    _printUsage(argParser);
    return 0;
  } on FormatException catch (e) {
    print(e.message);
    print('');
    _printUsage(argParser);
    return 1;
  }
}