execute method

  1. @override
Future<int> execute(
  1. List<String> arguments
)
override

Executes the command with the provided arguments. Returns an integer exit code (0 for success).

Implementation

@override
Future<int> execute(List<String> arguments) async {
  final ArgResults results;
  try {
    results = _argParser.parse(arguments);
  } on FormatException catch (e) {
    throw ValidationException(
      'Error: ${e.message}\n\nUsage:\n  flutter_setup verify [--path <path>] [--allow-dirty]',
    );
  }

  final targetPath = results['path'] as String? ?? '.';
  final allowDirty = results['allow-dirty'] as bool? ?? false;

  final context = ReleaseContext(
    projectPath: targetPath,
    type: ReleaseType.normal,
    allowDirty: allowDirty,
  );

  _output.info('Flutter Setup Verification\n');

  final validationResult = await _pipeline.validate(context);

  for (final check in validationResult.checks) {
    switch (check.status) {
      case CheckStatus.passed:
        _output.success('${check.name}: ${check.message}');
        break;
      case CheckStatus.warning:
        _output.warning('${check.name}: ${check.message}');
        break;
      case CheckStatus.failed:
        _output.error('✗ ${check.name}: ${check.message}');
        break;
    }
  }

  if (validationResult.passed) {
    _output.info('\nVerification complete.');
    return 0;
  } else {
    _output.error('\nVerification failed.');
    return 1;
  }
}