latestRelease method
Implementation
Future<Release> latestRelease({required final String track}) async {
final packageName = await _packageName();
final scopes = [AndroidPublisherApi.androidpublisherScope];
final client = await clientViaServiceAccount(
_serviceAccountCredentials,
scopes,
);
final androidPublisher = AndroidPublisherApi(client);
try {
final edit = await androidPublisher.edits.insert(AppEdit(), packageName);
final tracks =
await androidPublisher.edits.tracks.list(packageName, edit.id ?? '');
final releases = tracks.tracks
?.firstWhere((final playStoreTrack) => playStoreTrack.track == track)
.releases;
if (releases != null && releases.isNotEmpty) {
final latestRelease = releases.firstWhere(
(final release) => release.status == 'completed',
orElse: () => releases.first,
);
final name = latestRelease.name;
final versionCode =
int.tryParse(latestRelease.versionCodes?.firstOrNull ?? '');
if (name == null || versionCode == null) {
stdout.writeln('No releases found for the $track track.');
return Release(
buildName: name ?? '1.0.0',
buildNumber: versionCode ?? 0,
);
}
return Release(buildName: name, buildNumber: versionCode);
}
stdout.writeln('No releases found for the $track track.');
return const Release(buildName: '1.0.0', buildNumber: 0);
} catch (error) {
stderr.writeln(error);
exit(1);
} finally {
client.close();
}
}