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 storePassword = results['storePassword'] as String;
  final keyPassword = results['keyPassword'] as String;
  final keyAlias = results['keyAlias'] as String;
  final storeFile = results['storeFile'] as String;
  final testerGroups = results['testerGroups'] as String;
  final buildOptions = results['buildOptions'] as String;

  await AndroidUtil.configureSigning(
    storePassword: storePassword,
    keyPassword: keyPassword,
    keyAlias: keyAlias,
    storeFile: storeFile,
  );

  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 AndroidUtil.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(','),
    );
  }
}