execute method

Future<void> execute()

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);
  }
}