run method

  1. @override
void run()
override

Runs this command.

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

Implementation

@override
void run() async {
  CucumberHelper.removeNdjsonGherkin();
  final argTarget = argResults.getOptionTarget();
  final argFlavor = argResults.getOptionFlavor(defaultTo: Constants.dev);
  final argMorphemeYaml = argResults.getOptionMorphemeYaml();
  final argExportMethod = argResults.getOptionExportMethod();
  final argExportOptionsPlist = argResults.getOptionExportOptionsPlist();
  final argBuildNumber = argResults.getOptionBuildNumber();
  final argBuildName = argResults.getOptionBuildName();
  // final argObfuscate = argResults.getFlagObfuscate(); // TODO: used when the shorebird command supports obfuscation
  final argSplitDebugInfo = argResults.getOptionSplitDebugInfo();
  final argGenerateL10n = argResults.getFlagGenerateL10n();

  YamlHelper.validateMorphemeYaml(argMorphemeYaml);

  if (argGenerateL10n) {
    await 'morpheme l10n --morpheme-yaml "$argMorphemeYaml"'.run;
  }

  final flavor = FlavorHelper.byFlavor(argFlavor, argMorphemeYaml);

  FirebaseHelper.run(argFlavor, argMorphemeYaml);

  final shorebird = ShorebirdHelper.byFlavor(argFlavor, argMorphemeYaml);
  final argFlutterVersion = shorebird.$1?.isEmpty ?? true
      ? ''
      : '--flutter-version ${shorebird.$1}';
  ShorebirdHelper.writeShorebirdYaml(shorebird.$2);

  List<String> dartDefines = [];
  flavor.forEach((key, value) {
    dartDefines.add('${Constants.dartDefine} "$key=$value"');
  });

  String releaseVersion =
      '${argResults?['build-name'] ?? ''}+${argResults?['build-number'] ?? ''}';
  if (releaseVersion.isEmpty || releaseVersion == '+') {
    releaseVersion = '';
  } else {
    releaseVersion = '--release-version $releaseVersion';
  }

  final command =
      'shorebird patch ios -t $argTarget ${dartDefines.join(' ')} $argExportMethod $argExportOptionsPlist $argBuildNumber $argBuildName $argSplitDebugInfo $releaseVersion $argFlutterVersion --no-confirm';
  printMessage(command);

  await command.run;

  StatusHelper.success('shorebird patch ipa');
}