add support for file_glob
This commit is contained in:
parent
add30524b0
commit
cb3a639a0c
@ -19,6 +19,8 @@ inputs:
|
||||
required: true
|
||||
overwrite:
|
||||
description: 'Overwrite the release in case it already exists'
|
||||
file_glob:
|
||||
description: 'if true the file can be a glob pattern, asset_name is ignored if this is true'
|
||||
runs:
|
||||
using: 'node12'
|
||||
main: 'lib/main.js'
|
||||
|
32
lib/main.js
32
lib/main.js
@ -18,6 +18,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const fs = __importStar(require("fs"));
|
||||
const core = __importStar(require("@actions/core"));
|
||||
const github = __importStar(require("@actions/github"));
|
||||
const path = __importStar(require("path"));
|
||||
const glob = require("glob");
|
||||
function get_release_by_tag(tag, octokit, context) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
try {
|
||||
@ -38,7 +40,12 @@ function get_release_by_tag(tag, octokit, context) {
|
||||
}
|
||||
function upload_to_release(release, file, asset_name, tag, overwrite, octokit, context) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
const file_size = fs.statSync(file).size;
|
||||
const stat = fs.statSync(file);
|
||||
if (!stat.isFile()) {
|
||||
core.debug(`Skipping ${file}, since its not a file`);
|
||||
return;
|
||||
}
|
||||
const file_size = stat.size;
|
||||
const file_bytes = fs.readFileSync(file);
|
||||
// Check for duplicates.
|
||||
const assets = yield octokit.repos.listAssetsForRelease(Object.assign({}, context.repo, { release_id: release.data.id }));
|
||||
@ -73,16 +80,29 @@ function run() {
|
||||
try {
|
||||
const token = core.getInput('repo_token', { required: true });
|
||||
const file = core.getInput('file', { required: true });
|
||||
const asset_name = core.getInput('asset_name', { required: true });
|
||||
const file_glob = core.getInput('file_glob');
|
||||
const tag = core.getInput('tag', { required: true }).replace("refs/tags/", "");
|
||||
const overwrite = core.getInput('overwrite');
|
||||
if (!fs.existsSync(file)) {
|
||||
core.setFailed(`File ${file} wasn't found.`);
|
||||
}
|
||||
const octokit = new github.GitHub(token);
|
||||
const context = github.context;
|
||||
const release = yield get_release_by_tag(tag, octokit, context);
|
||||
yield upload_to_release(release, file, asset_name, tag, overwrite, octokit, context);
|
||||
if (file_glob === "true") {
|
||||
const files = glob.sync(file);
|
||||
if (files.length > 0) {
|
||||
for (let i = 0; i < files.length; i += 1) {
|
||||
const file = files[i];
|
||||
const asset_name = path.basename(file);
|
||||
yield upload_to_release(release, file, asset_name, tag, overwrite, octokit, context);
|
||||
}
|
||||
}
|
||||
else {
|
||||
core.setFailed("No files matching the glob pattern found.");
|
||||
}
|
||||
}
|
||||
else {
|
||||
const asset_name = core.getInput('asset_name', { required: true });
|
||||
yield upload_to_release(release, file, asset_name, tag, overwrite, octokit, context);
|
||||
}
|
||||
}
|
||||
catch (error) {
|
||||
core.setFailed(error.message);
|
||||
|
31
package-lock.json
generated
31
package-lock.json
generated
@ -852,8 +852,7 @@
|
||||
"balanced-match": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
|
||||
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
|
||||
"dev": true
|
||||
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
|
||||
},
|
||||
"base": {
|
||||
"version": "0.11.2",
|
||||
@ -934,7 +933,6 @@
|
||||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"balanced-match": "^1.0.0",
|
||||
"concat-map": "0.0.1"
|
||||
@ -1194,9 +1192,9 @@
|
||||
}
|
||||
},
|
||||
"commander": {
|
||||
"version": "2.20.0",
|
||||
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz",
|
||||
"integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==",
|
||||
"version": "2.20.1",
|
||||
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.1.tgz",
|
||||
"integrity": "sha512-cCuLsMhJeWQ/ZpsFTbE765kvVfoeSddc4nU3up4fV+fDBcfUXnbITJ+JzhkdjzOqhURjZgujxaioam4RM9yGUg==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
@ -1209,8 +1207,7 @@
|
||||
"concat-map": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
|
||||
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
|
||||
"dev": true
|
||||
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
|
||||
},
|
||||
"convert-source-map": {
|
||||
"version": "1.6.0",
|
||||
@ -1788,8 +1785,7 @@
|
||||
"fs.realpath": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
|
||||
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
|
||||
"dev": true
|
||||
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
|
||||
},
|
||||
"fsevents": {
|
||||
"version": "1.2.9",
|
||||
@ -2378,7 +2374,6 @@
|
||||
"version": "7.1.4",
|
||||
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",
|
||||
"integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"fs.realpath": "^1.0.0",
|
||||
"inflight": "^1.0.4",
|
||||
@ -2407,9 +2402,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"handlebars": {
|
||||
"version": "4.1.2",
|
||||
"resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.2.tgz",
|
||||
"integrity": "sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==",
|
||||
"version": "4.4.2",
|
||||
"resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.4.2.tgz",
|
||||
"integrity": "sha512-cIv17+GhL8pHHnRJzGu2wwcthL5sb8uDKBHvZ2Dtu5s1YNt0ljbzKbamnc+gr69y7bzwQiBdr5+hOpRd5pnOdg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"neo-async": "^2.6.0",
|
||||
@ -2561,7 +2556,6 @@
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
|
||||
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"once": "^1.3.0",
|
||||
"wrappy": "1"
|
||||
@ -2570,8 +2564,7 @@
|
||||
"inherits": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
|
||||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
|
||||
"dev": true
|
||||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
|
||||
},
|
||||
"invariant": {
|
||||
"version": "2.2.4",
|
||||
@ -3681,7 +3674,6 @@
|
||||
"version": "3.0.4",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
|
||||
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"brace-expansion": "^1.1.7"
|
||||
}
|
||||
@ -4128,8 +4120,7 @@
|
||||
"path-is-absolute": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
|
||||
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
|
||||
"dev": true
|
||||
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
|
||||
},
|
||||
"path-key": {
|
||||
"version": "2.0.1",
|
||||
|
@ -23,7 +23,8 @@
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@actions/core": "^1.0.0",
|
||||
"@actions/github": "^1.0.0"
|
||||
"@actions/github": "^1.0.0",
|
||||
"glob": "^7.1.4"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/jest": "^24.0.13",
|
||||
|
36
src/main.ts
36
src/main.ts
@ -1,6 +1,9 @@
|
||||
import * as fs from 'fs';
|
||||
import * as core from '@actions/core';
|
||||
import * as github from '@actions/github';
|
||||
import * as path from 'path';
|
||||
|
||||
const glob = require("glob")
|
||||
|
||||
async function get_release_by_tag(tag: string, octokit: any, context: any): Promise<any> {
|
||||
try {
|
||||
@ -24,7 +27,12 @@ async function get_release_by_tag(tag: string, octokit: any, context: any): Prom
|
||||
}
|
||||
|
||||
async function upload_to_release(release: any, file: string, asset_name: string, tag: string, overwrite: string, octokit: any, context: any) {
|
||||
const file_size = fs.statSync(file).size;
|
||||
const stat = fs.statSync(file);
|
||||
if (!stat.isFile()) {
|
||||
core.debug(`Skipping ${file}, since its not a file`);
|
||||
return;
|
||||
}
|
||||
const file_size = stat.size;
|
||||
const file_bytes = fs.readFileSync(file);
|
||||
|
||||
// Check for duplicates.
|
||||
@ -64,19 +72,31 @@ async function run() {
|
||||
try {
|
||||
const token = core.getInput('repo_token', { required: true });
|
||||
const file = core.getInput('file', { required: true });
|
||||
const asset_name = core.getInput('asset_name', { required: true });
|
||||
const file_glob = core.getInput('file_glob');
|
||||
const tag = core.getInput('tag', { required: true }).replace("refs/tags/", "");
|
||||
const overwrite = core.getInput('overwrite');
|
||||
|
||||
if (!fs.existsSync(file)) {
|
||||
core.setFailed(`File ${file} wasn't found.`);
|
||||
}
|
||||
|
||||
const octokit = new github.GitHub(token);
|
||||
const context = github.context;
|
||||
|
||||
const release = await get_release_by_tag(tag, octokit, context);
|
||||
await upload_to_release(release, file, asset_name, tag, overwrite, octokit, context);
|
||||
|
||||
if (file_glob === "true") {
|
||||
const files = glob.sync(file);
|
||||
if (files.length > 0) {
|
||||
for (let i = 0; i < files.length; i += 1) {
|
||||
const file = files[i];
|
||||
const asset_name = path.basename(file);
|
||||
await upload_to_release(release, file, asset_name, tag, overwrite, octokit, context);
|
||||
}
|
||||
}
|
||||
else {
|
||||
core.setFailed("No files matching the glob pattern found.");
|
||||
}
|
||||
}
|
||||
else {
|
||||
const asset_name = core.getInput('asset_name', { required: true });
|
||||
await upload_to_release(release, file, asset_name, tag, overwrite, octokit, context);
|
||||
}
|
||||
} catch (error) {
|
||||
core.setFailed(error.message);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user