7 Commits

Author SHA1 Message Date
Drew Heavner
3e0a7f808c Added checks to make sure the specified track exists
Added precondition checks to validate input files and paths to return more informative error messages as per #2
2019-12-11 23:40:19 -05:00
Drew Heavner
3fe51cca76 Fixing workflow 2019-12-04 10:34:36 -05:00
Drew Heavner
50592d62ad Fixing workflow 2019-12-04 10:32:05 -05:00
Drew Heavner
db7def7467 Fixing workflow 2019-12-04 10:30:37 -05:00
Drew Heavner
fc9e3b4597 Pruned node modules
tweaking workflow
2019-12-04 10:28:59 -05:00
Drew Heavner
c328f3aa5c Tweaking workflow 2019-12-04 10:16:22 -05:00
Drew Heavner
575e057922 Tweaking workflow 2019-12-04 10:14:12 -05:00
9 changed files with 107 additions and 35 deletions

View File

@@ -11,14 +11,8 @@ jobs:
steps:
- uses: actions/checkout@v1
- name: Build Action
run: |
npm ci
npm run build
- name: Update v1 Tag
run: |
npm prune --production
git commit -m "Pruning Node Modules, Preparing for release"
git tag -fa v1 -m "Update v1 tag"
git push origin --force --tags
uses: hole19/git-tag-action@master
env:
TAG: v1
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -20,10 +20,13 @@ inputs:
required: true
userFraction:
description: 'Portion of users who should get the staged version of the app. Accepts values between 0.0 and 1.0 (exclusive-exclusive).'
required: false
whatsNewDirectory:
description: 'The directory of localized whats new files'
required: false
mappingFile:
description: 'The mapping.txt file used to de-obfuscate your stack traces from crash reports'
required: false
runs:
using: 'node12'
main: 'lib/main.js'

View File

