From 87accbcd4146d863890bcaaff480eae3a88d48eb Mon Sep 17 00:00:00 2001 From: "Jack Boswell (boswelja)" Date: Fri, 23 Oct 2020 16:00:18 +1300 Subject: [PATCH] Add releases to the edit track correctly --- lib/edits.js | 22 +++++++++++----------- src/edits.ts | 24 ++++++++++++------------ 2 files changed, 23 insertions(+), 23 deletions(-) diff --git a/lib/edits.js b/lib/edits.js index 170b72c8..4350deb5 100644 --- a/lib/edits.js +++ b/lib/edits.js @@ -41,13 +41,16 @@ function uploadToPlayStore(options, releaseFiles) { auth: options.auth, packageName: options.applicationId }); + var versionCodes = new Array(); releaseFiles.forEach((releaseFile) => __awaiter(this, void 0, void 0, function* () { core.debug(`Uploading ${releaseFile}`); - yield uploadRelease(appEdit.data, options, releaseFile).catch(reason => { + const versionCode = yield uploadRelease(appEdit.data, options, releaseFile).catch(reason => { core.setFailed(reason); return Promise.reject(reason); }); + versionCodes.push(versionCode); })); + const track = trackVersionCode(appEdit.data, options, versionCodes); const res = yield androidPublisher.edits.commit({ auth: options.auth, editId: appEdit.data.id, @@ -72,12 +75,12 @@ function uploadRelease(appEdit, options, releaseFile) { if (releaseFile.endsWith('.apk')) { const res = yield internalSharingUploadApk(options, releaseFile); console.log(`${releaseFile} uploaded to Internal Sharing, download it with ${res.downloadUrl}`); - return Promise.resolve(res.downloadUrl); + return Promise.resolve(undefined); } else if (releaseFile.endsWith('.aab')) { const res = yield internalSharingUploadBundle(options, releaseFile); console.log(`${releaseFile} uploaded to Internal Sharing, download it with ${res.downloadUrl}`); - return Promise.resolve(res.downloadUrl); + return Promise.resolve(undefined); } else { core.setFailed(`${releaseFile} is invalid`); @@ -89,16 +92,15 @@ function uploadRelease(appEdit, options, releaseFile) { core.setFailed(`Track "${options.track}" could not be found `); return Promise.reject(`No track found for "${options.track}"`); } - let track = undefined; if (releaseFile.endsWith('.apk')) { const apk = yield uploadApk(appEdit, options, releaseFile); yield uploadMappingFile(appEdit, apk.versionCode, options); - track = yield trackVersionCode(appEdit, options, apk.versionCode); + return Promise.resolve(apk.versionCode); } else if (releaseFile.endsWith('.aab')) { const bundle = yield uploadBundle(appEdit, options, releaseFile); yield uploadMappingFile(appEdit, bundle.versionCode, options); - track = yield trackVersionCode(appEdit, options, bundle.versionCode); + return Promise.resolve(bundle.versionCode); } else { core.setFailed(`${releaseFile} is invalid`); @@ -116,7 +118,7 @@ function getAllTracks(appEdit, options) { return res.data.tracks; }); } -function trackVersionCode(appEdit, options, versionCode) { +function trackVersionCode(appEdit, options, versionCodes) { return __awaiter(this, void 0, void 0, function* () { let status; if (options.userFraction != undefined) { @@ -125,7 +127,7 @@ function trackVersionCode(appEdit, options, versionCode) { else { status = 'completed'; } - core.debug(`Creating Track Release for Edit(${appEdit.id}) for Track(${options.track}) with a UserFraction(${options.userFraction}) and VersionCode(${versionCode})`); + core.debug(`Creating Track Release for Edit(${appEdit.id}) for Track(${options.track}) with a UserFraction(${options.userFraction}) and VersionCodes(${versionCodes})`); const res = yield androidPublisher.edits.tracks .update({ auth: options.auth, @@ -139,9 +141,7 @@ function trackVersionCode(appEdit, options, versionCode) { userFraction: options.userFraction, status: status, releaseNotes: yield whatsnew_1.readLocalizedReleaseNotes(options.whatsNewDir), - versionCodes: [ - versionCode.toString() - ] + versionCodes: versionCodes.map(x => x.toString()) } ] } diff --git a/src/edits.ts b/src/edits.ts index b1760192..443536d5 100644 --- a/src/edits.ts +++ b/src/edits.ts @@ -33,14 +33,17 @@ export async function uploadToPlayStore(options: EditOptions, releaseFiles: stri packageName: options.applicationId }); + var versionCodes = new Array() releaseFiles.forEach(async releaseFile => { core.debug(`Uploading ${releaseFile}`) - await uploadRelease(appEdit.data, options, releaseFile).catch(reason => { + const versionCode = await uploadRelease(appEdit.data, options, releaseFile).catch(reason => { core.setFailed(reason) return Promise.reject(reason) }) + versionCodes.push(versionCode!) }) + const track = trackVersionCode(appEdit.data, options, versionCodes) const res = await androidPublisher.edits.commit({ auth: options.auth, editId: appEdit.data.id!, @@ -56,18 +59,18 @@ export async function uploadToPlayStore(options: EditOptions, releaseFiles: stri } } -async function uploadRelease(appEdit: AppEdit, options: EditOptions, releaseFile: string): Promise { +async function uploadRelease(appEdit: AppEdit, options: EditOptions, releaseFile: string): Promise { // Check the 'track' for 'internalsharing', if so switch to a non-track api if (options.track === 'internalsharing'){ core.debug("Track is Internal app sharing, switch to special upload api") if (releaseFile.endsWith('.apk')) { const res = await internalSharingUploadApk(options, releaseFile) console.log(`${releaseFile} uploaded to Internal Sharing, download it with ${res.downloadUrl}`) - return Promise.resolve(res.downloadUrl) + return Promise.resolve(undefined) } else if (releaseFile.endsWith('.aab')) { const res = await internalSharingUploadBundle(options, releaseFile) console.log(`${releaseFile} uploaded to Internal Sharing, download it with ${res.downloadUrl}`) - return Promise.resolve(res.downloadUrl) + return Promise.resolve(undefined) } else { core.setFailed(`${releaseFile} is invalid`) return Promise.reject(`${releaseFile} is invalid`) @@ -80,15 +83,14 @@ async function uploadRelease(appEdit: AppEdit, options: EditOptions, releaseFile return Promise.reject(`No track found for "${options.track}"`) } - let track: Track | undefined = undefined; if (releaseFile.endsWith('.apk')) { const apk = await uploadApk(appEdit, options, releaseFile); await uploadMappingFile(appEdit, apk.versionCode!, options); - track = await trackVersionCode(appEdit, options, apk.versionCode!) + return Promise.resolve(apk.versionCode) } else if (releaseFile.endsWith('.aab')) { const bundle = await uploadBundle(appEdit, options, releaseFile); await uploadMappingFile(appEdit, bundle.versionCode!, options); - track = await trackVersionCode(appEdit, options, bundle.versionCode!) + return Promise.resolve(bundle.versionCode) } else { core.setFailed(`${releaseFile} is invalid`) return Promise.reject(`${releaseFile} is invalid`) @@ -105,7 +107,7 @@ async function getAllTracks(appEdit: AppEdit, options: EditOptions): Promise { +async function trackVersionCode(appEdit: AppEdit, options: EditOptions, versionCodes: number[]): Promise { let status: string; if (options.userFraction != undefined) { status = 'inProgress' @@ -113,7 +115,7 @@ async function trackVersionCode(appEdit: AppEdit, options: EditOptions, versionC status = 'completed' } - core.debug(`Creating Track Release for Edit(${appEdit.id}) for Track(${options.track}) with a UserFraction(${options.userFraction}) and VersionCode(${versionCode})`); + core.debug(`Creating Track Release for Edit(${appEdit.id}) for Track(${options.track}) with a UserFraction(${options.userFraction}) and VersionCodes(${versionCodes})`); const res = await androidPublisher.edits.tracks .update({ auth: options.auth, @@ -127,9 +129,7 @@ async function trackVersionCode(appEdit: AppEdit, options: EditOptions, versionC userFraction: options.userFraction, status: status, releaseNotes: await readLocalizedReleaseNotes(options.whatsNewDir), - versionCodes: [ - versionCode.toString() - ] + versionCodes: versionCodes.map(x => x.toString()) } ] }