handleCommand function
Handles the 'report' command execution.
Parses the report command arguments and executes coverage report generation.
arguments: Arguments for the report command.
verbose: Whether verbose output is enabled.
Implementation
Future<void> handleCommand(
List<String> arguments, {
bool verbose = false,
}) async {
final reportParser = buildParser();
try {
var results = reportParser.parse(arguments);
// Handle report-specific help
if (results.flag('help')) {
printUsage(reportParser);
return;
}
// Resolve preset if specified
final preset = resolvePreset(
results: results,
arguments: arguments,
parser: reportParser,
commandPath: ['report'],
);
results = preset.results;
if (verbose) {
print('[VERBOSE] Report arguments: $arguments');
if (preset.resolvedArguments != null) {
print('[VERBOSE] Report resolved arguments: '
'${preset.resolvedArguments}');
}
}
// Parse fail-under option
double? failUnder;
if (results.option('fail-under') != null) {
try {
failUnder = double.parse(results.option('fail-under')!);
if (failUnder < 0 || failUnder > 100) {
stderr.writeln('Error: fail-under must be between 0 and 100');
exit(1);
}
} on Object catch (_) {
stderr.writeln('Error: fail-under must be a valid number');
exit(1);
}
}
// Create configuration
final config = ReportConfig(
inputPath: results.option('input')!,
outputPath: results.option('output'),
excludePatterns: results.multiOption('exclude'),
excludeLinePatterns: results.multiOption('exclude-line'),
uncoveredOnly: results.flag('uncovered-only'),
failUnder: failUnder,
summary: results.flag('summary'),
noFilter: results.flag('no-filter'),
);
await runReport(config);
} on FormatException catch (e) {
stderr.writeln('Error: ${e.message}');
print('');
printUsage(reportParser);
exit(1);
}
}