execute method
Executes the command with the provided arguments.
Returns an integer exit code (0 for success).
Implementation
@override
Future<int> execute(List<String> arguments) async {
// 1. Default invocation without subcommands: show CLI version
if (arguments.isEmpty) {
_output.info('$cliName $packageVersion');
return 0;
}
final subCommand = arguments.first.toLowerCase();
// Preserve CLI version display for flags or 'show' subcommand
if (subCommand == '-v' ||
subCommand == '--version' ||
subCommand == 'show' ||
subCommand == 'cli') {
_output.info('$cliName $packageVersion');
return 0;
}
String targetPath = '.';
for (int i = 1; i < arguments.length; i++) {
if ((arguments[i] == '--path' || arguments[i] == '-p') &&
i + 1 < arguments.length) {
targetPath = arguments[i + 1];
break;
}
}
Validators.validateExistingFlutterProject(Directory(targetPath));
if (subCommand == 'get') {
final current = _versionManager.getCurrentVersion(targetPath);
_output.info('Project version: $current');
return 0;
}
if (subCommand == 'bump') {
VersionBumpMode mode = VersionBumpMode.patch;
if (arguments.contains('--minor')) {
mode = VersionBumpMode.minor;
} else if (arguments.contains('--major')) {
mode = VersionBumpMode.major;
}
final nextVersion = await _versionManager.calculateNextVersion(
projectPath: targetPath,
mode: mode,
);
_versionManager.updateVersion(targetPath, nextVersion, output: _output);
return 0;
}
throw ValidationException(
'Unknown version subcommand: "$subCommand".\n'
'Usage:\n'
' flutter_setup version (Show CLI version)\n'
' flutter_setup version get (Show project version)\n'
' flutter_setup version bump [--patch|--minor|--major]',
);
}