run method

  1. @override
Future<int> run()
override

Runs this command.

The return value is wrapped in a Future if necessary and returned by CommandRunner.runCommand.

Implementation

@override
Future<int> run() async {
  final name = argResults!['name'] as String;
  final id = argResults?['id'] as String? ?? '';
  var groupId = argResults?['group-id'] as String? ?? '';
  final mainLocale = argResults?['main-locale'] as String? ?? 'en';
  final targetLocaleIds =
      argResults?['target-locales'] as List<String>? ?? [];
  final description = argResults?['description'] as String? ?? '';
  final ignoreWords = argResults?['ignore-words'] as List<String>? ?? [];
  final variants = argResults?['variants'] as List<String>? ?? [];
  final exportDart = argResults?['export-dart'] == true;
  final exportFlutter = argResults?['export-flutter'] == true;
  final validateExport = argResults?['validate-export'] == true;

  if (groupId.isEmpty) {
    final groupClient = container.read(groupServiceClientProvider);
    final primary = await groupClient.getPrimaryGroup(
      Empty(),
      options: getCallOptions(),
    );
    groupId = primary.id;
  }

  final project = Project(
    name: name,
    groupId: groupId,
    mainLocaleId: mainLocale,
    description: description,
    exportDart: exportDart,
    exportFlutter: exportFlutter,
    validateExport: validateExport,
  );
  if (id.isNotEmpty) {
    project.id = id;
  }

  project.targetLocales.addAll(
    targetLocaleIds.map(
      (loc) => Localization(localeId: loc, autoTranslate: true),
    ),
  );
  project.ignoreWords.addAll(ignoreWords);
  project.variants.addAll(variants);

  final client = container.read(projectServiceClientProvider);
  final result = await client.upsertProject(
    project,
    options: getCallOptions(),
  );
  printOutput(result);
  return 0;
}