uploadBuild method

Future<void> uploadBuild({
  1. required String track,
  2. required String filePath,
})

Implementation

Future<void> uploadBuild({
  required final String track,
  required final String filePath,
}) async {
  final packageName = await _packageName();
  final client = await clientViaServiceAccount(
    _serviceAccountCredentials,
    [AndroidPublisherApi.androidpublisherScope],
  );

  final androidPublisher = AndroidPublisherApi(client);

  try {
    final edit = await androidPublisher.edits.insert(AppEdit(), packageName);
    final editId = edit.id;
    if (editId == null) {
      throw Exception('Edit ID not found.');
    }

    final file = File(filePath);
    final uploadResponse = await androidPublisher.edits.bundles.upload(
      packageName,
      editId,
      uploadMedia: Media(file.openRead(), file.lengthSync()),
    );

    stdout.writeln('Uploaded version code: ${uploadResponse.versionCode}');

    await androidPublisher.edits.tracks.update(
      Track()
        ..track = track
        ..releases = [
          TrackRelease()
            ..versionCodes = [uploadResponse.versionCode?.toString() ?? '']
            ..status = 'completed',
        ],
      packageName,
      editId,
      track,
    );

    await androidPublisher.edits.commit(packageName, editId);
    stdout.writeln('Edit committed successfully');
  } catch (error) {
    rethrow;
  } finally {
    client.close();
  }
}