From e67d32c5d0239aedcfd8def4578e101960e84384 Mon Sep 17 00:00:00 2001 From: Vallie Joseph <vmjoseph@github.com> Date: Fri, 2 Dec 2022 19:57:31 +0000 Subject: [PATCH] updating actions io --- actions-exec-1.1.1.tgz | Bin 14375 -> 0 bytes actions-io-1.1.2.tgz | Bin 0 -> 10442 bytes dist/index.js | 795 +++++++++++++++++++++++++++++++++++------ package-lock.json | 14 +- package.json | 2 +- 5 files changed, 682 insertions(+), 129 deletions(-) delete mode 100644 actions-exec-1.1.1.tgz create mode 100644 actions-io-1.1.2.tgz diff --git a/actions-exec-1.1.1.tgz b/actions-exec-1.1.1.tgz deleted file mode 100644 index f7c86b87f7812cf3e8302d58d94304688b9e465e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14375 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 diff --git a/actions-io-1.1.2.tgz b/actions-io-1.1.2.tgz new file mode 100644 index 0000000000000000000000000000000000000000..ec824eab162cab0c1cf81616be0b9d5b387c2ae4 GIT binary patch literal 10442 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 AasU7T literal 0 HcmV?d00001 diff --git a/dist/index.js b/dist/index.js index 47a99f1..4ba9ad6 100644 --- a/dist/index.js +++ b/dist/index.js @@ -98,6 +98,25 @@ module.exports = Octokit; "use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { @@ -108,11 +127,14 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge }); }; Object.defineProperty(exports, "__esModule", { value: true }); -const childProcess = __webpack_require__(129); -const path = __webpack_require__(622); +exports.findInPath = exports.which = exports.mkdirP = exports.rmRF = exports.mv = exports.cp = void 0; +const assert_1 = __webpack_require__(357); +const childProcess = __importStar(__webpack_require__(129)); +const path = __importStar(__webpack_require__(622)); const util_1 = __webpack_require__(669); -const ioUtil = __webpack_require__(672); +const ioUtil = __importStar(__webpack_require__(672)); const exec = util_1.promisify(childProcess.exec); +const execFile = util_1.promisify(childProcess.execFile); /** * Copies a file or folder. * Based off of shelljs - https://github.com/shelljs/shelljs/blob/9237f66c52e5daa40458f94f9565e18e8132f5a6/src/cp.js @@ -123,14 +145,14 @@ const exec = util_1.promisify(childProcess.exec); */ function cp(source, dest, options = {}) { return __awaiter(this, void 0, void 0, function* () { - const { force, recursive } = readCopyOptions(options); + const { force, recursive, copySourceDirectory } = readCopyOptions(options); const destStat = (yield ioUtil.exists(dest)) ? yield ioUtil.stat(dest) : null; // Dest is an existing file, but not forcing if (destStat && destStat.isFile() && !force) { return; } // If dest is an existing directory, should copy inside. - const newDest = destStat && destStat.isDirectory() + const newDest = destStat && destStat.isDirectory() && copySourceDirectory ? path.join(dest, path.basename(source)) : dest; if (!(yield ioUtil.exists(source))) { @@ -195,13 +217,22 @@ function rmRF(inputPath) { if (ioUtil.IS_WINDOWS) { // Node doesn't provide a delete operation, only an unlink function. This means that if the file is being used by another // program (e.g. antivirus), it won't be deleted. To address this, we shell out the work to rd/del. + // Check for invalid characters + // https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file + if (/[*"<>|]/.test(inputPath)) { + throw new Error('File path must not contain `*`, `"`, `<`, `>` or `|` on Windows'); + } try { - if (yield ioUtil.isDirectory(inputPath, true)) { - yield exec(`rd /s /q "${inputPath}"`); - } - else { - yield exec(`del /f /a "${inputPath}"`); - } + const cmdPath = ioUtil.getCmdPath(); + // if (await ioUtil.isDirectory(inputPath, true)) { + // await execFile(`${cmdPath} /s /c "rd /s /q "%inputPath%""`, { + // env: {inputPath} + // }) + // } else { + yield execFile(`${cmdPath} /s /c "del /f /a "%inputPath%""`, { + env: { inputPath } + }); + // } } catch (err) { // if you try to delete a file that doesn't exist, desired result is achieved @@ -221,9 +252,9 @@ function rmRF(inputPath) { } } else { - let isDir = false; + // let isDir = false try { - isDir = yield ioUtil.isDirectory(inputPath); + // isDir = await ioUtil.isDirectory(inputPath) } catch (err) { // if you try to delete a file that doesn't exist, desired result is achieved @@ -232,12 +263,11 @@ function rmRF(inputPath) { throw err; return; } - if (isDir) { - yield exec(`rm -rf "${inputPath}"`); - } - else { - yield ioUtil.unlink(inputPath); - } + // if (isDir) { + yield execFile(`rm`, [`-rf`, `${inputPath}`]); + // } else { + // await ioUtil.unlink(inputPath) + // } } }); } @@ -251,7 +281,8 @@ exports.rmRF = rmRF; */ function mkdirP(fsPath) { return __awaiter(this, void 0, void 0, function* () { - yield ioUtil.mkdirP(fsPath); + assert_1.ok(fsPath, 'a path argument must be provided'); + yield ioUtil.mkdir(fsPath, { recursive: true }); }); } exports.mkdirP = mkdirP; @@ -279,62 +310,80 @@ function which(tool, check) { throw new Error(`Unable to locate executable file: ${tool}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.`); } } + return result; } - try { - // build the list of extensions to try - const extensions = []; - if (ioUtil.IS_WINDOWS && process.env.PATHEXT) { - for (const extension of process.env.PATHEXT.split(path.delimiter)) { - if (extension) { - extensions.push(extension); - } - } - } - // if it's rooted, return it if exists. otherwise return empty. - if (ioUtil.isRooted(tool)) { - const filePath = yield ioUtil.tryGetExecutablePath(tool, extensions); - if (filePath) { - return filePath; - } - return ''; - } - // if any path separators, return empty - if (tool.includes('/') || (ioUtil.IS_WINDOWS && tool.includes('\\'))) { - return ''; - } - // build the list of directories - // - // Note, technically "where" checks the current directory on Windows. From a toolkit perspective, - // it feels like we should not do this. Checking the current directory seems like more of a use - // case of a shell, and the which() function exposed by the toolkit should strive for consistency - // across platforms. - const directories = []; - if (process.env.PATH) { - for (const p of process.env.PATH.split(path.delimiter)) { - if (p) { - directories.push(p); - } - } - } - // return the first match - for (const directory of directories) { - const filePath = yield ioUtil.tryGetExecutablePath(directory + path.sep + tool, extensions); - if (filePath) { - return filePath; - } - } - return ''; - } - catch (err) { - throw new Error(`which failed with message ${err.message}`); + const matches = yield findInPath(tool); + if (matches && matches.length > 0) { + return matches[0]; } + return ''; }); } exports.which = which; +/** + * Returns a list of all occurrences of the given tool on the system path. + * + * @returns Promise<string[]> the paths of the tool + */ +function findInPath(tool) { + return __awaiter(this, void 0, void 0, function* () { + if (!tool) { + throw new Error("parameter 'tool' is required"); + } + // build the list of extensions to try + const extensions = []; + if (ioUtil.IS_WINDOWS && process.env['PATHEXT']) { + for (const extension of process.env['PATHEXT'].split(path.delimiter)) { + if (extension) { + extensions.push(extension); + } + } + } + // if it's rooted, return it if exists. otherwise return empty. + if (ioUtil.isRooted(tool)) { + const filePath = yield ioUtil.tryGetExecutablePath(tool, extensions); + if (filePath) { + return [filePath]; + } + return []; + } + // if any path separators, return empty + if (tool.includes(path.sep)) { + return []; + } + // build the list of directories + // + // Note, technically "where" checks the current directory on Windows. From a toolkit perspective, + // it feels like we should not do this. Checking the current directory seems like more of a use + // case of a shell, and the which() function exposed by the toolkit should strive for consistency + // across platforms. + const directories = []; + if (process.env.PATH) { + for (const p of process.env.PATH.split(path.delimiter)) { + if (p) { + directories.push(p); + } + } + } + // find all matches + const matches = []; + for (const directory of directories) { + const filePath = yield ioUtil.tryGetExecutablePath(path.join(directory, tool), extensions); + if (filePath) { + matches.push(filePath); + } + } + return matches; + }); +} +exports.findInPath = findInPath; function readCopyOptions(options) { const force = options.force == null ? true : options.force; const recursive = Boolean(options.recursive); - return { force, recursive }; + const copySourceDirectory = options.copySourceDirectory == null + ? true + : Boolean(options.copySourceDirectory); + return { force, recursive, copySourceDirectory }; } function cpDirRecursive(sourceDir, destDir, currentDepth, force) { return __awaiter(this, void 0, void 0, function* () { @@ -4710,7 +4759,7 @@ module.exports = require("punycode"); /***/ 215: /***/ (function(module) { -module.exports = {"name":"@octokit/rest","version":"16.43.1","publishConfig":{"access":"public"},"description":"GitHub REST API client for Node.js","keywords":["octokit","github","rest","api-client"],"author":"Gregor Martynus (https://github.com/gr2m)","contributors":[{"name":"Mike de Boer","email":"info@mikedeboer.nl"},{"name":"Fabian Jakobs","email":"fabian@c9.io"},{"name":"Joe Gallo","email":"joe@brassafrax.com"},{"name":"Gregor Martynus","url":"https://github.com/gr2m"}],"repository":"https://github.com/octokit/rest.js","dependencies":{"@octokit/auth-token":"^2.4.0","@octokit/plugin-paginate-rest":"^1.1.1","@octokit/plugin-request-log":"^1.0.0","@octokit/plugin-rest-endpoint-methods":"2.4.0","@octokit/request":"^5.2.0","@octokit/request-error":"^1.0.2","atob-lite":"^2.0.0","before-after-hook":"^2.0.0","btoa-lite":"^1.0.0","deprecation":"^2.0.0","lodash.get":"^4.4.2","lodash.set":"^4.3.2","lodash.uniq":"^4.5.0","octokit-pagination-methods":"^1.1.0","once":"^1.4.0","universal-user-agent":"^4.0.0"},"devDependencies":{"@gimenete/type-writer":"^0.1.3","@octokit/auth":"^1.1.1","@octokit/fixtures-server":"^5.0.6","@octokit/graphql":"^4.2.0","@types/node":"^13.1.0","bundlesize":"^0.18.0","chai":"^4.1.2","compression-webpack-plugin":"^3.1.0","cypress":"^3.0.0","glob":"^7.1.2","http-proxy-agent":"^4.0.0","lodash.camelcase":"^4.3.0","lodash.merge":"^4.6.1","lodash.upperfirst":"^4.3.1","lolex":"^5.1.2","mkdirp":"^1.0.0","mocha":"^7.0.1","mustache":"^4.0.0","nock":"^11.3.3","npm-run-all":"^4.1.2","nyc":"^15.0.0","prettier":"^1.14.2","proxy":"^1.0.0","semantic-release":"^17.0.0","sinon":"^8.0.0","sinon-chai":"^3.0.0","sort-keys":"^4.0.0","string-to-arraybuffer":"^1.0.0","string-to-jsdoc-comment":"^1.0.0","typescript":"^3.3.1","webpack":"^4.0.0","webpack-bundle-analyzer":"^3.0.0","webpack-cli":"^3.0.0"},"types":"index.d.ts","scripts":{"coverage":"nyc report --reporter=html && open coverage/index.html","lint":"prettier --check '{lib,plugins,scripts,test}/**/*.{js,json,ts}' 'docs/*.{js,json}' 'docs/src/**/*' index.js README.md package.json","lint:fix":"prettier --write '{lib,plugins,scripts,test}/**/*.{js,json,ts}' 'docs/*.{js,json}' 'docs/src/**/*' index.js README.md package.json","pretest":"npm run -s lint","test":"nyc mocha test/mocha-node-setup.js \"test/*/**/*-test.js\"","test:browser":"cypress run --browser chrome","build":"npm-run-all build:*","build:ts":"npm run -s update-endpoints:typescript","prebuild:browser":"mkdirp dist/","build:browser":"npm-run-all build:browser:*","build:browser:development":"webpack --mode development --entry . --output-library=Octokit --output=./dist/octokit-rest.js --profile --json > dist/bundle-stats.json","build:browser:production":"webpack --mode production --entry . --plugin=compression-webpack-plugin --output-library=Octokit --output-path=./dist --output-filename=octokit-rest.min.js --devtool source-map","generate-bundle-report":"webpack-bundle-analyzer dist/bundle-stats.json --mode=static --no-open --report dist/bundle-report.html","update-endpoints":"npm-run-all update-endpoints:*","update-endpoints:fetch-json":"node scripts/update-endpoints/fetch-json","update-endpoints:typescript":"node scripts/update-endpoints/typescript","prevalidate:ts":"npm run -s build:ts","validate:ts":"tsc --target es6 --noImplicitAny index.d.ts","postvalidate:ts":"tsc --noEmit --target es6 test/typescript-validate.ts","start-fixtures-server":"octokit-fixtures-server"},"license":"MIT","files":["index.js","index.d.ts","lib","plugins"],"nyc":{"ignore":["test"]},"release":{"publish":["@semantic-release/npm",{"path":"@semantic-release/github","assets":["dist/*","!dist/*.map.gz"]}]},"bundlesize":[{"path":"./dist/octokit-rest.min.js.gz","maxSize":"33 kB"}]}; +module.exports = {"name":"@octokit/rest","version":"16.43.1","publishConfig":{"access":"public"},"description":"GitHub REST API client for Node.js","keywords":["octokit","github","rest","api-client"],"author":"Gregor Martynus (https://github.com/gr2m)","contributors":[{"name":"Mike de Boer","email":"info@mikedeboer.nl"},{"name":"Fabian Jakobs","email":"fabian@c9.io"},{"name":"Joe Gallo","email":"joe@brassafrax.com"},{"name":"Gregor Martynus","url":"https://github.com/gr2m"}],"repository":"https://github.com/octokit/rest.js","dependencies":{"@octokit/auth-token":"^2.4.0","@octokit/plugin-paginate-rest":"^1.1.1","@octokit/plugin-request-log":"^1.0.0","@octokit/plugin-rest-endpoint-methods":"2.4.0","@octokit/request":"^5.2.0","@octokit/request-error":"^1.0.2","atob-lite":"^2.0.0","before-after-hook":"^2.0.0","btoa-lite":"^1.0.0","deprecation":"^2.0.0","lodash.get":"^4.4.2","lodash.set":"^4.3.2","lodash.uniq":"^4.5.0","octokit-pagination-methods":"^1.1.0","once":"^1.4.0","universal-user-agent":"^4.0.0"},"devDependencies":{"@gimenete/type-writer":"^0.1.3","@octokit/auth":"^1.1.1","@octokit/fixtures-server":"^5.0.6","@octokit/graphql":"^4.2.0","@types/node":"^13.1.0","bundlesize":"^0.18.0","chai":"^4.1.2","compression-webpack-plugin":"^3.1.0","cypress":"^3.0.0","glob":"^7.1.2","http-proxy-agent":"^4.0.0","lodash.camelcase":"^4.3.0","lodash.merge":"^4.6.1","lodash.upperfirst":"^4.3.1","lolex":"^5.1.2","mkdirp":"^1.0.0","mocha":"^7.0.1","mustache":"^4.0.0","nock":"^11.3.3","npm-run-all":"^4.1.2","nyc":"^15.0.0","prettier":"^1.14.2","proxy":"^1.0.0","semantic-release":"^17.0.0","sinon":"^8.0.0","sinon-chai":"^3.0.0","sort-keys":"^4.0.0","string-to-arraybuffer":"^1.0.0","string-to-jsdoc-comment":"^1.0.0","typescript":"^3.3.1","webpack":"^4.0.0","webpack-bundle-analyzer":"^3.0.0","webpack-cli":"^3.0.0"},"types":"index.d.ts","scripts":{"coverage":"nyc report --reporter=html && open coverage/index.html","lint":"prettier --check '{lib,plugins,scripts,test}/**/*.{js,json,ts}' 'docs/*.{js,json}' 'docs/src/**/*' index.js README.md package.json","lint:fix":"prettier --write '{lib,plugins,scripts,test}/**/*.{js,json,ts}' 'docs/*.{js,json}' 'docs/src/**/*' index.js README.md package.json","pretest":"npm run -s lint","test":"nyc mocha test/mocha-node-setup.js \"test/*/**/*-test.js\"","test:browser":"cypress run --browser chrome","build":"npm-run-all build:*","build:ts":"npm run -s update-endpoints:typescript","prebuild:browser":"mkdirp dist/","build:browser":"npm-run-all build:browser:*","build:browser:development":"webpack --mode development --entry . --output-library=Octokit --output=./dist/octokit-rest.js --profile --json > dist/bundle-stats.json","build:browser:production":"webpack --mode production --entry . --plugin=compression-webpack-plugin --output-library=Octokit --output-path=./dist --output-filename=octokit-rest.min.js --devtool source-map","generate-bundle-report":"webpack-bundle-analyzer dist/bundle-stats.json --mode=static --no-open --report dist/bundle-report.html","update-endpoints":"npm-run-all update-endpoints:*","update-endpoints:fetch-json":"node scripts/update-endpoints/fetch-json","update-endpoints:typescript":"node scripts/update-endpoints/typescript","prevalidate:ts":"npm run -s build:ts","validate:ts":"tsc --target es6 --noImplicitAny index.d.ts","postvalidate:ts":"tsc --noEmit --target es6 test/typescript-validate.ts","start-fixtures-server":"octokit-fixtures-server"},"license":"MIT","files":["index.js","index.d.ts","lib","plugins"],"nyc":{"ignore":["test"]},"release":{"publish":["@semantic-release/npm",{"path":"@semantic-release/github","assets":["dist/*","!dist/*.map.gz"]}]},"bundlesize":[{"path":"./dist/octokit-rest.min.js.gz","maxSize":"33 kB"}],"_resolved":"https://registry.npmjs.org/@octokit/rest/-/rest-16.43.1.tgz","_integrity":"sha512-gfFKwRT/wFxq5qlNjnW2dh+qh74XgTQ2B179UX5K1HYCluioWj8Ndbgqw2PVqa1NnVJkGHp2ovMpVn/DImlmkw==","_from":"@octokit/rest@16.43.1"}; /***/ }), @@ -12332,7 +12381,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge }; Object.defineProperty(exports, "__esModule", { value: true }); const core = __webpack_require__(470); -const io = __webpack_require__(1); +const io = __webpack_require__(667); const fs = __webpack_require__(747); const os = __webpack_require__(87); const path = __webpack_require__(622); @@ -16385,6 +16434,354 @@ exports.summary = _summary; /***/ }), +/***/ 667: +/***/ (function(__unusedmodule, exports, __webpack_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.findInPath = exports.which = exports.mkdirP = exports.rmRF = exports.mv = exports.cp = void 0; +const assert_1 = __webpack_require__(357); +const childProcess = __importStar(__webpack_require__(129)); +const path = __importStar(__webpack_require__(622)); +const util_1 = __webpack_require__(669); +const ioUtil = __importStar(__webpack_require__(971)); +const exec = util_1.promisify(childProcess.exec); +const execFile = util_1.promisify(childProcess.execFile); +/** + * Copies a file or folder. + * Based off of shelljs - https://github.com/shelljs/shelljs/blob/9237f66c52e5daa40458f94f9565e18e8132f5a6/src/cp.js + * + * @param source source path + * @param dest destination path + * @param options optional. See CopyOptions. + */ +function cp(source, dest, options = {}) { + return __awaiter(this, void 0, void 0, function* () { + const { force, recursive, copySourceDirectory } = readCopyOptions(options); + const destStat = (yield ioUtil.exists(dest)) ? yield ioUtil.stat(dest) : null; + // Dest is an existing file, but not forcing + if (destStat && destStat.isFile() && !force) { + return; + } + // If dest is an existing directory, should copy inside. + const newDest = destStat && destStat.isDirectory() && copySourceDirectory + ? path.join(dest, path.basename(source)) + : dest; + if (!(yield ioUtil.exists(source))) { + throw new Error(`no such file or directory: ${source}`); + } + const sourceStat = yield ioUtil.stat(source); + if (sourceStat.isDirectory()) { + if (!recursive) { + throw new Error(`Failed to copy. ${source} is a directory, but tried to copy without recursive flag.`); + } + else { + yield cpDirRecursive(source, newDest, 0, force); + } + } + else { + if (path.relative(source, newDest) === '') { + // a file cannot be copied to itself + throw new Error(`'${newDest}' and '${source}' are the same file`); + } + yield copyFile(source, newDest, force); + } + }); +} +exports.cp = cp; +/** + * Moves a path. + * + * @param source source path + * @param dest destination path + * @param options optional. See MoveOptions. + */ +function mv(source, dest, options = {}) { + return __awaiter(this, void 0, void 0, function* () { + if (yield ioUtil.exists(dest)) { + let destExists = true; + if (yield ioUtil.isDirectory(dest)) { + // If dest is directory copy src into dest + dest = path.join(dest, path.basename(source)); + destExists = yield ioUtil.exists(dest); + } + if (destExists) { + if (options.force == null || options.force) { + yield rmRF(dest); + } + else { + throw new Error('Destination already exists'); + } + } + } + yield mkdirP(path.dirname(dest)); + yield ioUtil.rename(source, dest); + }); +} +exports.mv = mv; +/** + * Remove a path recursively with force + * + * @param inputPath path to remove + */ +function rmRF(inputPath) { + return __awaiter(this, void 0, void 0, function* () { + if (ioUtil.IS_WINDOWS) { + // Node doesn't provide a delete operation, only an unlink function. This means that if the file is being used by another + // program (e.g. antivirus), it won't be deleted. To address this, we shell out the work to rd/del. + // Check for invalid characters + // https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file + if (/[*"<>|]/.test(inputPath)) { + throw new Error('File path must not contain `*`, `"`, `<`, `>` or `|` on Windows'); + } + try { + const cmdPath = ioUtil.getCmdPath(); + if (yield ioUtil.isDirectory(inputPath, true)) { + yield exec(`${cmdPath} /s /c "rd /s /q "%inputPath%""`, { + env: { inputPath } + }); + } + else { + yield exec(`${cmdPath} /s /c "del /f /a "%inputPath%""`, { + env: { inputPath } + }); + } + } + catch (err) { + // if you try to delete a file that doesn't exist, desired result is achieved + // other errors are valid + if (err.code !== 'ENOENT') + throw err; + } + // Shelling out fails to remove a symlink folder with missing source, this unlink catches that + try { + yield ioUtil.unlink(inputPath); + } + catch (err) { + // if you try to delete a file that doesn't exist, desired result is achieved + // other errors are valid + if (err.code !== 'ENOENT') + throw err; + } + } + else { + let isDir = false; + try { + isDir = yield ioUtil.isDirectory(inputPath); + } + catch (err) { + // if you try to delete a file that doesn't exist, desired result is achieved + // other errors are valid + if (err.code !== 'ENOENT') + throw err; + return; + } + if (isDir) { + yield execFile(`rm`, [`-rf`, `${inputPath}`]); + } + else { + yield ioUtil.unlink(inputPath); + } + } + }); +} +exports.rmRF = rmRF; +/** + * Make a directory. Creates the full path with folders in between + * Will throw if it fails + * + * @param fsPath path to create + * @returns Promise<void> + */ +function mkdirP(fsPath) { + return __awaiter(this, void 0, void 0, function* () { + assert_1.ok(fsPath, 'a path argument must be provided'); + yield ioUtil.mkdir(fsPath, { recursive: true }); + }); +} +exports.mkdirP = mkdirP; +/** + * Returns path of a tool had the tool actually been invoked. Resolves via paths. + * If you check and the tool does not exist, it will throw. + * + * @param tool name of the tool + * @param check whether to check if tool exists + * @returns Promise<string> path to tool + */ +function which(tool, check) { + return __awaiter(this, void 0, void 0, function* () { + if (!tool) { + throw new Error("parameter 'tool' is required"); + } + // recursive when check=true + if (check) { + const result = yield which(tool, false); + if (!result) { + if (ioUtil.IS_WINDOWS) { + throw new Error(`Unable to locate executable file: ${tool}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also verify the file has a valid extension for an executable file.`); + } + else { + throw new Error(`Unable to locate executable file: ${tool}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.`); + } + } + return result; + } + const matches = yield findInPath(tool); + if (matches && matches.length > 0) { + return matches[0]; + } + return ''; + }); +} +exports.which = which; +/** + * Returns a list of all occurrences of the given tool on the system path. + * + * @returns Promise<string[]> the paths of the tool + */ +function findInPath(tool) { + return __awaiter(this, void 0, void 0, function* () { + if (!tool) { + throw new Error("parameter 'tool' is required"); + } + // build the list of extensions to try + const extensions = []; + if (ioUtil.IS_WINDOWS && process.env['PATHEXT']) { + for (const extension of process.env['PATHEXT'].split(path.delimiter)) { + if (extension) { + extensions.push(extension); + } + } + } + // if it's rooted, return it if exists. otherwise return empty. + if (ioUtil.isRooted(tool)) { + const filePath = yield ioUtil.tryGetExecutablePath(tool, extensions); + if (filePath) { + return [filePath]; + } + return []; + } + // if any path separators, return empty + if (tool.includes(path.sep)) { + return []; + } + // build the list of directories + // + // Note, technically "where" checks the current directory on Windows. From a toolkit perspective, + // it feels like we should not do this. Checking the current directory seems like more of a use + // case of a shell, and the which() function exposed by the toolkit should strive for consistency + // across platforms. + const directories = []; + if (process.env.PATH) { + for (const p of process.env.PATH.split(path.delimiter)) { + if (p) { + directories.push(p); + } + } + } + // find all matches + const matches = []; + for (const directory of directories) { + const filePath = yield ioUtil.tryGetExecutablePath(path.join(directory, tool), extensions); + if (filePath) { + matches.push(filePath); + } + } + return matches; + }); +} +exports.findInPath = findInPath; +function readCopyOptions(options) { + const force = options.force == null ? true : options.force; + const recursive = Boolean(options.recursive); + const copySourceDirectory = options.copySourceDirectory == null + ? true + : Boolean(options.copySourceDirectory); + return { force, recursive, copySourceDirectory }; +} +function cpDirRecursive(sourceDir, destDir, currentDepth, force) { + return __awaiter(this, void 0, void 0, function* () { + // Ensure there is not a run away recursive copy + if (currentDepth >= 255) + return; + currentDepth++; + yield mkdirP(destDir); + const files = yield ioUtil.readdir(sourceDir); + for (const fileName of files) { + const srcFile = `${sourceDir}/${fileName}`; + const destFile = `${destDir}/${fileName}`; + const srcFileStat = yield ioUtil.lstat(srcFile); + if (srcFileStat.isDirectory()) { + // Recurse + yield cpDirRecursive(srcFile, destFile, currentDepth, force); + } + else { + yield copyFile(srcFile, destFile, force); + } + } + // Change the mode for the newly created directory + yield ioUtil.chmod(destDir, (yield ioUtil.stat(sourceDir)).mode); + }); +} +// Buffered file copy +function copyFile(srcFile, destFile, force) { + return __awaiter(this, void 0, void 0, function* () { + if ((yield ioUtil.lstat(srcFile)).isSymbolicLink()) { + // unlink/re-link it + try { + yield ioUtil.lstat(destFile); + yield ioUtil.unlink(destFile); + } + catch (e) { + // Try to override file permission + if (e.code === 'EPERM') { + yield ioUtil.chmod(destFile, '0666'); + yield ioUtil.unlink(destFile); + } + // other errors = it doesn't exist, no work to do + } + // Copy over symlink + const symlinkFull = yield ioUtil.readlink(srcFile); + yield ioUtil.symlink(symlinkFull, destFile, ioUtil.IS_WINDOWS ? 'junction' : null); + } + else if (!(yield ioUtil.exists(destFile)) || force) { + yield ioUtil.copyFile(srcFile, destFile); + } + }); +} +//# sourceMappingURL=io.js.map + +/***/ }), + /***/ 669: /***/ (function(module) { @@ -16397,6 +16794,25 @@ module.exports = require("util"); "use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { @@ -16408,9 +16824,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge }; var _a; Object.defineProperty(exports, "__esModule", { value: true }); -const assert_1 = __webpack_require__(357); -const fs = __webpack_require__(747); -const path = __webpack_require__(622); +exports.getCmdPath = exports.tryGetExecutablePath = exports.isRooted = exports.isDirectory = exports.exists = exports.IS_WINDOWS = exports.unlink = exports.symlink = exports.stat = exports.rmdir = exports.rename = exports.readlink = exports.readdir = exports.mkdir = exports.lstat = exports.copyFile = exports.chmod = void 0; +const fs = __importStar(__webpack_require__(747)); +const path = __importStar(__webpack_require__(622)); _a = fs.promises, exports.chmod = _a.chmod, exports.copyFile = _a.copyFile, exports.lstat = _a.lstat, exports.mkdir = _a.mkdir, exports.readdir = _a.readdir, exports.readlink = _a.readlink, exports.rename = _a.rename, exports.rmdir = _a.rmdir, exports.stat = _a.stat, exports.symlink = _a.symlink, exports.unlink = _a.unlink; exports.IS_WINDOWS = process.platform === 'win32'; function exists(fsPath) { @@ -16451,49 +16867,6 @@ function isRooted(p) { return p.startsWith('/'); } exports.isRooted = isRooted; -/** - * Recursively create a directory at `fsPath`. - * - * This implementation is optimistic, meaning it attempts to create the full - * path first, and backs up the path stack from there. - * - * @param fsPath The path to create - * @param maxDepth The maximum recursion depth - * @param depth The current recursion depth - */ -function mkdirP(fsPath, maxDepth = 1000, depth = 1) { - return __awaiter(this, void 0, void 0, function* () { - assert_1.ok(fsPath, 'a path argument must be provided'); - fsPath = path.resolve(fsPath); - if (depth >= maxDepth) - return exports.mkdir(fsPath); - try { - yield exports.mkdir(fsPath); - return; - } - catch (err) { - switch (err.code) { - case 'ENOENT': { - yield mkdirP(path.dirname(fsPath), maxDepth, depth + 1); - yield exports.mkdir(fsPath); - return; - } - default: { - let stats; - try { - stats = yield exports.stat(fsPath); - } - catch (err2) { - throw err; - } - if (!stats.isDirectory()) - throw err; - } - } - } - }); -} -exports.mkdirP = mkdirP; /** * Best effort attempt to determine whether a file exists and is executable. * @param filePath file path to check @@ -16590,6 +16963,12 @@ function isUnixExecutable(stats) { ((stats.mode & 8) > 0 && stats.gid === process.getgid()) || ((stats.mode & 64) > 0 && stats.uid === process.getuid())); } +// Get the path of cmd.exe in windows +function getCmdPath() { + var _a; + return (_a = process.env['COMSPEC']) !== null && _a !== void 0 ? _a : `cmd.exe`; +} +exports.getCmdPath = getCmdPath; //# sourceMappingURL=io-util.js.map /***/ }), @@ -37418,6 +37797,190 @@ function onceStrict (fn) { } +/***/ }), + +/***/ 971: +/***/ (function(__unusedmodule, exports, __webpack_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var _a; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getCmdPath = exports.tryGetExecutablePath = exports.isRooted = exports.isDirectory = exports.exists = exports.IS_WINDOWS = exports.unlink = exports.symlink = exports.stat = exports.rmdir = exports.rename = exports.readlink = exports.readdir = exports.mkdir = exports.lstat = exports.copyFile = exports.chmod = void 0; +const fs = __importStar(__webpack_require__(747)); +const path = __importStar(__webpack_require__(622)); +_a = fs.promises, exports.chmod = _a.chmod, exports.copyFile = _a.copyFile, exports.lstat = _a.lstat, exports.mkdir = _a.mkdir, exports.readdir = _a.readdir, exports.readlink = _a.readlink, exports.rename = _a.rename, exports.rmdir = _a.rmdir, exports.stat = _a.stat, exports.symlink = _a.symlink, exports.unlink = _a.unlink; +exports.IS_WINDOWS = process.platform === 'win32'; +function exists(fsPath) { + return __awaiter(this, void 0, void 0, function* () { + try { + yield exports.stat(fsPath); + } + catch (err) { + if (err.code === 'ENOENT') { + return false; + } + throw err; + } + return true; + }); +} +exports.exists = exists; +function isDirectory(fsPath, useStat = false) { + return __awaiter(this, void 0, void 0, function* () { + const stats = useStat ? yield exports.stat(fsPath) : yield exports.lstat(fsPath); + return stats.isDirectory(); + }); +} +exports.isDirectory = isDirectory; +/** + * On OSX/Linux, true if path starts with '/'. On Windows, true for paths like: + * \, \hello, \\hello\share, C:, and C:\hello (and corresponding alternate separator cases). + */ +function isRooted(p) { + p = normalizeSeparators(p); + if (!p) { + throw new Error('isRooted() parameter "p" cannot be empty'); + } + if (exports.IS_WINDOWS) { + return (p.startsWith('\\') || /^[A-Z]:/i.test(p) // e.g. \ or \hello or \\hello + ); // e.g. C: or C:\hello + } + return p.startsWith('/'); +} +exports.isRooted = isRooted; +/** + * Best effort attempt to determine whether a file exists and is executable. + * @param filePath file path to check + * @param extensions additional file extensions to try + * @return if file exists and is executable, returns the file path. otherwise empty string. + */ +function tryGetExecutablePath(filePath, extensions) { + return __awaiter(this, void 0, void 0, function* () { + let stats = undefined; + try { + // test file exists + stats = yield exports.stat(filePath); + } + catch (err) { + if (err.code !== 'ENOENT') { + // eslint-disable-next-line no-console + console.log(`Unexpected error attempting to determine if executable file exists '${filePath}': ${err}`); + } + } + if (stats && stats.isFile()) { + if (exports.IS_WINDOWS) { + // on Windows, test for valid extension + const upperExt = path.extname(filePath).toUpperCase(); + if (extensions.some(validExt => validExt.toUpperCase() === upperExt)) { + return filePath; + } + } + else { + if (isUnixExecutable(stats)) { + return filePath; + } + } + } + // try each extension + const originalFilePath = filePath; + for (const extension of extensions) { + filePath = originalFilePath + extension; + stats = undefined; + try { + stats = yield exports.stat(filePath); + } + catch (err) { + if (err.code !== 'ENOENT') { + // eslint-disable-next-line no-console + console.log(`Unexpected error attempting to determine if executable file exists '${filePath}': ${err}`); + } + } + if (stats && stats.isFile()) { + if (exports.IS_WINDOWS) { + // preserve the case of the actual file (since an extension was appended) + try { + const directory = path.dirname(filePath); + const upperName = path.basename(filePath).toUpperCase(); + for (const actualName of yield exports.readdir(directory)) { + if (upperName === actualName.toUpperCase()) { + filePath = path.join(directory, actualName); + break; + } + } + } + catch (err) { + // eslint-disable-next-line no-console + console.log(`Unexpected error attempting to determine the actual case of the file '${filePath}': ${err}`); + } + return filePath; + } + else { + if (isUnixExecutable(stats)) { + return filePath; + } + } + } + } + return ''; + }); +} +exports.tryGetExecutablePath = tryGetExecutablePath; +function normalizeSeparators(p) { + p = p || ''; + if (exports.IS_WINDOWS) { + // convert slashes on Windows + p = p.replace(/\//g, '\\'); + // remove redundant slashes + return p.replace(/\\\\+/g, '\\'); + } + // remove redundant slashes + return p.replace(/\/\/+/g, '/'); +} +// on Mac/Linux, test the execute bit +// R W X R W X R W X +// 256 128 64 32 16 8 4 2 1 +function isUnixExecutable(stats) { + return ((stats.mode & 1) > 0 || + ((stats.mode & 8) > 0 && stats.gid === process.getgid()) || + ((stats.mode & 64) > 0 && stats.uid === process.getuid())); +} +// Get the path of cmd.exe in windows +function getCmdPath() { + var _a; + return (_a = process.env['COMSPEC']) !== null && _a !== void 0 ? _a : `cmd.exe`; +} +exports.getCmdPath = getCmdPath; +//# sourceMappingURL=io-util.js.map + /***/ }), /***/ 976: diff --git a/package-lock.json b/package-lock.json index cccb7be..278ef35 100644 --- a/package-lock.json +++ b/package-lock.json @@ -59,18 +59,8 @@ } }, "@actions/io": { - "version": "file:actions-exec-1.1.1.tgz", - "integrity": "sha512-Tx9iCldWRCHdXshU+wFNrtf3ibEiIh38inEVVF1nvXrpDwyqECsa2E63VvpmO0BXr6/QOnCsOYthrf8zzQjTwQ==", - "requires": { - "@actions/io": "^1.0.1" - }, - "dependencies": { - "@actions/io": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@actions/io/-/io-1.1.2.tgz", - "integrity": "sha512-d+RwPlMp+2qmBfeLYPLXuSRykDIFEwdTA0MMxzS9kh4kvP1ftrc/9fzy6pX6qAjthdXruHQ6/6kjT/DNo5ALuw==" - } - } + "version": "file:actions-io-1.1.2.tgz", + "integrity": "sha512-/IuonxgI4LQ40baK2OdXByx6aH1/BwlzJGXeeRDjpXXL+KaFPMTC7uYjK4dCHBD96LQDZxKDbqjwbEuJfyzkWw==" }, "@actions/tool-cache": { "version": "1.1.2", diff --git a/package.json b/package.json index ea471b5..5d41f01 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "@actions/core": "^1.10.0", "@actions/exec": "^1.0.1", "@actions/github": "^2.2.0", - "@actions/io": "actions-exec-1.1.1.tgz", + "@actions/io": "actions-io-1.1.2.tgz", "@actions/tool-cache": "^1.1.2", "uuid": "^3.3.3" },