run method

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

Runs this command.

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

Implementation

@override
Future<void> run() async {
  final results = argResults!;

  final firebaseAppId = results['firebaseAppId'] as String;
  final serviceAccount = results['serviceAccount'] as String;
  final appId = results['appId'] as String;
  final issuerId = results['issuerId'] as String;
  final keyId = results['keyId'] as String;
  final privateKey =
      (results['privateKey'] as String).replaceAll(r'\n', '\n');
  final gitUrl = results['gitUrl'] as String;
  final buildOptions = results['buildOptions'] as String;
  final testerGroups = results['testerGroups'] as String;

  final appleAppStoreUtil = AppleAppStoreUtil(
    issuerId: issuerId,
    keyId: keyId,
    privateKey: privateKey,
    appId: appId,
  );

  await appleAppStoreUtil.configureSigning(gitUrl: gitUrl, isAdhoc: true);

  final firebaseAppDistributionUtil = FirebaseAppDistributionUtil(
    serviceAccount: serviceAccount,
    appId: firebaseAppId,
  );

  final authClient = await firebaseAppDistributionUtil.initializeAuthClient();

  final release =
      await firebaseAppDistributionUtil.latestRelease(authClient: authClient);
  final buildNumber = release.buildNumber;

  final newBuildPath = await IOSUtil.createBuild(
    buildNumber: buildNumber,
    buildOptions: buildOptions,
  );
  if (newBuildPath != null) {
    stdout.writeln(
      'Uploading flutter build from $newBuildPath to Firebase App '
      'Distribution...',
    );
    await firebaseAppDistributionUtil.uploadBuild(
      authClient: authClient,
      filePath: newBuildPath,
      testerGroups: testerGroups.split(','),
    );
  }
}