execute method
execute command
Implementation
@override
Future<void> execute() async {
final wantDev = flags.contains('-d') || flags.contains('-dev') || flags.contains('-development');
final wantStaging = flags.contains('-s') || flags.contains('-staging');
final wantUat = flags.contains('-u') || flags.contains('-uat');
final wantProduction = flags.contains('-p') || flags.contains('-production');
final selectedCount = [wantDev, wantStaging, wantUat, wantProduction].where((e) => e).length;
if (selectedCount > 1) {
LogService.error('Choose only one environment: -d/--dev, -s/--staging, -u/--uat, or -p/--production');
return;
}
_Env? selected;
if (wantDev) {
selected = await _resolveEnv('dev', 'lib/main_dev.dart', 'dev/.env');
selected ??= await _resolveEnv('development', 'lib/main_development.dart', 'development/.env');
} else if (wantStaging) {
selected = await _resolveEnv('staging', 'lib/main_staging.dart', 'staging/.env');
} else if (wantUat) {
selected = await _resolveEnv('uat', 'lib/main_uat.dart', 'uat/.env');
} else if (wantProduction) {
selected = await _resolveEnv('production', 'lib/main_production.dart', 'production/.env');
} else {
// default preference: dev -> staging -> uat -> production
selected = await _resolveEnv('dev', 'lib/main_dev.dart', 'dev/.env');
selected ??= await _resolveEnv('development', 'lib/main_development.dart', 'development/.env');
selected ??= await _resolveEnv('staging', 'lib/main_staging.dart', 'staging/.env');
selected ??= await _resolveEnv('uat', 'lib/main_uat.dart', 'uat/.env');
selected ??= await _resolveEnv('production', 'lib/main_production.dart', 'production/.env');
}
if (selected == null) {
LogService.error('No .env found. Expected ./dev/.env, ./staging/.env, ./uat/.env, or ./production/.env');
return;
}
final deviceId = onCommand.isEmpty ? null : onCommand;
await _runFlutter(selected, deviceId: deviceId);
}