runComplete method

Future<EnhancedLocalizationResult> runComplete({
  1. bool generateArb = true,
  2. bool autoTranslate = false,
  3. bool generateAnalytics = true,
  4. bool generateCode = false,
  5. String? arbOutputDir,
})

Runs the complete enhanced localization checking and automation process

Implementation

Future<EnhancedLocalizationResult> runComplete({
  bool generateArb = true,
  bool autoTranslate = false,
  bool generateAnalytics = true,
  bool generateCode = false,
  String? arbOutputDir,
}) async {
  if (verbose) {
    print('🚀 Starting enhanced localization checking...');
  }

  // Phase 1: Run base localization check with enhanced patterns
  if (verbose) {
    print('📝 Phase 1: Detecting non-localized strings...');
  }
  await _baseChecker.run(
      generateArb: generateArb, arbOutputDir: arbOutputDir);
  final nonLocalizedStrings = _baseChecker.results;

  // Phase 2: Generate analytics
  LocalizationAnalytics? analytics;
  if (generateAnalytics) {
    if (verbose) {
      print('📊 Phase 2: Generating analytics...');
    }
    analytics = await _generateAnalytics(nonLocalizedStrings);
  }

  // Phase 3: Auto-translation if enabled
  Map<String, Map<String, dynamic>>? translatedArbs;
  if (autoTranslate &&
      enhancedConfig.enableAutoTranslation &&
      enhancedConfig.translationApiKey.isNotEmpty) {
    if (verbose) {
      print('🌍 Phase 3: Auto-translating to multiple languages...');
    }
    translatedArbs =
        await _performAutoTranslation(arbOutputDir ?? config.projectPath);
  }

  // Phase 4: Code generation if enabled
  if (generateCode && enhancedConfig.enableCodeGeneration) {
    if (verbose) {
      print('🏗️ Phase 4: Generating localization code...');
    }
    await _generateCode(translatedArbs);
  }

  if (verbose) {
    print('✅ Enhanced localization checking completed!');
  }

  return EnhancedLocalizationResult(
    nonLocalizedStrings: nonLocalizedStrings,
    analytics: analytics,
    translatedArbs: translatedArbs,
    generatedFiles: [], // Would be populated by code generation
  );
}