From 7b0a262a435e057a27569a999c8ab847ade2b27c Mon Sep 17 00:00:00 2001 From: John Sudol <24583161+johnsudol@users.noreply.github.com> Date: Wed, 25 Jan 2023 15:10:36 +0000 Subject: [PATCH] use glob 0.4.0 with workspaces --- .../hashFiles/package-lock.json | 18 ++-- .../expressionFunc/hashFiles/package.json | 2 +- .../expressionFunc/hashFiles/src/hashFiles.ts | 60 +++---------- src/Misc/layoutbin/hashFiles/index.js | 86 ++++--------------- 4 files changed, 39 insertions(+), 127 deletions(-) diff --git a/src/Misc/expressionFunc/hashFiles/package-lock.json b/src/Misc/expressionFunc/hashFiles/package-lock.json index 7a6467ee8..a25297a79 100644 --- a/src/Misc/expressionFunc/hashFiles/package-lock.json +++ b/src/Misc/expressionFunc/hashFiles/package-lock.json @@ -9,7 +9,7 @@ "version": "1.0.0", "license": "MIT", "dependencies": { - "@actions/glob": "^0.3.0" + "@actions/glob": "^0.4.0" }, "devDependencies": { "@types/node": "^12.7.12", @@ -31,11 +31,11 @@ } }, "node_modules/@actions/glob": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@actions/glob/-/glob-0.3.0.tgz", - "integrity": "sha512-tJP1ZhF87fd6LBnaXWlahkyvdgvsLl7WnreW1EZaC8JWjpMXmzqWzQVe/IEYslrkT9ymibVrKyJN4UMD7uQM2w==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@actions/glob/-/glob-0.4.0.tgz", + "integrity": "sha512-+eKIGFhsFa4EBwaf/GMyzCdWrXWymGXfFmZU3FHQvYS8mPcHtTtZONbkcqqUMzw9mJ/pImEBFET1JNifhqGsAQ==", "dependencies": { - "@actions/core": "^1.2.6", + "@actions/core": "^1.9.1", "minimatch": "^3.0.4" } }, @@ -2539,11 +2539,11 @@ } }, "@actions/glob": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@actions/glob/-/glob-0.3.0.tgz", - "integrity": "sha512-tJP1ZhF87fd6LBnaXWlahkyvdgvsLl7WnreW1EZaC8JWjpMXmzqWzQVe/IEYslrkT9ymibVrKyJN4UMD7uQM2w==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@actions/glob/-/glob-0.4.0.tgz", + "integrity": "sha512-+eKIGFhsFa4EBwaf/GMyzCdWrXWymGXfFmZU3FHQvYS8mPcHtTtZONbkcqqUMzw9mJ/pImEBFET1JNifhqGsAQ==", "requires": { - "@actions/core": "^1.2.6", + "@actions/core": "^1.9.1", "minimatch": "^3.0.4" } }, diff --git a/src/Misc/expressionFunc/hashFiles/package.json b/src/Misc/expressionFunc/hashFiles/package.json index d53a37d0c..78045ff1f 100644 --- a/src/Misc/expressionFunc/hashFiles/package.json +++ b/src/Misc/expressionFunc/hashFiles/package.json @@ -21,7 +21,7 @@ "author": "GitHub Actions", "license": "MIT", "dependencies": { - "@actions/glob": "^0.3.0" + "@actions/glob": "^0.4.0" }, "devDependencies": { "@types/node": "^12.7.12", diff --git a/src/Misc/expressionFunc/hashFiles/src/hashFiles.ts b/src/Misc/expressionFunc/hashFiles/src/hashFiles.ts index 75760920f..0b73ea14c 100644 --- a/src/Misc/expressionFunc/hashFiles/src/hashFiles.ts +++ b/src/Misc/expressionFunc/hashFiles/src/hashFiles.ts @@ -1,9 +1,4 @@ -import * as crypto from 'crypto' -import * as fs from 'fs' import * as glob from '@actions/glob' -import * as path from 'path' -import * as stream from 'stream' -import * as util from 'util' async function run(): Promise { // arg0 -> node @@ -16,50 +11,21 @@ async function run(): Promise { console.log('Follow symbolic links') followSymbolicLinks = true } - + const githubWorkspace = process.cwd() console.log(`Match Pattern: ${matchPatterns}`) - let hasMatch = false - console.log('runner cwd: ', process.cwd()) - const githubWorkspace = process.env['GITHUB_WORKSPACE'] ?? process.cwd() - console.log('current workspace: ', process.env['GITHUB_WORKSPACE']) - const result = crypto.createHash('sha256') - let count = 0 - const globber = await glob.create(matchPatterns, {followSymbolicLinks}) - for await (const file of globber.globGenerator()) { - console.log(file) - if (!file.startsWith(`${githubWorkspace}${path.sep}`)) { - console.log(`Ignore '${file}' since it is not under GITHUB_WORKSPACE.`) - continue - } - if (fs.statSync(file).isDirectory()) { - console.log(`Skip directory '${file}'.`) - continue - } - const hash = crypto.createHash('sha256') - const pipeline = util.promisify(stream.pipeline) - await pipeline(fs.createReadStream(file), hash) - result.write(hash.digest()) - count++ - if (!hasMatch) { - hasMatch = true - } - } - result.end() - - if (hasMatch) { - console.log(`Found ${count} files to hash.`) - console.error(`__OUTPUT__${result.digest('hex')}__OUTPUT__`) - } else { - console.error(`__OUTPUT____OUTPUT__`) + try { + const result = await glob.hashFiles( + matchPatterns, + githubWorkspace, + {followSymbolicLinks}, + true + ) + console.error(`__OUTPUT__${result}__OUTPUT__`) + process.exit(0) + } catch (error) { + console.log(error) + process.exit(1) } } run() - .then(out => { - console.log(out) - process.exit(0) - }) - .catch(err => { - console.error(err) - process.exit(1) - }) diff --git a/src/Misc/layoutbin/hashFiles/index.js b/src/Misc/layoutbin/hashFiles/index.js index e8aeaf7c0..4cbb58493 100644 --- a/src/Misc/layoutbin/hashFiles/index.js +++ b/src/Misc/layoutbin/hashFiles/index.js @@ -15,13 +15,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; -var __asyncValues = (this && this.__asyncValues) || function (o) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var m = o[Symbol.asyncIterator], i; - return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); - function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } - function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); } -}; var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; @@ -30,15 +23,8 @@ var __importStar = (this && this.__importStar) || function (mod) { return result; }; Object.defineProperty(exports, "__esModule", ({ value: true })); -const crypto = __importStar(__nccwpck_require__(6113)); -const fs = __importStar(__nccwpck_require__(7147)); const glob = __importStar(__nccwpck_require__(8090)); -const path = __importStar(__nccwpck_require__(1017)); -const stream = __importStar(__nccwpck_require__(2781)); -const util = __importStar(__nccwpck_require__(3837)); function run() { - var e_1, _a; - var _b; return __awaiter(this, void 0, void 0, function* () { // arg0 -> node // arg1 -> hashFiles.js @@ -50,62 +36,20 @@ function run() { console.log('Follow symbolic links'); followSymbolicLinks = true; } + const githubWorkspace = process.cwd(); console.log(`Match Pattern: ${matchPatterns}`); - let hasMatch = false; - console.log('runner cwd: ', process.cwd()); - const githubWorkspace = (_b = process.env['GITHUB_WORKSPACE'], (_b !== null && _b !== void 0 ? _b : process.cwd())); - console.log('current workspace: ', process.env['GITHUB_WORKSPACE']); - const result = crypto.createHash('sha256'); - let count = 0; - const globber = yield glob.create(matchPatterns, { followSymbolicLinks }); try { - for (var _c = __asyncValues(globber.globGenerator()), _d; _d = yield _c.next(), !_d.done;) { - const file = _d.value; - console.log(file); - if (!file.startsWith(`${githubWorkspace}${path.sep}`)) { - console.log(`Ignore '${file}' since it is not under GITHUB_WORKSPACE.`); - continue; - } - if (fs.statSync(file).isDirectory()) { - console.log(`Skip directory '${file}'.`); - continue; - } - const hash = crypto.createHash('sha256'); - const pipeline = util.promisify(stream.pipeline); - yield pipeline(fs.createReadStream(file), hash); - result.write(hash.digest()); - count++; - if (!hasMatch) { - hasMatch = true; - } - } + const result = yield glob.hashFiles(matchPatterns, githubWorkspace, { followSymbolicLinks }, true); + console.error(`__OUTPUT__${result}__OUTPUT__`); + process.exit(0); } - catch (e_1_1) { e_1 = { error: e_1_1 }; } - finally { - try { - if (_d && !_d.done && (_a = _c.return)) yield _a.call(_c); - } - finally { if (e_1) throw e_1.error; } - } - result.end(); - if (hasMatch) { - console.log(`Found ${count} files to hash.`); - console.error(`__OUTPUT__${result.digest('hex')}__OUTPUT__`); - } - else { - console.error(`__OUTPUT____OUTPUT__`); + catch (error) { + console.log(error); + process.exit(1); } }); } -run() - .then(out => { - console.log(out); - process.exit(0); -}) - .catch(err => { - console.error(err); - process.exit(1); -}); +run(); /***/ }), @@ -1122,16 +1066,18 @@ exports.create = create; * Computes the sha256 hash of a glob * * @param patterns Patterns separated by newlines + * @param currentWorkspace Workspace used when matching files * @param options Glob options + * @param verbose Enables verbose logging */ -function hashFiles(patterns, options, verbose = false) { +function hashFiles(patterns, currentWorkspace = '', options, verbose = false) { return __awaiter(this, void 0, void 0, function* () { let followSymbolicLinks = true; if (options && typeof options.followSymbolicLinks === 'boolean') { followSymbolicLinks = options.followSymbolicLinks; } const globber = yield create(patterns, { followSymbolicLinks }); - return internal_hash_files_1.hashFiles(globber, verbose); + return internal_hash_files_1.hashFiles(globber, currentWorkspace, verbose); }); } exports.hashFiles = hashFiles; @@ -1491,15 +1437,15 @@ const fs = __importStar(__nccwpck_require__(7147)); const stream = __importStar(__nccwpck_require__(2781)); const util = __importStar(__nccwpck_require__(3837)); const path = __importStar(__nccwpck_require__(1017)); -function hashFiles(globber, verbose = false) { +function hashFiles(globber, currentWorkspace, verbose = false) { var e_1, _a; var _b; return __awaiter(this, void 0, void 0, function* () { const writeDelegate = verbose ? core.info : core.debug; let hasMatch = false; - console.log('globber cwd: ',process.cwd()) - const githubWorkspace = (_b = process.env['GITHUB_WORKSPACE']) !== null && _b !== void 0 ? _b : process.cwd(); - console.log('workspace: ', githubWorkspace); + const githubWorkspace = currentWorkspace + ? currentWorkspace + : (_b = process.env['GITHUB_WORKSPACE']) !== null && _b !== void 0 ? _b : process.cwd(); const result = crypto.createHash('sha256'); let count = 0; try {