execute method
Execute the generate command
Implementation
Future<void> execute() async {
try {
CliUtils.printHeader();
CliUtils.printInfo('Starting translation generation...');
CliUtils.printSeparator();
// Load and validate configuration
CliUtils.printInfo('Loading configuration...');
final config = await _configService.loadConfig();
CliUtils.printInfo('Validating configuration...');
await _configService.validateConfig();
CliUtils.printSuccess('Configuration loaded and validated successfully!');
CliUtils.printInfo('Languages: ${config.languages.join(', ')}');
CliUtils.printInfo('Strings to translate: ${config.strings.length}');
CliUtils.printSeparator();
// Create translation service
final translationService = TranslationService(
geminiService: _geminiService,
config: config,
);
// Generate translations with progress tracking
final translations = await _generateWithProgress(translationService);
// Save translations
CliUtils.printInfo('Saving translation files...');
await translationService.saveTranslations(translations);
// Add proper spacing
stdout.writeln();
CliUtils.printSeparator();
stdout.writeln();
CliUtils.printSuccess('Translation generation completed successfully!');
stdout.writeln();
CliUtils.printInfo('Generated files:');
for (final language in config.languages) {
CliUtils.printColored(' - lib/l10n/$language.json', color: 'cyan');
}
stdout.writeln();
CliUtils.printInfo('You can now use these files in your Flutter app!');
stdout.writeln();
} catch (e) {
CliUtils.printError('Translation generation failed: ${e.toString()}');
exit(1);
}
}