parse method

Parses the given args and returns the parsed results as a TranslateArgResults object.

Throws a FormatException if there is an unexpected positional argument. Returns a TranslateArgResults object containing the parsed results.

Implementation

TranslateArgResults parse(List<String> args) {
  final rawResults = _parser.parse(args);

  if (rawResults.rest.isNotEmpty) {
    throw FormatException(
      'Unexpected positional argument "${rawResults.rest.first}".',
    );
  }

  final modelProvider = rawResults.wasParsed(_modelProviderKey)
      ? ModelProvider.values.firstWhereOrNull(
          (provider) => provider.key == rawResults[_modelProviderKey],
        )
      : null;
  final model = rawResults.wasParsed(_modelKey)
      ? Model.values.firstWhereOrNull(
          (model) => model.key == rawResults[_modelKey],
        )
      : null;
  final excludeLocales = rawResults.wasParsed(_excludeLocalesKey)
      ? rawResults[_excludeLocalesKey] as List<String>
      : null;

  return TranslateArgResults(
    help: _getBoolIfParsed(rawResults, _helpKey),
    modelProvider: modelProvider,
    model: model,
    apiKey: rawResults[_apiKeyKey] as String?,
    vertexAiProjectUrl: rawResults[_vertexAiProjectUrlKey] as String?,
    disableSafety: _getBoolIfParsed(rawResults, _disableSafetyKey),
    context: rawResults[_contextKey] as String?,
    excludeLocales: excludeLocales,
    arbDir: rawResults[TranslateOptions.arbDirKey] as String?,
    templateArbFile:
        rawResults[TranslateOptions.templateArbFileKey] as String?,
    useEscaping:
        _getBoolIfParsed(rawResults, TranslateOptions.useEscapingKey),
    relaxSyntax:
        _getBoolIfParsed(rawResults, TranslateOptions.relaxSyntaxKey),
  );
}