run method

Future<void> run(
  1. List<String> arguments
)

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