run method
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 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 buildOptions = results['buildOptions'] as String;
final flutterVersion = results['flutterVersion'] as String;
final allowAssetDiffs = results['allowAssetDiffs'] as bool;
await AndroidUtil.configureSigning(
storePassword: storePassword,
keyPassword: keyPassword,
keyAlias: keyAlias,
storeFile: storeFile,
);
final googlePlayStoreUtil = GooglePlayStoreUtil(
serviceAccount: serviceAccount,
);
final release = await googlePlayStoreUtil.latestRelease(track: 'internal');
final buildName = release.buildName;
final buildNumber = release.buildNumber;
final pubspecVersionChange = await GitUtil.pubspecVersionChange();
if (pubspecVersionChange == null) {
await ShorebirdUtil.patch(
buildName: buildName,
buildNumber: buildNumber,
platform: 'android',
buildOptions: buildOptions,
flutterVersion: flutterVersion,
allowAssetDiffs: allowAssetDiffs,
);
return;
}
final newBuildPaths = await ShorebirdUtil.release(
buildName: pubspecVersionChange,
buildNumber: buildNumber,
platform: 'android',
buildOptions: buildOptions,
flutterVersion: flutterVersion,
);
for (final buildPath in newBuildPaths) {
stdout.writeln(
'Uploading shorebird build from $buildPath to Google Play...',
);
await googlePlayStoreUtil.uploadBuild(
track: 'internal',
filePath: buildPath,
);
}
}