run method
Run the CLI with provided arguments
Implementation
Future<void> run(List<String> arguments) async {
// If no arguments, try to auto-detect from pubspec.yaml
if (arguments.isEmpty) {
await _runFromPubspec();
return;
}
// Handle special commands first
if (arguments.length == 1) {
if (arguments[0] == '--help' || arguments[0] == '-h') {
_printUsage();
return;
} else if (arguments[0] == '--version' || arguments[0] == '-v') {
_printVersion();
return;
} else if (arguments[0] == 'log') {
await _printConfig();
return;
}
}
// Require at least 2 arguments for manual mode
if (arguments.length < 2) {
_printUsage();
throw Exception(
'Insufficient arguments. Use --help for usage information.',
);
}
final filePath = arguments[0];
final outputDir = arguments[1];
String className = 'AppLocalizations';
bool includeFlutterDelegates = true;
// Parse optional arguments
for (int i = 2; i < arguments.length; i++) {
final arg = arguments[i];
if (arg.startsWith('--class-name=')) {
className = arg.substring('--class-name='.length);
} else if (arg.startsWith('-c=')) {
className = arg.substring('-c='.length);
} else if (arg == '--no-delegates' ||
arg == '--no-flutter-delegates' ||
arg == '-nd') {
includeFlutterDelegates = false;
} else if (arg.startsWith('--delegates=')) {
final value = arg.substring('--delegates='.length);
includeFlutterDelegates = value.toLowerCase() == 'true';
} else if (arg.startsWith('-d=')) {
final value = arg.substring('-d='.length);
includeFlutterDelegates = value.toLowerCase() == 'true';
}
}
try {
await _translatorService.generateFromFile(
filePath: filePath,
outputDir: outputDir,
className: className,
includeFlutterDelegates: includeFlutterDelegates,
);
} catch (e) {
print('Error: $e');
rethrow;
}
}