@neurospeech/jex 1.0.64 → 1.0.66
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ci/android/PlayStore.d.ts +20 -0
- package/dist/ci/android/PlayStore.d.ts.map +1 -0
- package/dist/ci/android/PlayStore.js +79 -0
- package/dist/ci/android/PlayStore.js.map +1 -0
- package/dist/ci/android/PlayStore.jsx +86 -0
- package/dist/ci/android/PlayStore.jsx.map +1 -0
- package/dist/ci/android/coreLogger.d.ts +7 -0
- package/dist/ci/android/coreLogger.d.ts.map +1 -0
- package/dist/ci/android/coreLogger.js +13 -0
- package/dist/ci/android/coreLogger.js.map +1 -0
- package/dist/ci/android/edits.d.ts +16 -0
- package/dist/ci/android/edits.d.ts.map +1 -0
- package/dist/ci/android/edits.js +332 -0
- package/dist/ci/android/edits.js.map +1 -0
- package/dist/ci/android/input-validation.d.ts +5 -0
- package/dist/ci/android/input-validation.d.ts.map +1 -0
- package/dist/ci/android/input-validation.js +53 -0
- package/dist/ci/android/input-validation.js.map +1 -0
- package/dist/ci/android/whatsnew.d.ts +4 -0
- package/dist/ci/android/whatsnew.d.ts.map +1 -0
- package/dist/ci/android/whatsnew.js +33 -0
- package/dist/ci/android/whatsnew.js.map +1 -0
- package/dist/core/spawnPromise.js +1 -1
- package/dist/core/spawnPromise.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +8 -3
- package/src/ci/android/PlayStore.tsx +127 -0
- package/src/ci/android/coreLogger.ts +13 -0
- package/src/ci/android/edits.ts +415 -0
- package/src/ci/android/input-validation.ts +56 -0
- package/src/ci/android/whatsnew.ts +41 -0
- package/src/core/spawnPromise.ts +1 -1
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export declare const PlayStore: {
|
|
2
|
+
Upload({ packageName, releaseFiles, releaseFile, track, status, serviceAccountJson, serviceAccountJsonRaw, releaseName, inAppUpdatePriority, userFraction, whatsNewDir, mappingFile, debugSymbols, changesNotSentForReview, existingEditId, }: {
|
|
3
|
+
packageName: any;
|
|
4
|
+
releaseFiles: any;
|
|
5
|
+
releaseFile: any;
|
|
6
|
+
track?: string;
|
|
7
|
+
status?: string;
|
|
8
|
+
serviceAccountJson?: any;
|
|
9
|
+
serviceAccountJsonRaw?: any;
|
|
10
|
+
releaseName?: any;
|
|
11
|
+
inAppUpdatePriority?: any;
|
|
12
|
+
userFraction?: any;
|
|
13
|
+
whatsNewDir?: any;
|
|
14
|
+
mappingFile?: any;
|
|
15
|
+
debugSymbols?: any;
|
|
16
|
+
changesNotSentForReview?: any;
|
|
17
|
+
existingEditId?: any;
|
|
18
|
+
}): Promise<void>;
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=PlayStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlayStore.d.ts","sourceRoot":"","sources":["../../../src/ci/android/PlayStore.tsx"],"names":[],"mappings":"AAMA,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;CAkGrB,CAAC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import XNode from "@neurospeech/jex/dist/core/XNode.js";
|
|
2
|
+
import core from "./coreLogger.js";
|
|
3
|
+
import { runUpload } from "./edits.js";
|
|
4
|
+
import fs from "fs";
|
|
5
|
+
import { validateInAppUpdatePriority, validateReleaseFiles, validateStatus, validateUserFraction } from "./input-validation.js";
|
|
6
|
+
import { unlink, writeFile } from 'fs/promises';
|
|
7
|
+
import pTimeout from 'p-timeout';
|
|
8
|
+
export const PlayStore = {
|
|
9
|
+
async Upload({
|
|
10
|
+
packageName,
|
|
11
|
+
releaseFiles,
|
|
12
|
+
releaseFile,
|
|
13
|
+
track = "beta",
|
|
14
|
+
status = "draft",
|
|
15
|
+
serviceAccountJson = void 0,
|
|
16
|
+
serviceAccountJsonRaw = void 0,
|
|
17
|
+
releaseName = void 0,
|
|
18
|
+
inAppUpdatePriority = void 0,
|
|
19
|
+
userFraction = void 0,
|
|
20
|
+
whatsNewDir = void 0,
|
|
21
|
+
mappingFile = void 0,
|
|
22
|
+
debugSymbols = void 0,
|
|
23
|
+
changesNotSentForReview = void 0,
|
|
24
|
+
existingEditId = void 0
|
|
25
|
+
}) {
|
|
26
|
+
try {
|
|
27
|
+
await validateServiceAccountJson(serviceAccountJsonRaw, serviceAccountJson);
|
|
28
|
+
let userFractionFloat;
|
|
29
|
+
if (userFraction) {
|
|
30
|
+
userFractionFloat = parseFloat(userFraction);
|
|
31
|
+
} else {
|
|
32
|
+
userFractionFloat = undefined;
|
|
33
|
+
}
|
|
34
|
+
await validateUserFraction(userFractionFloat);
|
|
35
|
+
await validateStatus(status, userFractionFloat != undefined && !isNaN(userFractionFloat));
|
|
36
|
+
let inAppUpdatePriorityInt;
|
|
37
|
+
if (inAppUpdatePriority) {
|
|
38
|
+
inAppUpdatePriorityInt = parseInt(inAppUpdatePriority);
|
|
39
|
+
} else {
|
|
40
|
+
inAppUpdatePriorityInt = undefined;
|
|
41
|
+
}
|
|
42
|
+
await validateInAppUpdatePriority(inAppUpdatePriorityInt);
|
|
43
|
+
if (releaseFile) {
|
|
44
|
+
core.warning(`WARNING!! 'releaseFile' is deprecated and will be removed in a future release. Please migrate to 'releaseFiles'`);
|
|
45
|
+
}
|
|
46
|
+
const validatedReleaseFiles = await validateReleaseFiles(releaseFiles ?? [releaseFile]);
|
|
47
|
+
if (whatsNewDir != undefined && whatsNewDir.length > 0 && !fs.existsSync(whatsNewDir)) {
|
|
48
|
+
core.warning(`Unable to find 'whatsnew' directory @ ${whatsNewDir}`);
|
|
49
|
+
}
|
|
50
|
+
if (mappingFile != undefined && mappingFile.length > 0 && !fs.existsSync(mappingFile)) {
|
|
51
|
+
core.warning(`Unable to find 'mappingFile' @ ${mappingFile}`);
|
|
52
|
+
}
|
|
53
|
+
if (debugSymbols != undefined && debugSymbols.length > 0 && !fs.existsSync(debugSymbols)) {
|
|
54
|
+
core.warning(`Unable to find 'debugSymbols' @ ${debugSymbols}`);
|
|
55
|
+
}
|
|
56
|
+
await pTimeout(runUpload(packageName, track, inAppUpdatePriorityInt, userFractionFloat, whatsNewDir, mappingFile, debugSymbols, releaseName, changesNotSentForReview, existingEditId, status, validatedReleaseFiles), {
|
|
57
|
+
milliseconds: 3.6e+6
|
|
58
|
+
});
|
|
59
|
+
} finally {
|
|
60
|
+
if (serviceAccountJsonRaw) {
|
|
61
|
+
core.debug('Cleaning up service account json file');
|
|
62
|
+
await unlink('./serviceAccountJson.json');
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
async function validateServiceAccountJson(serviceAccountJsonRaw, serviceAccountJson) {
|
|
68
|
+
if (serviceAccountJson && serviceAccountJsonRaw) {
|
|
69
|
+
core.warning('Both \'serviceAccountJsonPlainText\' and \'serviceAccountJson\' were provided! \'serviceAccountJson\' will be ignored.');
|
|
70
|
+
}
|
|
71
|
+
if (serviceAccountJsonRaw) {
|
|
72
|
+
const serviceAccountFile = "./serviceAccountJson.json";
|
|
73
|
+
await writeFile(serviceAccountFile, serviceAccountJsonRaw, {
|
|
74
|
+
encoding: 'utf8'
|
|
75
|
+
});
|
|
76
|
+
} else if (serviceAccountJson) {} else {
|
|
77
|
+
return Promise.reject("You must provide one of 'serviceAccountJsonPlainText' or 'serviceAccountJson' to use this action");
|
|
78
|
+
}
|
|
79
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["XNode","core","runUpload","fs","validateInAppUpdatePriority","validateReleaseFiles","validateStatus","validateUserFraction","unlink","writeFile","pTimeout","PlayStore","Upload","packageName","releaseFiles","releaseFile","track","status","serviceAccountJson","serviceAccountJsonRaw","releaseName","inAppUpdatePriority","userFraction","whatsNewDir","mappingFile","debugSymbols","changesNotSentForReview","existingEditId","validateServiceAccountJson","userFractionFloat","parseFloat","undefined","isNaN","inAppUpdatePriorityInt","parseInt","warning","validatedReleaseFiles","length","existsSync","milliseconds","debug","serviceAccountFile","encoding","Promise","reject"],"sources":["unknown"],"sourcesContent":["import XNode from \"@neurospeech/jex/dist/core/XNode.js\";import core from \"./coreLogger.js\";\nimport { runUpload } from \"./edits.js\";\nimport fs from \"fs\";\nimport { validateInAppUpdatePriority, validateReleaseFiles, validateStatus, validateUserFraction } from \"./input-validation.js\";\nimport { unlink, writeFile } from 'fs/promises';\nimport pTimeout from 'p-timeout';\nexport const PlayStore = {\n async Upload({ packageName, releaseFiles, releaseFile, track = \"beta\", status = \"draft\", serviceAccountJson = void 0, serviceAccountJsonRaw = void 0, releaseName = void 0, inAppUpdatePriority = void 0, userFraction = void 0, whatsNewDir = void 0, mappingFile = void 0, debugSymbols = void 0, changesNotSentForReview = void 0, existingEditId = void 0, }) {\n try {\n await validateServiceAccountJson(serviceAccountJsonRaw, serviceAccountJson);\n // Validate user fraction\n let userFractionFloat;\n if (userFraction) {\n userFractionFloat = parseFloat(userFraction);\n }\n else {\n userFractionFloat = undefined;\n }\n await validateUserFraction(userFractionFloat);\n // Validate release status\n await validateStatus(status, userFractionFloat != undefined && !isNaN(userFractionFloat));\n // Validate the inAppUpdatePriority to be a valid number in within [0, 5]\n let inAppUpdatePriorityInt;\n if (inAppUpdatePriority) {\n inAppUpdatePriorityInt = parseInt(inAppUpdatePriority);\n }\n else {\n inAppUpdatePriorityInt = undefined;\n }\n await validateInAppUpdatePriority(inAppUpdatePriorityInt);\n // Check release files while maintaining backward compatibility\n if (releaseFile) {\n core.warning(`WARNING!! 'releaseFile' is deprecated and will be removed in a future release. Please migrate to 'releaseFiles'`);\n }\n const validatedReleaseFiles = await validateReleaseFiles(releaseFiles ?? [releaseFile]);\n if (whatsNewDir != undefined && whatsNewDir.length > 0 && !fs.existsSync(whatsNewDir)) {\n core.warning(`Unable to find 'whatsnew' directory @ ${whatsNewDir}`);\n }\n if (mappingFile != undefined && mappingFile.length > 0 && !fs.existsSync(mappingFile)) {\n core.warning(`Unable to find 'mappingFile' @ ${mappingFile}`);\n }\n if (debugSymbols != undefined && debugSymbols.length > 0 && !fs.existsSync(debugSymbols)) {\n core.warning(`Unable to find 'debugSymbols' @ ${debugSymbols}`);\n }\n await pTimeout(runUpload(packageName, track, inAppUpdatePriorityInt, userFractionFloat, whatsNewDir, mappingFile, debugSymbols, releaseName, changesNotSentForReview, existingEditId, status, validatedReleaseFiles), {\n milliseconds: 3.6e+6\n });\n // } catch (error: unknown) {\n // if (error instanceof Error) {\n // core.setFailed(error.message)\n // } else {\n // core.setFailed('Unknown error occurred.')\n // }\n }\n finally {\n if (serviceAccountJsonRaw) {\n // Cleanup our auth file that we created.\n core.debug('Cleaning up service account json file');\n await unlink('./serviceAccountJson.json');\n }\n }\n }\n};\nasync function validateServiceAccountJson(serviceAccountJsonRaw, serviceAccountJson) {\n if (serviceAccountJson && serviceAccountJsonRaw) {\n // If the user provided both, print a warning one will be ignored\n core.warning('Both \\'serviceAccountJsonPlainText\\' and \\'serviceAccountJson\\' were provided! \\'serviceAccountJson\\' will be ignored.');\n }\n if (serviceAccountJsonRaw) {\n // If the user has provided the raw plain text, then write to file and set appropriate env variable\n const serviceAccountFile = \"./serviceAccountJson.json\";\n await writeFile(serviceAccountFile, serviceAccountJsonRaw, {\n encoding: 'utf8'\n });\n // core.exportVariable(\"GOOGLE_APPLICATION_CREDENTIALS\", serviceAccountFile)\n }\n else if (serviceAccountJson) {\n // If the user has provided the json path, then set appropriate env variable\n // core.exportVariable(\"GOOGLE_APPLICATION_CREDENTIALS\", serviceAccountJson)\n }\n else {\n // If the user provided neither, fail and exit\n return Promise.reject(\"You must provide one of 'serviceAccountJsonPlainText' or 'serviceAccountJson' to use this action\");\n }\n}\n//# sourceMappingURL=PlayStore.jsx.map"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import core from "./coreLogger.js";
|
|
2
|
+
import { runUpload } from "./edits.js";
|
|
3
|
+
import fs from "fs";
|
|
4
|
+
import { validateInAppUpdatePriority, validateReleaseFiles, validateStatus, validateUserFraction } from "./input-validation.js";
|
|
5
|
+
import { unlink, writeFile } from 'fs/promises';
|
|
6
|
+
import pTimeout from 'p-timeout';
|
|
7
|
+
export const PlayStore = {
|
|
8
|
+
async Upload({ packageName, releaseFiles, releaseFile, track = "beta", status = "draft", serviceAccountJson = void 0, serviceAccountJsonRaw = void 0, releaseName = void 0, inAppUpdatePriority = void 0, userFraction = void 0, whatsNewDir = void 0, mappingFile = void 0, debugSymbols = void 0, changesNotSentForReview = void 0, existingEditId = void 0, }) {
|
|
9
|
+
try {
|
|
10
|
+
await validateServiceAccountJson(serviceAccountJsonRaw, serviceAccountJson);
|
|
11
|
+
// Validate user fraction
|
|
12
|
+
let userFractionFloat;
|
|
13
|
+
if (userFraction) {
|
|
14
|
+
userFractionFloat = parseFloat(userFraction);
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
userFractionFloat = undefined;
|
|
18
|
+
}
|
|
19
|
+
await validateUserFraction(userFractionFloat);
|
|
20
|
+
// Validate release status
|
|
21
|
+
await validateStatus(status, userFractionFloat != undefined && !isNaN(userFractionFloat));
|
|
22
|
+
// Validate the inAppUpdatePriority to be a valid number in within [0, 5]
|
|
23
|
+
let inAppUpdatePriorityInt;
|
|
24
|
+
if (inAppUpdatePriority) {
|
|
25
|
+
inAppUpdatePriorityInt = parseInt(inAppUpdatePriority);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
inAppUpdatePriorityInt = undefined;
|
|
29
|
+
}
|
|
30
|
+
await validateInAppUpdatePriority(inAppUpdatePriorityInt);
|
|
31
|
+
// Check release files while maintaining backward compatibility
|
|
32
|
+
if (releaseFile) {
|
|
33
|
+
core.warning(`WARNING!! 'releaseFile' is deprecated and will be removed in a future release. Please migrate to 'releaseFiles'`);
|
|
34
|
+
}
|
|
35
|
+
const validatedReleaseFiles = await validateReleaseFiles(releaseFiles ?? [releaseFile]);
|
|
36
|
+
if (whatsNewDir != undefined && whatsNewDir.length > 0 && !fs.existsSync(whatsNewDir)) {
|
|
37
|
+
core.warning(`Unable to find 'whatsnew' directory @ ${whatsNewDir}`);
|
|
38
|
+
}
|
|
39
|
+
if (mappingFile != undefined && mappingFile.length > 0 && !fs.existsSync(mappingFile)) {
|
|
40
|
+
core.warning(`Unable to find 'mappingFile' @ ${mappingFile}`);
|
|
41
|
+
}
|
|
42
|
+
if (debugSymbols != undefined && debugSymbols.length > 0 && !fs.existsSync(debugSymbols)) {
|
|
43
|
+
core.warning(`Unable to find 'debugSymbols' @ ${debugSymbols}`);
|
|
44
|
+
}
|
|
45
|
+
await pTimeout(runUpload(packageName, track, inAppUpdatePriorityInt, userFractionFloat, whatsNewDir, mappingFile, debugSymbols, releaseName, changesNotSentForReview, existingEditId, status, validatedReleaseFiles), {
|
|
46
|
+
milliseconds: 3.6e+6
|
|
47
|
+
});
|
|
48
|
+
// } catch (error: unknown) {
|
|
49
|
+
// if (error instanceof Error) {
|
|
50
|
+
// core.setFailed(error.message)
|
|
51
|
+
// } else {
|
|
52
|
+
// core.setFailed('Unknown error occurred.')
|
|
53
|
+
// }
|
|
54
|
+
}
|
|
55
|
+
finally {
|
|
56
|
+
if (serviceAccountJsonRaw) {
|
|
57
|
+
// Cleanup our auth file that we created.
|
|
58
|
+
core.debug('Cleaning up service account json file');
|
|
59
|
+
await unlink('./serviceAccountJson.json');
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
async function validateServiceAccountJson(serviceAccountJsonRaw, serviceAccountJson) {
|
|
65
|
+
if (serviceAccountJson && serviceAccountJsonRaw) {
|
|
66
|
+
// If the user provided both, print a warning one will be ignored
|
|
67
|
+
core.warning('Both \'serviceAccountJsonPlainText\' and \'serviceAccountJson\' were provided! \'serviceAccountJson\' will be ignored.');
|
|
68
|
+
}
|
|
69
|
+
if (serviceAccountJsonRaw) {
|
|
70
|
+
// If the user has provided the raw plain text, then write to file and set appropriate env variable
|
|
71
|
+
const serviceAccountFile = "./serviceAccountJson.json";
|
|
72
|
+
await writeFile(serviceAccountFile, serviceAccountJsonRaw, {
|
|
73
|
+
encoding: 'utf8'
|
|
74
|
+
});
|
|
75
|
+
// core.exportVariable("GOOGLE_APPLICATION_CREDENTIALS", serviceAccountFile)
|
|
76
|
+
}
|
|
77
|
+
else if (serviceAccountJson) {
|
|
78
|
+
// If the user has provided the json path, then set appropriate env variable
|
|
79
|
+
// core.exportVariable("GOOGLE_APPLICATION_CREDENTIALS", serviceAccountJson)
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
// If the user provided neither, fail and exit
|
|
83
|
+
return Promise.reject("You must provide one of 'serviceAccountJsonPlainText' or 'serviceAccountJson' to use this action");
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=PlayStore.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlayStore.jsx","sourceRoot":"","sources":["../../../src/ci/android/PlayStore.tsx"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,iBAAiB,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,2BAA2B,EAAE,oBAAoB,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAChI,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,QAAQ,MAAM,WAAW,CAAA;AAChC,MAAM,CAAC,MAAM,SAAS,GAAG;IAErB,KAAK,CAAC,MAAM,CAAC,EACT,WAAW,EACX,YAAY,EACZ,WAAW,EACX,KAAK,GAAG,MAAM,EACd,MAAM,GAAG,OAAO,EAChB,kBAAkB,GAAG,KAAK,CAAC,EAC3B,qBAAqB,GAAG,KAAK,CAAC,EAC9B,WAAW,GAAG,KAAK,CAAC,EACpB,mBAAmB,GAAG,KAAK,CAAC,EAC5B,YAAY,GAAG,KAAK,CAAC,EACrB,WAAW,GAAG,KAAK,CAAC,EACpB,WAAW,GAAG,KAAK,CAAC,EACpB,YAAY,GAAG,KAAK,CAAC,EACrB,uBAAuB,GAAG,KAAK,CAAC,EAChC,cAAc,GAAG,KAAK,CAAC,GAC1B;QAEG,IAAI,CAAC;YAED,MAAM,0BAA0B,CAAC,qBAAqB,EAAE,kBAAkB,CAAC,CAAA;YAE3E,yBAAyB;YACzB,IAAI,iBAAqC,CAAA;YACzC,IAAI,YAAY,EAAE,CAAC;gBACf,iBAAiB,GAAG,UAAU,CAAC,YAAY,CAAC,CAAA;YAChD,CAAC;iBAAM,CAAC;gBACJ,iBAAiB,GAAG,SAAS,CAAA;YACjC,CAAC;YACD,MAAM,oBAAoB,CAAC,iBAAiB,CAAC,CAAA;YAE7C,0BAA0B;YAC1B,MAAM,cAAc,CAAC,MAAM,EAAE,iBAAiB,IAAI,SAAS,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAA;YAEzF,yEAAyE;YACzE,IAAI,sBAA0C,CAAA;YAC9C,IAAI,mBAAmB,EAAE,CAAC;gBACtB,sBAAsB,GAAG,QAAQ,CAAC,mBAAmB,CAAC,CAAA;YAC1D,CAAC;iBAAM,CAAC;gBACJ,sBAAsB,GAAG,SAAS,CAAA;YACtC,CAAC;YACD,MAAM,2BAA2B,CAAC,sBAAsB,CAAC,CAAA;YAEzD,+DAA+D;YAC/D,IAAI,WAAW,EAAE,CAAC;gBACd,IAAI,CAAC,OAAO,CAAC,iHAAiH,CAAC,CAAA;YACnI,CAAC;YACD,MAAM,qBAAqB,GAAa,MAAM,oBAAoB,CAAC,YAAY,IAAI,CAAC,WAAW,CAAC,CAAC,CAAA;YAEjG,IAAI,WAAW,IAAI,SAAS,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBACpF,IAAI,CAAC,OAAO,CAAC,yCAAyC,WAAW,EAAE,CAAC,CAAC;YACzE,CAAC;YAED,IAAI,WAAW,IAAI,SAAS,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBACpF,IAAI,CAAC,OAAO,CAAC,kCAAkC,WAAW,EAAE,CAAC,CAAC;YAClE,CAAC;YAED,IAAI,YAAY,IAAI,SAAS,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;gBACvF,IAAI,CAAC,OAAO,CAAC,mCAAmC,YAAY,EAAE,CAAC,CAAC;YACpE,CAAC;YAED,MAAM,QAAQ,CACV,SAAS,CACL,WAAW,EACX,KAAK,EACL,sBAAsB,EACtB,iBAAiB,EACjB,WAAW,EACX,WAAW,EACX,YAAY,EACZ,WAAW,EACX,uBAAuB,EACvB,cAAc,EACd,MAAM,EACN,qBAAqB,CACxB,EACD;gBACI,YAAY,EAAE,MAAM;aACvB,CACJ,CAAA;YACL,6BAA6B;YAC7B,oCAAoC;YACpC,wCAAwC;YACxC,eAAe;YACf,oDAAoD;YACpD,QAAQ;QACR,CAAC;gBAAS,CAAC;YACP,IAAI,qBAAqB,EAAE,CAAC;gBACxB,yCAAyC;gBACzC,IAAI,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;gBACpD,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAC;YAC9C,CAAC;QACL,CAAC;IAEL,CAAC;CAEJ,CAAC;AAEF,KAAK,UAAU,0BAA0B,CAAC,qBAAyC,EAAE,kBAAsC;IACvH,IAAI,kBAAkB,IAAI,qBAAqB,EAAE,CAAC;QAC9C,iEAAiE;QACjE,IAAI,CAAC,OAAO,CAAC,wHAAwH,CAAC,CAAA;IAC1I,CAAC;IAED,IAAI,qBAAqB,EAAE,CAAC;QACxB,mGAAmG;QACnG,MAAM,kBAAkB,GAAG,2BAA2B,CAAC;QACvD,MAAM,SAAS,CAAC,kBAAkB,EAAE,qBAAqB,EAAE;YACvD,QAAQ,EAAE,MAAM;SACnB,CAAC,CAAC;QACH,4EAA4E;IAChF,CAAC;SAAM,IAAI,kBAAkB,EAAE,CAAC;QAC5B,4EAA4E;QAC5E,4EAA4E;IAChF,CAAC;SAAM,CAAC;QACJ,8CAA8C;QAC9C,OAAO,OAAO,CAAC,MAAM,CAAC,kGAAkG,CAAC,CAAA;IAC7H,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coreLogger.d.ts","sourceRoot":"","sources":["../../../src/ci/android/coreLogger.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,UAAU;;;;CAUf,CAAC;AAEF,eAAe,UAAU,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coreLogger.js","sourceRoot":"","sources":["../../../src/ci/android/coreLogger.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,GAAG;IACf,KAAK,CAAC,GAAG,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACtB,CAAC;IACD,IAAI,CAAC,GAAG,CAAC;QACL,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACtB,CAAC;IACD,OAAO,CAAC,GAAG,CAAC;QACR,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,CAAC;CACJ,CAAC;AAEF,eAAe,UAAU,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface EditOptions {
|
|
2
|
+
auth: any;
|
|
3
|
+
applicationId: string;
|
|
4
|
+
track: string;
|
|
5
|
+
inAppUpdatePriority: number;
|
|
6
|
+
userFraction?: number;
|
|
7
|
+
whatsNewDir?: string;
|
|
8
|
+
mappingFile?: string;
|
|
9
|
+
debugSymbols?: string;
|
|
10
|
+
name?: string;
|
|
11
|
+
status: string;
|
|
12
|
+
changesNotSentForReview?: boolean;
|
|
13
|
+
existingEditId?: string;
|
|
14
|
+
}
|
|
15
|
+
export declare function runUpload(packageName: string, track: string, inAppUpdatePriority: number | undefined, userFraction: number | undefined, whatsNewDir: string | undefined, mappingFile: string | undefined, debugSymbols: string | undefined, name: string | undefined, changesNotSentForReview: boolean, existingEditId: string | undefined, status: string, validatedReleaseFiles: string[]): Promise<void>;
|
|
16
|
+
//# sourceMappingURL=edits.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edits.d.ts","sourceRoot":"","sources":["../../../src/ci/android/edits.ts"],"names":[],"mappings":"AAmBA,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,GAAG,CAAC;IACV,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,mBAAmB,EAAE,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,wBAAsB,SAAS,CAC3B,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,mBAAmB,EAAE,MAAM,GAAG,SAAS,EACvC,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,uBAAuB,EAAE,OAAO,EAChC,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,MAAM,EAAE,MAAM,EACd,qBAAqB,EAAE,MAAM,EAAE,iBAwBlC"}
|
|
@@ -0,0 +1,332 @@
|
|
|
1
|
+
import { createRequire as _createRequire } from "module";
|
|
2
|
+
const __require = _createRequire(import.meta.url);
|
|
3
|
+
import fs from "fs";
|
|
4
|
+
import { readFileSync, lstatSync } from "fs";
|
|
5
|
+
import core from "./coreLogger.js";
|
|
6
|
+
import JSZip from 'jszip';
|
|
7
|
+
const path = __require("path");
|
|
8
|
+
import { Readable } from 'stream';
|
|
9
|
+
import google from '@googleapis/androidpublisher';
|
|
10
|
+
import { readLocalizedReleaseNotes } from "./whatsnew.js";
|
|
11
|
+
const androidPublisher = google.androidpublisher('v3');
|
|
12
|
+
export async function runUpload(packageName, track, inAppUpdatePriority, userFraction, whatsNewDir, mappingFile, debugSymbols, name, changesNotSentForReview, existingEditId, status, validatedReleaseFiles) {
|
|
13
|
+
const auth = new google.auth.GoogleAuth({
|
|
14
|
+
scopes: ['https://www.googleapis.com/auth/androidpublisher']
|
|
15
|
+
});
|
|
16
|
+
const result = await uploadToPlayStore({
|
|
17
|
+
auth: auth,
|
|
18
|
+
applicationId: packageName,
|
|
19
|
+
track: track,
|
|
20
|
+
inAppUpdatePriority: inAppUpdatePriority || 0,
|
|
21
|
+
userFraction: userFraction,
|
|
22
|
+
whatsNewDir: whatsNewDir,
|
|
23
|
+
mappingFile: mappingFile,
|
|
24
|
+
debugSymbols: debugSymbols,
|
|
25
|
+
name: name,
|
|
26
|
+
changesNotSentForReview: changesNotSentForReview,
|
|
27
|
+
existingEditId: existingEditId,
|
|
28
|
+
status: status
|
|
29
|
+
}, validatedReleaseFiles);
|
|
30
|
+
if (result) {
|
|
31
|
+
console.log(`Finished uploading to the Play Store: ${result}`);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
async function uploadToPlayStore(options, releaseFiles) {
|
|
35
|
+
const internalSharingDownloadUrls = [];
|
|
36
|
+
// Check the 'track' for 'internalsharing', if so switch to a non-track api
|
|
37
|
+
if (options.track === 'internalsharing') {
|
|
38
|
+
core.debug("Track is Internal app sharing, switch to special upload api");
|
|
39
|
+
for (const releaseFile of releaseFiles) {
|
|
40
|
+
core.debug(`Uploading ${releaseFile}`);
|
|
41
|
+
const url = await uploadInternalSharingRelease(options, releaseFile);
|
|
42
|
+
internalSharingDownloadUrls.push(url);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
// Create a new Edit
|
|
47
|
+
const appEditId = await getOrCreateEdit(options);
|
|
48
|
+
// Validate the given track
|
|
49
|
+
await validateSelectedTrack(appEditId, options);
|
|
50
|
+
// Upload artifacts to Google Play, and store their version codes
|
|
51
|
+
const versionCodes = await uploadReleaseFiles(appEditId, options, releaseFiles);
|
|
52
|
+
// Infer the download URL from the version codes
|
|
53
|
+
for (const versionCode of versionCodes) {
|
|
54
|
+
const url = inferInternalSharingDownloadUrl(options.applicationId, versionCode);
|
|
55
|
+
// core.setOutput("internalSharingDownloadUrl", url);
|
|
56
|
+
// core.exportVariable("INTERNAL_SHARING_DOWNLOAD_URL", url);
|
|
57
|
+
core.info(`SHARING_URL: ${url}`);
|
|
58
|
+
internalSharingDownloadUrls.push(url);
|
|
59
|
+
}
|
|
60
|
+
// Add the uploaded artifacts to the Edit track
|
|
61
|
+
await addReleasesToTrack(appEditId, options, versionCodes);
|
|
62
|
+
// Commit the pending Edit
|
|
63
|
+
core.info(`Committing the Edit`);
|
|
64
|
+
const res = await androidPublisher.edits.commit({
|
|
65
|
+
auth: options.auth,
|
|
66
|
+
editId: appEditId,
|
|
67
|
+
packageName: options.applicationId,
|
|
68
|
+
changesNotSentForReview: options.changesNotSentForReview
|
|
69
|
+
});
|
|
70
|
+
// Simple check to see whether commit was successful
|
|
71
|
+
if (res.data.id) {
|
|
72
|
+
core.info(`Successfully committed ${res.data.id}`);
|
|
73
|
+
return res.data.id;
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
// core.setFailed(`Error ${res.status}: ${res.statusText}`);
|
|
77
|
+
core.debug(`${res.status}: ${res.statusText}`);
|
|
78
|
+
return Promise.reject(res.status);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
// core.setOutput("internalSharingDownloadUrls", internalSharingDownloadUrls);
|
|
82
|
+
// core.exportVariable("INTERNAL_SHARING_DOWNLOAD_URLS", internalSharingDownloadUrls);
|
|
83
|
+
}
|
|
84
|
+
async function uploadInternalSharingRelease(options, releaseFile) {
|
|
85
|
+
let res;
|
|
86
|
+
if (releaseFile.endsWith('.apk')) {
|
|
87
|
+
res = await internalSharingUploadApk(options, releaseFile);
|
|
88
|
+
}
|
|
89
|
+
else if (releaseFile.endsWith('.aab')) {
|
|
90
|
+
res = await internalSharingUploadBundle(options, releaseFile);
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
throw Error(`${releaseFile} is invalid (missing or invalid file extension).`);
|
|
94
|
+
}
|
|
95
|
+
if (!res.downloadUrl)
|
|
96
|
+
throw Error('Uploaded file has no download URL.');
|
|
97
|
+
// core.setOutput("internalSharingDownloadUrl", res.downloadUrl);
|
|
98
|
+
// core.exportVariable("INTERNAL_SHARING_DOWNLOAD_URL", res.downloadUrl);
|
|
99
|
+
console.log(`${releaseFile} uploaded to Internal Sharing, download it with ${res.downloadUrl}`);
|
|
100
|
+
return res.downloadUrl;
|
|
101
|
+
}
|
|
102
|
+
async function validateSelectedTrack(appEditId, options) {
|
|
103
|
+
core.info(`Validating track '${options.track}'`);
|
|
104
|
+
const res = await androidPublisher.edits.tracks.list({
|
|
105
|
+
auth: options.auth,
|
|
106
|
+
editId: appEditId,
|
|
107
|
+
packageName: options.applicationId
|
|
108
|
+
});
|
|
109
|
+
// If we didn't get status 200, i.e. success, propagate the error with valid text
|
|
110
|
+
if (res.status != 200) {
|
|
111
|
+
throw Error(res.statusText);
|
|
112
|
+
}
|
|
113
|
+
const allTracks = res.data.tracks;
|
|
114
|
+
// Check whether we actually have any tracks
|
|
115
|
+
if (!allTracks) {
|
|
116
|
+
throw Error('No tracks found, unable to validate track.');
|
|
117
|
+
}
|
|
118
|
+
// Check whether the track is valid
|
|
119
|
+
if (allTracks.find(value => value.track == options.track) == undefined) {
|
|
120
|
+
const allTrackNames = allTracks.map((track) => { return track.track; });
|
|
121
|
+
throw Error(`Track "${options.track}" could not be found. Available tracks are: ${allTrackNames.toString()}`);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
async function addReleasesToTrack(appEditId, options, versionCodes) {
|
|
125
|
+
const status = options.status;
|
|
126
|
+
core.debug(`Creating release for:`);
|
|
127
|
+
core.debug(`edit=${appEditId}`);
|
|
128
|
+
core.debug(`track=${options.track}`);
|
|
129
|
+
if (options.userFraction) {
|
|
130
|
+
core.debug(`userFraction=${options.userFraction}`);
|
|
131
|
+
}
|
|
132
|
+
core.debug(`status=${status}`);
|
|
133
|
+
core.debug(`versionCodes=${versionCodes.toString()}`);
|
|
134
|
+
const res = await androidPublisher.edits.tracks
|
|
135
|
+
.update({
|
|
136
|
+
auth: options.auth,
|
|
137
|
+
editId: appEditId,
|
|
138
|
+
packageName: options.applicationId,
|
|
139
|
+
track: options.track,
|
|
140
|
+
requestBody: {
|
|
141
|
+
track: options.track,
|
|
142
|
+
releases: [
|
|
143
|
+
{
|
|
144
|
+
name: options.name,
|
|
145
|
+
userFraction: options.userFraction,
|
|
146
|
+
status: status,
|
|
147
|
+
inAppUpdatePriority: options.inAppUpdatePriority,
|
|
148
|
+
releaseNotes: await readLocalizedReleaseNotes(options.whatsNewDir),
|
|
149
|
+
versionCodes: versionCodes.filter(x => x != 0).map(x => x.toString())
|
|
150
|
+
}
|
|
151
|
+
]
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
return res.data;
|
|
155
|
+
}
|
|
156
|
+
async function uploadMappingFile(appEditId, versionCode, options) {
|
|
157
|
+
if (options.mappingFile != undefined && options.mappingFile.length > 0) {
|
|
158
|
+
const mapping = readFileSync(options.mappingFile, 'utf-8');
|
|
159
|
+
if (mapping != undefined) {
|
|
160
|
+
core.debug(`[${appEditId}, versionCode=${versionCode}, packageName=${options.applicationId}]: Uploading Proguard mapping file @ ${options.mappingFile}`);
|
|
161
|
+
await androidPublisher.edits.deobfuscationfiles.upload({
|
|
162
|
+
auth: options.auth,
|
|
163
|
+
packageName: options.applicationId,
|
|
164
|
+
editId: appEditId,
|
|
165
|
+
apkVersionCode: versionCode,
|
|
166
|
+
deobfuscationFileType: 'proguard',
|
|
167
|
+
media: {
|
|
168
|
+
mimeType: 'application/octet-stream',
|
|
169
|
+
body: fs.createReadStream(options.mappingFile)
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
async function uploadDebugSymbolsFile(appEditId, versionCode, options) {
|
|
176
|
+
if (options.debugSymbols != undefined && options.debugSymbols.length > 0) {
|
|
177
|
+
const fileStat = lstatSync(options.debugSymbols);
|
|
178
|
+
let data = null;
|
|
179
|
+
if (fileStat.isDirectory()) {
|
|
180
|
+
data = await createDebugSymbolZipFile(options.debugSymbols);
|
|
181
|
+
}
|
|
182
|
+
if (data == null) {
|
|
183
|
+
data = readFileSync(options.debugSymbols);
|
|
184
|
+
}
|
|
185
|
+
if (data != null) {
|
|
186
|
+
core.debug(`[${appEditId}, versionCode=${versionCode}, packageName=${options.applicationId}]: Uploading Debug Symbols file @ ${options.debugSymbols}`);
|
|
187
|
+
await androidPublisher.edits.deobfuscationfiles.upload({
|
|
188
|
+
auth: options.auth,
|
|
189
|
+
packageName: options.applicationId,
|
|
190
|
+
editId: appEditId,
|
|
191
|
+
apkVersionCode: versionCode,
|
|
192
|
+
deobfuscationFileType: 'nativeCode',
|
|
193
|
+
media: {
|
|
194
|
+
mimeType: 'application/octet-stream',
|
|
195
|
+
body: Readable.from(data)
|
|
196
|
+
}
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
async function zipFileAddDirectory(root, dirPath, rootPath, isRootRoot) {
|
|
202
|
+
if (root == null)
|
|
203
|
+
return root;
|
|
204
|
+
const newRootPath = path.join(rootPath, dirPath);
|
|
205
|
+
const fileStat = lstatSync(newRootPath);
|
|
206
|
+
if (!fileStat.isDirectory()) {
|
|
207
|
+
const data = readFileSync(newRootPath);
|
|
208
|
+
root.file(dirPath, data);
|
|
209
|
+
return root;
|
|
210
|
+
}
|
|
211
|
+
const dir = fs.readdirSync(newRootPath);
|
|
212
|
+
const zipFolder = isRootRoot ? root : root.folder(dirPath);
|
|
213
|
+
for (let pathIndex = 0; pathIndex < dir.length; pathIndex++) {
|
|
214
|
+
const underPath = dir[pathIndex];
|
|
215
|
+
await zipFileAddDirectory(zipFolder, underPath, newRootPath, false);
|
|
216
|
+
}
|
|
217
|
+
return root;
|
|
218
|
+
}
|
|
219
|
+
async function createDebugSymbolZipFile(debugSymbolsPath) {
|
|
220
|
+
const zipFile = JSZip();
|
|
221
|
+
await zipFileAddDirectory(zipFile, ".", debugSymbolsPath, true);
|
|
222
|
+
return zipFile.generateAsync({ type: "nodebuffer" });
|
|
223
|
+
}
|
|
224
|
+
async function internalSharingUploadApk(options, apkReleaseFile) {
|
|
225
|
+
core.debug(`[packageName=${options.applicationId}]: Uploading Internal Sharing APK @ ${apkReleaseFile}`);
|
|
226
|
+
const res = await androidPublisher.internalappsharingartifacts.uploadapk({
|
|
227
|
+
auth: options.auth,
|
|
228
|
+
packageName: options.applicationId,
|
|
229
|
+
media: {
|
|
230
|
+
mimeType: 'application/vnd.android.package-archive',
|
|
231
|
+
body: fs.createReadStream(apkReleaseFile)
|
|
232
|
+
}
|
|
233
|
+
});
|
|
234
|
+
return res.data;
|
|
235
|
+
}
|
|
236
|
+
async function internalSharingUploadBundle(options, bundleReleaseFile) {
|
|
237
|
+
core.debug(`[packageName=${options.applicationId}]: Uploading Internal Sharing Bundle @ ${bundleReleaseFile}`);
|
|
238
|
+
const res = await androidPublisher.internalappsharingartifacts.uploadbundle({
|
|
239
|
+
auth: options.auth,
|
|
240
|
+
packageName: options.applicationId,
|
|
241
|
+
media: {
|
|
242
|
+
mimeType: 'application/octet-stream',
|
|
243
|
+
body: fs.createReadStream(bundleReleaseFile)
|
|
244
|
+
}
|
|
245
|
+
});
|
|
246
|
+
return res.data;
|
|
247
|
+
}
|
|
248
|
+
async function uploadApk(appEditId, options, apkReleaseFile) {
|
|
249
|
+
core.debug(`[${appEditId}, packageName=${options.applicationId}]: Uploading APK @ ${apkReleaseFile}`);
|
|
250
|
+
const res = await androidPublisher.edits.apks.upload({
|
|
251
|
+
auth: options.auth,
|
|
252
|
+
packageName: options.applicationId,
|
|
253
|
+
editId: appEditId,
|
|
254
|
+
media: {
|
|
255
|
+
mimeType: 'application/vnd.android.package-archive',
|
|
256
|
+
body: fs.createReadStream(apkReleaseFile)
|
|
257
|
+
}
|
|
258
|
+
});
|
|
259
|
+
return res.data;
|
|
260
|
+
}
|
|
261
|
+
async function uploadBundle(appEditId, options, bundleReleaseFile) {
|
|
262
|
+
core.debug(`[${appEditId}, packageName=${options.applicationId}]: Uploading App Bundle @ ${bundleReleaseFile}`);
|
|
263
|
+
const res = await androidPublisher.edits.bundles.upload({
|
|
264
|
+
auth: options.auth,
|
|
265
|
+
packageName: options.applicationId,
|
|
266
|
+
editId: appEditId,
|
|
267
|
+
media: {
|
|
268
|
+
mimeType: 'application/octet-stream',
|
|
269
|
+
body: fs.createReadStream(bundleReleaseFile)
|
|
270
|
+
}
|
|
271
|
+
});
|
|
272
|
+
return res.data;
|
|
273
|
+
}
|
|
274
|
+
async function getOrCreateEdit(options) {
|
|
275
|
+
// If we already have an ID, just return that
|
|
276
|
+
if (options.existingEditId) {
|
|
277
|
+
return options.existingEditId;
|
|
278
|
+
}
|
|
279
|
+
// Else attempt to create a new edit. This will throw if there is an issue
|
|
280
|
+
core.info(`Creating a new Edit for this release`);
|
|
281
|
+
const insertResult = await androidPublisher.edits.insert({
|
|
282
|
+
auth: options.auth,
|
|
283
|
+
packageName: options.applicationId
|
|
284
|
+
});
|
|
285
|
+
// If we didn't get status 200, i.e. success, propagate the error with valid text
|
|
286
|
+
if (insertResult.status != 200) {
|
|
287
|
+
throw Error(insertResult.statusText);
|
|
288
|
+
}
|
|
289
|
+
// If the result was successful but we have no ID, somethign went horribly wrong
|
|
290
|
+
if (!insertResult.data.id) {
|
|
291
|
+
throw Error('New edit has no ID, cannot continue.');
|
|
292
|
+
}
|
|
293
|
+
core.debug(`This new edit expires at ${String(insertResult.data.expiryTimeSeconds)}`);
|
|
294
|
+
// Return the new edit ID
|
|
295
|
+
return insertResult.data.id;
|
|
296
|
+
}
|
|
297
|
+
async function uploadReleaseFiles(appEditId, options, releaseFiles) {
|
|
298
|
+
const versionCodes = [];
|
|
299
|
+
// Upload all release files
|
|
300
|
+
for (const releaseFile of releaseFiles) {
|
|
301
|
+
core.info(`Uploading ${releaseFile}`);
|
|
302
|
+
let versionCode;
|
|
303
|
+
if (releaseFile.endsWith('.apk')) {
|
|
304
|
+
// Upload APK, or throw when something goes wrong
|
|
305
|
+
const apk = await uploadApk(appEditId, options, releaseFile);
|
|
306
|
+
if (!apk.versionCode)
|
|
307
|
+
throw Error('Failed to upload APK.');
|
|
308
|
+
versionCode = apk.versionCode;
|
|
309
|
+
}
|
|
310
|
+
else if (releaseFile.endsWith('.aab')) {
|
|
311
|
+
// Upload AAB, or throw when something goes wrong
|
|
312
|
+
const bundle = await uploadBundle(appEditId, options, releaseFile);
|
|
313
|
+
if (!bundle.versionCode)
|
|
314
|
+
throw Error('Failed to upload bundle.');
|
|
315
|
+
versionCode = bundle.versionCode;
|
|
316
|
+
}
|
|
317
|
+
else {
|
|
318
|
+
// Throw if file extension is not right
|
|
319
|
+
throw Error(`${releaseFile} is invalid.`);
|
|
320
|
+
}
|
|
321
|
+
// Upload version code
|
|
322
|
+
await uploadMappingFile(appEditId, versionCode, options);
|
|
323
|
+
await uploadDebugSymbolsFile(appEditId, versionCode, options);
|
|
324
|
+
versionCodes.push(versionCode);
|
|
325
|
+
}
|
|
326
|
+
core.info(`Successfully uploaded ${versionCodes.length} artifacts`);
|
|
327
|
+
return versionCodes;
|
|
328
|
+
}
|
|
329
|
+
function inferInternalSharingDownloadUrl(applicationId, versionCode) {
|
|
330
|
+
return `https://play.google.com/apps/test/${applicationId}/${versionCode}`;
|
|
331
|
+
}
|
|
332
|
+
//# sourceMappingURL=edits.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edits.js","sourceRoot":"","sources":["../../../src/ci/android/edits.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare function validateUserFraction(userFraction: number | undefined): Promise<void>;
|
|
2
|
+
export declare function validateStatus(status: string | undefined, hasUserFraction: boolean): Promise<void>;
|
|
3
|
+
export declare function validateInAppUpdatePriority(inAppUpdatePriority: number | undefined): Promise<void>;
|
|
4
|
+
export declare function validateReleaseFiles(releaseFiles: string[] | undefined): Promise<string[]>;
|
|
5
|
+
//# sourceMappingURL=input-validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input-validation.d.ts","sourceRoot":"","sources":["../../../src/ci/android/input-validation.ts"],"names":[],"mappings":"AAEA,wBAAsB,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAU1F;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,eAAe,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBxG;AAED,wBAAsB,2BAA2B,CAAC,mBAAmB,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAMxG;AAED,wBAAsB,oBAAoB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAUhG"}
|