@@ -26,6 +26,11 @@ function uploadRelease(options, releaseFile) {
auth: options.auth,
packageName: options.applicationId
});
const allTracks = yield getAllTracks(appEdit.data, options);
if (allTracks == undefined || allTracks.find(value => value.track == options.track) == undefined) {
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.data, options, releaseFile);
@@ -51,6 +56,16 @@ function uploadRelease(options, releaseFile) {
});
}
exports.uploadRelease = uploadRelease;
function getAllTracks(appEdit, options) {
return __awaiter(this, void 0, void 0, function* () {
const res = yield androidPublisher.edits.tracks.list({
auth: options.auth,
editId: appEdit.id,
packageName: options.applicationId
});
return res.data.tracks;
});
}
function trackVersionCode(appEdit, options, versionCode) {
return __awaiter(this, void 0, void 0, function* () {
let status;

View File

@@ -16,6 +16,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
};
Object.defineProperty(exports, "__esModule", { value: true });
const core = __importStar(require("@actions/core"));
const fs = __importStar(require("fs"));
const edits_1 = require("./edits");
const { google } = require('googleapis');
const auth = new google.auth.GoogleAuth({
@@ -42,6 +43,19 @@ function run() {
else {
userFractionFloat = undefined;
}
// Check release file
if (!fs.existsSync(releaseFile)) {
core.setFailed(`Unable to find release file @ ${releaseFile}`);
return;
}
if (whatsNewDir != undefined && !fs.existsSync(whatsNewDir)) {
core.setFailed(`Unable to find 'whatsnew' directory @ ${whatsNewDir}`);
return;
}
if (mappingFile != undefined && !fs.existsSync(mappingFile)) {
core.setFailed(`Unable to find 'mappingFile' @ ${mappingFile}`);
return;
}
// Insure that the api can find our service account credentials
core.exportVariable("GOOGLE_APPLICATION_CREDENTIALS", serviceAccountJson);
const authClient = yield auth.getClient();

25
node_modules/commander/package.json generated vendored
View File

@@ -1,27 +1,34 @@
{
"_from": "commander@~2.20.3",
"_args": [
[
"commander@2.20.3",
"/Users/drew.heavner/Documents/Github/upload-google-play"
]
],
"_development": true,
"_from": "commander@2.20.3",
"_id": "commander@2.20.3",
"_inBundle": false,
"_integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
"_location": "/commander",
"_optional": true,
"_phantomChildren": {},
"_requested": {
"type": "range",
"type": "version",
"registry": true,
"raw": "commander@~2.20.3",
"raw": "commander@2.20.3",
"name": "commander",
"escapedName": "commander",
"rawSpec": "~2.20.3",
"rawSpec": "2.20.3",
"saveSpec": null,
"fetchSpec": "~2.20.3"
"fetchSpec": "2.20.3"
},
"_requiredBy": [
"/uglify-js"
],
"_resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
"_shasum": "fd485e84c03eb4881c20722ba48035e8531aeb33",
"_spec": "commander@~2.20.3",
"_where": "/Users/drew.heavner/Documents/Github/upload-google-play/node_modules/uglify-js",
"_spec": "2.20.3",
"_where": "/Users/drew.heavner/Documents/Github/upload-google-play",
"author": {
"name": "TJ Holowaychuk",
"email": "tj@vision-media.ca"
@@ -29,9 +36,7 @@
"bugs": {
"url": "https://github.com/tj/commander.js/issues"
},
"bundleDependencies": false,
"dependencies": {},
"deprecated": false,
"description": "the complete solution for node.js command-line programs",
"devDependencies": {
"@types/node": "^12.7.8",

14
node_modules/handlebars/package.json generated vendored
View File

@@ -1,4 +1,11 @@
{
"_args": [
[
"handlebars@4.5.3",
"/Users/drew.heavner/Documents/Github/upload-google-play"
]
],
"_development": true,
"_from": "handlebars@4.5.3",
"_id": "handlebars@4.5.3",
"_inBundle": false,
@@ -19,9 +26,8 @@
"/istanbul-reports"
],
"_resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.5.3.tgz",
"_shasum": "5cf75bd8714f7605713511a56be7c349becb0482",
"_spec": "handlebars@4.5.3",
"_where": "/Users/drew.heavner/Documents/Github/upload-google-play/node_modules/istanbul-reports",
"_spec": "4.5.3",
"_where": "/Users/drew.heavner/Documents/Github/upload-google-play",
"author": {
"name": "Yehuda Katz"
},
@@ -36,14 +42,12 @@
"bugs": {
"url": "https://github.com/wycats/handlebars.js/issues"
},
"bundleDependencies": false,
"dependencies": {
"neo-async": "^2.6.0",
"optimist": "^0.6.1",
"source-map": "^0.6.1",
"uglify-js": "^3.1.4"
},
"deprecated": false,
"description": "Handlebars provides the power necessary to let you build semantic templates effectively with no frustration",
"devDependencies": {
"@knappi/grunt-saucelabs": "^9.0.2",

25
node_modules/uglify-js/package.json generated vendored
View File

@@ -1,27 +1,34 @@
{
"_from": "uglify-js@^3.1.4",
"_args": [
[
"uglify-js@3.7.1",
"/Users/drew.heavner/Documents/Github/upload-google-play"
]
],
"_development": true,
"_from": "uglify-js@3.7.1",
"_id": "uglify-js@3.7.1",
"_inBundle": false,
"_integrity": "sha512-pnOF7jY82wdIhATVn87uUY/FHU+MDUdPLkmGFvGoclQmeu229eTkbG5gjGGBi3R7UuYYSEeYXY/TTY5j2aym2g==",
"_location": "/uglify-js",
"_optional": true,
"_phantomChildren": {},
"_requested": {
"type": "range",
"type": "version",
"registry": true,
"raw": "uglify-js@^3.1.4",
"raw": "uglify-js@3.7.1",
"name": "uglify-js",
"escapedName": "uglify-js",
"rawSpec": "^3.1.4",
"rawSpec": "3.7.1",
"saveSpec": null,
"fetchSpec": "^3.1.4"
"fetchSpec": "3.7.1"
},
"_requiredBy": [
"/handlebars"
],
"_resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.7.1.tgz",
"_shasum": "35c7de17971a4aa7689cd2eae0a5b39bb838c0c5",
"_spec": "uglify-js@^3.1.4",
"_where": "/Users/drew.heavner/Documents/Github/upload-google-play/node_modules/handlebars",
"_spec": "3.7.1",
"_where": "/Users/drew.heavner/Documents/Github/upload-google-play",
"author": {
"name": "Mihai Bazon",
"email": "mihai.bazon@gmail.com",
@@ -33,12 +40,10 @@
"bugs": {
"url": "https://github.com/mishoo/UglifyJS2/issues"
},
"bundleDependencies": false,
"dependencies": {
"commander": "~2.20.3",
"source-map": "~0.6.1"
},
"deprecated": false,
"description": "JavaScript parser, mangler/compressor and beautifier toolkit",
"devDependencies": {
"acorn": "~7.1.0",

View File

@@ -33,6 +33,12 @@ export async function uploadRelease(options: EditOptions, releaseFile: string) {
packageName: options.applicationId
});
const allTracks = await getAllTracks(appEdit.data!, options);
if (allTracks == undefined || allTracks.find(value => value.track == options.track) == undefined) {
core.setFailed(`Track "${options.track}" could not be found `)
return Promise.reject(`No track found for "${options.track}"`)
}
let track: Track | undefined = undefined;
if (releaseFile.endsWith('.apk')) {
const apk = await uploadApk(appEdit.data, options, releaseFile);
@@ -57,6 +63,15 @@ export async function uploadRelease(options: EditOptions, releaseFile: string) {
}
}
async function getAllTracks(appEdit: AppEdit, options: EditOptions): Promise<Track[] | undefined> {
const res = await androidPublisher.edits.tracks.list({
auth: options.auth,
editId: appEdit.id!,
packageName: options.applicationId
});
return res.data.tracks
}
async function trackVersionCode(appEdit: AppEdit, options: EditOptions, versionCode: number): Promise<Track> {
let status: string;

View File

@@ -1,4 +1,5 @@
import * as core from '@actions/core';
import * as fs from "fs";
import {uploadRelease} from "./edits";
const {google} = require('googleapis');
@@ -27,6 +28,22 @@ async function run() {
userFractionFloat = undefined
}
// Check release file
if (!fs.existsSync(releaseFile)) {
core.setFailed(`Unable to find release file @ ${releaseFile}`);
return
}
if (whatsNewDir != undefined && !fs.existsSync(whatsNewDir)) {
core.setFailed(`Unable to find 'whatsnew' directory @ ${whatsNewDir}`);
return
}
if (mappingFile != undefined && !fs.existsSync(mappingFile)) {
core.setFailed(`Unable to find 'mappingFile' @ ${mappingFile}`);
return
}
// Insure that the api can find our service account credentials
core.exportVariable("GOOGLE_APPLICATION_CREDENTIALS", serviceAccountJson);