run method

  1. @override
void run()
override

Runs this command.

The return value is wrapped in a Future if necessary and returned by CommandRunner.runCommand.

Implementation

@override
void run() async {
  try {
    // Parse and validate arguments
    final coverageConfig = _parseCoverageConfiguration();
    final argMorphemeYaml = argResults.getOptionMorphemeYaml();

    // Validate morpheme.yaml and coverage configuration
    YamlHelper.validateMorphemeYaml(argMorphemeYaml);
    final morphemeConfig = YamlHelper.loadFileYaml(argMorphemeYaml);
    final coverageSettings = _validateCoverageSettings(morphemeConfig);

    printMessage('🏃 Starting comprehensive coverage analysis...');

    // Execute tests with coverage
    await _executeTestsWithCoverage(coverageConfig, argMorphemeYaml);

    // Validate required tools are available
    _validateCoverageTools();

    // Process coverage data
    await _processCoverageData(coverageSettings);

    // Generate HTML report
    await _generateHtmlReport(coverageSettings);

    printMessage('✨ Coverage analysis completed successfully!');
    StatusHelper.success(
        'Coverage report generated to ${coverageSettings.outputHtmlDir}');
  } catch (e) {
    StatusHelper.failed('Coverage analysis failed: $e');
  }
}