generate method

Future<void> generate({
  1. InitConfig? config,
  2. bool maintainApp = true,
  3. String? appFilePath,
  4. bool runFlutterCommands = true,
  5. bool syncDependencies = true,
  6. bool overwrite = false,
})

Configures and generates localization resources for the current project.

Ensures the required dependencies and Flutter configuration are present, generates localization files, runs Flutter localization generation, and validates the resulting configuration.

Implementation

Future<void> generate({
  InitConfig? config,
  bool maintainApp = true,
  String? appFilePath,
  bool runFlutterCommands = true,
  bool syncDependencies = true,
  bool overwrite = false,
}) async {
  LoggerService.section('Generate Localization');

  _ensureFlutterProject();

  final resolvedConfig = config ?? await ConfigService.load();

  final pubspec = PubspecService(runPubGet: runFlutterCommands);
  await pubspec.ensureLocalization(syncDependencies: syncDependencies);

  await L10nYamlGenerator.generate(resolvedConfig);
  await ArbGenerator.generate(resolvedConfig);
  if (runFlutterCommands) {
    await FlutterService(resolvedConfig).genL10n();
  }
  if (maintainApp) {
    final targetAppFile = appFilePath ?? 'lib/app/app.dart';
    if (!File(targetAppFile).existsSync()) {
      throw Exception(
        'Cannot enable localization: App file not found at $targetAppFile.',
      );
    }
    await const AppMaintainer().enableLocalization(
      appFilePath: targetAppFile,
      outputDir: resolvedConfig.localization.outputDir,
      outputFile: resolvedConfig.localization.outputFile,
    );
  }
  LocalizationValidator.validate(resolvedConfig);
  LoggerService.success('Localization generated successfully.');
}