From 9580326150d2ee14fdc290ab1d7d5fa11e64f3e6 Mon Sep 17 00:00:00 2001 From: Danny McCormick <damccorm@microsoft.com> Date: Mon, 5 Aug 2019 14:46:03 -0400 Subject: [PATCH] Add correct tool-cache --- node_modules/.bin/shjs | 15 - node_modules/.bin/shjs.cmd | 7 - node_modules/@actions/exec/README.md | 12 +- node_modules/@actions/exec/lib/exec.d.ts | 24 +- node_modules/@actions/exec/lib/exec.js | 70 +- .../@actions/exec/lib/interfaces.d.ts | 70 +- node_modules/@actions/exec/lib/interfaces.js | 4 +- .../@actions/exec/lib/toolrunner.d.ts | 74 +- node_modules/@actions/exec/lib/toolrunner.js | 1144 ++++++++--------- node_modules/@actions/exit/LICENSE.md | 12 +- node_modules/@actions/exit/README.md | 12 +- node_modules/@actions/exit/lib/exit.d.ts | 58 +- node_modules/@actions/exit/lib/exit.js | 86 +- node_modules/@actions/io/README.md | 96 +- node_modules/@actions/io/lib/io-util.d.ts | 58 +- node_modules/@actions/io/lib/io-util.js | 386 +++--- node_modules/@actions/io/lib/io.d.ts | 96 +- node_modules/@actions/io/lib/io.js | 522 ++++---- node_modules/@actions/tool-cache/README.md | 89 +- .../@actions/tool-cache/lib/tool-cache.d.ts | 156 +-- .../@actions/tool-cache/lib/tool-cache.js | 873 +++++++------ .../@actions/tool-cache/lib/tool-cache.js.map | 2 +- node_modules/@actions/tool-cache/package.json | 6 +- .../tool-cache/scripts/Invoke-7zdec.ps1 | 118 +- node_modules/shelljs/.documentup.json | 6 - node_modules/shelljs/.jshintrc | 7 - node_modules/shelljs/.npmignore | 2 - node_modules/shelljs/.travis.yml | 5 - node_modules/shelljs/LICENSE | 26 - node_modules/shelljs/README.md | 569 -------- node_modules/shelljs/bin/shjs | 51 - node_modules/shelljs/global.js | 3 - node_modules/shelljs/make.js | 47 - node_modules/shelljs/package.json | 66 - node_modules/shelljs/scripts/generate-docs.js | 21 - node_modules/shelljs/scripts/run-tests.js | 50 - node_modules/shelljs/shell.js | 157 --- node_modules/shelljs/src/cat.js | 43 - node_modules/shelljs/src/cd.js | 19 - node_modules/shelljs/src/chmod.js | 208 --- node_modules/shelljs/src/common.js | 203 --- node_modules/shelljs/src/cp.js | 201 --- node_modules/shelljs/src/dirs.js | 191 --- node_modules/shelljs/src/echo.js | 20 - node_modules/shelljs/src/error.js | 10 - node_modules/shelljs/src/exec.js | 181 --- node_modules/shelljs/src/find.js | 51 - node_modules/shelljs/src/grep.js | 52 - node_modules/shelljs/src/ln.js | 53 - node_modules/shelljs/src/ls.js | 126 -- node_modules/shelljs/src/mkdir.js | 68 - node_modules/shelljs/src/mv.js | 80 -- node_modules/shelljs/src/popd.js | 1 - node_modules/shelljs/src/pushd.js | 1 - node_modules/shelljs/src/pwd.js | 11 - node_modules/shelljs/src/rm.js | 145 --- node_modules/shelljs/src/sed.js | 43 - node_modules/shelljs/src/tempdir.js | 56 - node_modules/shelljs/src/test.js | 85 -- node_modules/shelljs/src/to.js | 29 - node_modules/shelljs/src/toEnd.js | 29 - node_modules/shelljs/src/which.js | 83 -- package-lock.json | 8 +- package.json | 4 +- toolkit/actions-tool-cache-0.0.0.tgz | Bin 118504 -> 119066 bytes 65 files changed, 2024 insertions(+), 4977 deletions(-) delete mode 100644 node_modules/.bin/shjs delete mode 100644 node_modules/.bin/shjs.cmd delete mode 100644 node_modules/shelljs/.documentup.json delete mode 100644 node_modules/shelljs/.jshintrc delete mode 100644 node_modules/shelljs/.npmignore delete mode 100644 node_modules/shelljs/.travis.yml delete mode 100644 node_modules/shelljs/LICENSE delete mode 100644 node_modules/shelljs/README.md delete mode 100644 node_modules/shelljs/bin/shjs delete mode 100644 node_modules/shelljs/global.js delete mode 100644 node_modules/shelljs/make.js delete mode 100644 node_modules/shelljs/package.json delete mode 100644 node_modules/shelljs/scripts/generate-docs.js delete mode 100644 node_modules/shelljs/scripts/run-tests.js delete mode 100644 node_modules/shelljs/shell.js delete mode 100644 node_modules/shelljs/src/cat.js delete mode 100644 node_modules/shelljs/src/cd.js delete mode 100644 node_modules/shelljs/src/chmod.js delete mode 100644 node_modules/shelljs/src/common.js delete mode 100644 node_modules/shelljs/src/cp.js delete mode 100644 node_modules/shelljs/src/dirs.js delete mode 100644 node_modules/shelljs/src/echo.js delete mode 100644 node_modules/shelljs/src/error.js delete mode 100644 node_modules/shelljs/src/exec.js delete mode 100644 node_modules/shelljs/src/find.js delete mode 100644 node_modules/shelljs/src/grep.js delete mode 100644 node_modules/shelljs/src/ln.js delete mode 100644 node_modules/shelljs/src/ls.js delete mode 100644 node_modules/shelljs/src/mkdir.js delete mode 100644 node_modules/shelljs/src/mv.js delete mode 100644 node_modules/shelljs/src/popd.js delete mode 100644 node_modules/shelljs/src/pushd.js delete mode 100644 node_modules/shelljs/src/pwd.js delete mode 100644 node_modules/shelljs/src/rm.js delete mode 100644 node_modules/shelljs/src/sed.js delete mode 100644 node_modules/shelljs/src/tempdir.js delete mode 100644 node_modules/shelljs/src/test.js delete mode 100644 node_modules/shelljs/src/to.js delete mode 100644 node_modules/shelljs/src/toEnd.js delete mode 100644 node_modules/shelljs/src/which.js diff --git a/node_modules/.bin/shjs b/node_modules/.bin/shjs deleted file mode 100644 index 1d45691b..00000000 --- a/node_modules/.bin/shjs +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh -basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") - -case `uname` in - *CYGWIN*) basedir=`cygpath -w "$basedir"`;; -esac - -if [ -x "$basedir/node" ]; then - "$basedir/node" "$basedir/../shelljs/bin/shjs" "$@" - ret=$? -else - node "$basedir/../shelljs/bin/shjs" "$@" - ret=$? -fi -exit $ret diff --git a/node_modules/.bin/shjs.cmd b/node_modules/.bin/shjs.cmd deleted file mode 100644 index 3d98b0bc..00000000 --- a/node_modules/.bin/shjs.cmd +++ /dev/null @@ -1,7 +0,0 @@ -@IF EXIST "%~dp0\node.exe" ( - "%~dp0\node.exe" "%~dp0\..\shelljs\bin\shjs" %* -) ELSE ( - @SETLOCAL - @SET PATHEXT=%PATHEXT:;.JS;=;% - node "%~dp0\..\shelljs\bin\shjs" %* -) \ No newline at end of file diff --git a/node_modules/@actions/exec/README.md b/node_modules/@actions/exec/README.md index 3529e500..354acdcb 100644 --- a/node_modules/@actions/exec/README.md +++ b/node_modules/@actions/exec/README.md @@ -1,7 +1,7 @@ -# `@actions/exec` - -> Functions necessary for running tools on the command line - -## Usage - +# `@actions/exec` + +> Functions necessary for running tools on the command line + +## Usage + See [src/exec.ts](src/exec.ts). \ No newline at end of file diff --git a/node_modules/@actions/exec/lib/exec.d.ts b/node_modules/@actions/exec/lib/exec.d.ts index 5c8f3b3e..8c64aae3 100644 --- a/node_modules/@actions/exec/lib/exec.d.ts +++ b/node_modules/@actions/exec/lib/exec.d.ts @@ -1,12 +1,12 @@ -import * as im from './interfaces'; -/** - * Exec a command. - * Output will be streamed to the live console. - * Returns promise with return code - * - * @param commandLine command to execute (can include additional args). Must be correctly escaped. - * @param args optional arguments for tool. Escaping is handled by the lib. - * @param options optional exec options. See ExecOptions - * @returns Promise<number> exit code - */ -export declare function exec(commandLine: string, args?: string[], options?: im.ExecOptions): Promise<number>; +import * as im from './interfaces'; +/** + * Exec a command. + * Output will be streamed to the live console. + * Returns promise with return code + * + * @param commandLine command to execute (can include additional args). Must be correctly escaped. + * @param args optional arguments for tool. Escaping is handled by the lib. + * @param options optional exec options. See ExecOptions + * @returns Promise<number> exit code + */ +export declare function exec(commandLine: string, args?: string[], options?: im.ExecOptions): Promise<number>; diff --git a/node_modules/@actions/exec/lib/exec.js b/node_modules/@actions/exec/lib/exec.js index e4679276..fadab335 100644 --- a/node_modules/@actions/exec/lib/exec.js +++ b/node_modules/@actions/exec/lib/exec.js @@ -1,36 +1,36 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - 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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const tr = require("./toolrunner"); -/** - * Exec a command. - * Output will be streamed to the live console. - * Returns promise with return code - * - * @param commandLine command to execute (can include additional args). Must be correctly escaped. - * @param args optional arguments for tool. Escaping is handled by the lib. - * @param options optional exec options. See ExecOptions - * @returns Promise<number> exit code - */ -function exec(commandLine, args, options) { - return __awaiter(this, void 0, void 0, function* () { - const commandArgs = tr.argStringToArray(commandLine); - if (commandArgs.length === 0) { - throw new Error(`Parameter 'commandLine' cannot be null or empty.`); - } - // Path to tool to execute should be first arg - const toolPath = commandArgs[0]; - args = commandArgs.slice(1).concat(args || []); - const runner = new tr.ToolRunner(toolPath, args, options); - return runner.exec(); - }); -} -exports.exec = exec; +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + 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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const tr = require("./toolrunner"); +/** + * Exec a command. + * Output will be streamed to the live console. + * Returns promise with return code + * + * @param commandLine command to execute (can include additional args). Must be correctly escaped. + * @param args optional arguments for tool. Escaping is handled by the lib. + * @param options optional exec options. See ExecOptions + * @returns Promise<number> exit code + */ +function exec(commandLine, args, options) { + return __awaiter(this, void 0, void 0, function* () { + const commandArgs = tr.argStringToArray(commandLine); + if (commandArgs.length === 0) { + throw new Error(`Parameter 'commandLine' cannot be null or empty.`); + } + // Path to tool to execute should be first arg + const toolPath = commandArgs[0]; + args = commandArgs.slice(1).concat(args || []); + const runner = new tr.ToolRunner(toolPath, args, options); + return runner.exec(); + }); +} +exports.exec = exec; //# sourceMappingURL=exec.js.map \ No newline at end of file diff --git a/node_modules/@actions/exec/lib/interfaces.d.ts b/node_modules/@actions/exec/lib/interfaces.d.ts index 0d7202af..18618237 100644 --- a/node_modules/@actions/exec/lib/interfaces.d.ts +++ b/node_modules/@actions/exec/lib/interfaces.d.ts @@ -1,35 +1,35 @@ -/// <reference types="node" /> -import * as stream from 'stream'; -/** - * Interface for exec options - */ -export interface ExecOptions { - /** optional working directory. defaults to current */ - cwd?: string; - /** optional envvar dictionary. defaults to current process's env */ - env?: { - [key: string]: string; - }; - /** optional. defaults to false */ - silent?: boolean; - /** optional out stream to use. Defaults to process.stdout */ - outStream?: stream.Writable; - /** optional err stream to use. Defaults to process.stderr */ - errStream?: stream.Writable; - /** optional. whether to skip quoting/escaping arguments if needed. defaults to false. */ - windowsVerbatimArguments?: boolean; - /** optional. whether to fail if output to stderr. defaults to false */ - failOnStdErr?: boolean; - /** optional. defaults to failing on non zero. ignore will not fail leaving it up to the caller */ - ignoreReturnCode?: boolean; - /** optional. How long in ms to wait for STDIO streams to close after the exit event of the process before terminating. defaults to 10000 */ - delay?: number; - /** optional. Listeners for output. Callback functions that will be called on these events */ - listeners?: { - stdout?: (data: Buffer) => void; - stderr?: (data: Buffer) => void; - stdline?: (data: string) => void; - errline?: (data: string) => void; - debug?: (data: string) => void; - }; -} +/// <reference types="node" /> +import * as stream from 'stream'; +/** + * Interface for exec options + */ +export interface ExecOptions { + /** optional working directory. defaults to current */ + cwd?: string; + /** optional envvar dictionary. defaults to current process's env */ + env?: { + [key: string]: string; + }; + /** optional. defaults to false */ + silent?: boolean; + /** optional out stream to use. Defaults to process.stdout */ + outStream?: stream.Writable; + /** optional err stream to use. Defaults to process.stderr */ + errStream?: stream.Writable; + /** optional. whether to skip quoting/escaping arguments if needed. defaults to false. */ + windowsVerbatimArguments?: boolean; + /** optional. whether to fail if output to stderr. defaults to false */ + failOnStdErr?: boolean; + /** optional. defaults to failing on non zero. ignore will not fail leaving it up to the caller */ + ignoreReturnCode?: boolean; + /** optional. How long in ms to wait for STDIO streams to close after the exit event of the process before terminating. defaults to 10000 */ + delay?: number; + /** optional. Listeners for output. Callback functions that will be called on these events */ + listeners?: { + stdout?: (data: Buffer) => void; + stderr?: (data: Buffer) => void; + stdline?: (data: string) => void; + errline?: (data: string) => void; + debug?: (data: string) => void; + }; +} diff --git a/node_modules/@actions/exec/lib/interfaces.js b/node_modules/@actions/exec/lib/interfaces.js index e979780f..db919115 100644 --- a/node_modules/@actions/exec/lib/interfaces.js +++ b/node_modules/@actions/exec/lib/interfaces.js @@ -1,3 +1,3 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); //# sourceMappingURL=interfaces.js.map \ No newline at end of file diff --git a/node_modules/@actions/exec/lib/toolrunner.d.ts b/node_modules/@actions/exec/lib/toolrunner.d.ts index 71198dac..9bbbb1ea 100644 --- a/node_modules/@actions/exec/lib/toolrunner.d.ts +++ b/node_modules/@actions/exec/lib/toolrunner.d.ts @@ -1,37 +1,37 @@ -/// <reference types="node" /> -import * as events from 'events'; -import * as im from './interfaces'; -export declare class ToolRunner extends events.EventEmitter { - constructor(toolPath: string, args?: string[], options?: im.ExecOptions); - private toolPath; - private args; - private options; - private _debug; - private _getCommandString; - private _processLineBuffer; - private _getSpawnFileName; - private _getSpawnArgs; - private _endsWith; - private _isCmdFile; - private _windowsQuoteCmdArg; - private _uvQuoteCmdArg; - private _cloneExecOptions; - private _getSpawnOptions; - /** - * Exec a tool. - * Output will be streamed to the live console. - * Returns promise with return code - * - * @param tool path to tool to exec - * @param options optional exec options. See ExecOptions - * @returns number - */ - exec(): Promise<number>; -} -/** - * Convert an arg string to an array of args. Handles escaping - * - * @param argString string of arguments - * @returns string[] array of arguments - */ -export declare function argStringToArray(argString: string): string[]; +/// <reference types="node" /> +import * as events from 'events'; +import * as im from './interfaces'; +export declare class ToolRunner extends events.EventEmitter { + constructor(toolPath: string, args?: string[], options?: im.ExecOptions); + private toolPath; + private args; + private options; + private _debug; + private _getCommandString; + private _processLineBuffer; + private _getSpawnFileName; + private _getSpawnArgs; + private _endsWith; + private _isCmdFile; + private _windowsQuoteCmdArg; + private _uvQuoteCmdArg; + private _cloneExecOptions; + private _getSpawnOptions; + /** + * Exec a tool. + * Output will be streamed to the live console. + * Returns promise with return code + * + * @param tool path to tool to exec + * @param options optional exec options. See ExecOptions + * @returns number + */ + exec(): Promise<number>; +} +/** + * Convert an arg string to an array of args. Handles escaping + * + * @param argString string of arguments + * @returns string[] array of arguments + */ +export declare function argStringToArray(argString: string): string[]; diff --git a/node_modules/@actions/exec/lib/toolrunner.js b/node_modules/@actions/exec/lib/toolrunner.js index 6ed5a52a..901cbb57 100644 --- a/node_modules/@actions/exec/lib/toolrunner.js +++ b/node_modules/@actions/exec/lib/toolrunner.js @@ -1,573 +1,573 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - 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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const os = require("os"); -const events = require("events"); -const child = require("child_process"); -/* eslint-disable @typescript-eslint/unbound-method */ -const IS_WINDOWS = process.platform === 'win32'; -/* - * Class for running command line tools. Handles quoting and arg parsing in a platform agnostic way. - */ -class ToolRunner extends events.EventEmitter { - constructor(toolPath, args, options) { - super(); - if (!toolPath) { - throw new Error("Parameter 'toolPath' cannot be null or empty."); - } - this.toolPath = toolPath; - this.args = args || []; - this.options = options || {}; - } - _debug(message) { - if (this.options.listeners && this.options.listeners.debug) { - this.options.listeners.debug(message); - } - } - _getCommandString(options, noPrefix) { - const toolPath = this._getSpawnFileName(); - const args = this._getSpawnArgs(options); - let cmd = noPrefix ? '' : '[command]'; // omit prefix when piped to a second tool - if (IS_WINDOWS) { - // Windows + cmd file - if (this._isCmdFile()) { - cmd += toolPath; - for (const a of args) { - cmd += ` ${a}`; - } - } - // Windows + verbatim - else if (options.windowsVerbatimArguments) { - cmd += `"${toolPath}"`; - for (const a of args) { - cmd += ` ${a}`; - } - } - // Windows (regular) - else { - cmd += this._windowsQuoteCmdArg(toolPath); - for (const a of args) { - cmd += ` ${this._windowsQuoteCmdArg(a)}`; - } - } - } - else { - // OSX/Linux - this can likely be improved with some form of quoting. - // creating processes on Unix is fundamentally different than Windows. - // on Unix, execvp() takes an arg array. - cmd += toolPath; - for (const a of args) { - cmd += ` ${a}`; - } - } - return cmd; - } - _processLineBuffer(data, strBuffer, onLine) { - try { - let s = strBuffer + data.toString(); - let n = s.indexOf(os.EOL); - while (n > -1) { - const line = s.substring(0, n); - onLine(line); - // the rest of the string ... - s = s.substring(n + os.EOL.length); - n = s.indexOf(os.EOL); - } - strBuffer = s; - } - catch (err) { - // streaming lines to console is best effort. Don't fail a build. - this._debug(`error processing line. Failed with error ${err}`); - } - } - _getSpawnFileName() { - if (IS_WINDOWS) { - if (this._isCmdFile()) { - return process.env['COMSPEC'] || 'cmd.exe'; - } - } - return this.toolPath; - } - _getSpawnArgs(options) { - if (IS_WINDOWS) { - if (this._isCmdFile()) { - let argline = `/D /S /C "${this._windowsQuoteCmdArg(this.toolPath)}`; - for (const a of this.args) { - argline += ' '; - argline += options.windowsVerbatimArguments - ? a - : this._windowsQuoteCmdArg(a); - } - argline += '"'; - return [argline]; - } - } - return this.args; - } - _endsWith(str, end) { - return str.endsWith(end); - } - _isCmdFile() { - const upperToolPath = this.toolPath.toUpperCase(); - return (this._endsWith(upperToolPath, '.CMD') || - this._endsWith(upperToolPath, '.BAT')); - } - _windowsQuoteCmdArg(arg) { - // for .exe, apply the normal quoting rules that libuv applies - if (!this._isCmdFile()) { - return this._uvQuoteCmdArg(arg); - } - // otherwise apply quoting rules specific to the cmd.exe command line parser. - // the libuv rules are generic and are not designed specifically for cmd.exe - // command line parser. - // - // for a detailed description of the cmd.exe command line parser, refer to - // http://stackoverflow.com/questions/4094699/how-does-the-windows-command-interpreter-cmd-exe-parse-scripts/7970912#7970912 - // need quotes for empty arg - if (!arg) { - return '""'; - } - // determine whether the arg needs to be quoted - const cmdSpecialChars = [ - ' ', - '\t', - '&', - '(', - ')', - '[', - ']', - '{', - '}', - '^', - '=', - ';', - '!', - "'", - '+', - ',', - '`', - '~', - '|', - '<', - '>', - '"' - ]; - let needsQuotes = false; - for (const char of arg) { - if (cmdSpecialChars.some(x => x === char)) { - needsQuotes = true; - break; - } - } - // short-circuit if quotes not needed - if (!needsQuotes) { - return arg; - } - // the following quoting rules are very similar to the rules that by libuv applies. - // - // 1) wrap the string in quotes - // - // 2) double-up quotes - i.e. " => "" - // - // this is different from the libuv quoting rules. libuv replaces " with \", which unfortunately - // doesn't work well with a cmd.exe command line. - // - // note, replacing " with "" also works well if the arg is passed to a downstream .NET console app. - // for example, the command line: - // foo.exe "myarg:""my val""" - // is parsed by a .NET console app into an arg array: - // [ "myarg:\"my val\"" ] - // which is the same end result when applying libuv quoting rules. although the actual - // command line from libuv quoting rules would look like: - // foo.exe "myarg:\"my val\"" - // - // 3) double-up slashes that preceed a quote, - // e.g. hello \world => "hello \world" - // hello\"world => "hello\\""world" - // hello\\"world => "hello\\\\""world" - // hello world\ => "hello world\\" - // - // technically this is not required for a cmd.exe command line, or the batch argument parser. - // the reasons for including this as a .cmd quoting rule are: - // - // a) this is optimized for the scenario where the argument is passed from the .cmd file to an - // external program. many programs (e.g. .NET console apps) rely on the slash-doubling rule. - // - // b) it's what we've been doing previously (by deferring to node default behavior) and we - // haven't heard any complaints about that aspect. - // - // note, a weakness of the quoting rules chosen here, is that % is not escaped. in fact, % cannot be - // escaped when used on the command line directly - even though within a .cmd file % can be escaped - // by using %%. - // - // the saving grace is, on the command line, %var% is left as-is if var is not defined. this contrasts - // the line parsing rules within a .cmd file, where if var is not defined it is replaced with nothing. - // - // one option that was explored was replacing % with ^% - i.e. %var% => ^%var^%. this hack would - // often work, since it is unlikely that var^ would exist, and the ^ character is removed when the - // variable is used. the problem, however, is that ^ is not removed when %* is used to pass the args - // to an external program. - // - // an unexplored potential solution for the % escaping problem, is to create a wrapper .cmd file. - // % can be escaped within a .cmd file. - let reverse = '"'; - let quoteHit = true; - for (let i = arg.length; i > 0; i--) { - // walk the string in reverse - reverse += arg[i - 1]; - if (quoteHit && arg[i - 1] === '\\') { - reverse += '\\'; // double the slash - } - else if (arg[i - 1] === '"') { - quoteHit = true; - reverse += '"'; // double the quote - } - else { - quoteHit = false; - } - } - reverse += '"'; - return reverse - .split('') - .reverse() - .join(''); - } - _uvQuoteCmdArg(arg) { - // Tool runner wraps child_process.spawn() and needs to apply the same quoting as - // Node in certain cases where the undocumented spawn option windowsVerbatimArguments - // is used. - // - // Since this function is a port of quote_cmd_arg from Node 4.x (technically, lib UV, - // see https://github.com/nodejs/node/blob/v4.x/deps/uv/src/win/process.c for details), - // pasting copyright notice from Node within this function: - // - // Copyright Joyent, Inc. and other Node contributors. All rights reserved. - // - // Permission is hereby granted, free of charge, to any person obtaining a copy - // of this software and associated documentation files (the "Software"), to - // deal in the Software without restriction, including without limitation the - // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - // sell copies of the Software, and to permit persons to whom the Software is - // furnished to do so, subject to the following conditions: - // - // The above copyright notice and this permission notice shall be included in - // all copies or substantial portions of the Software. - // - // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - // IN THE SOFTWARE. - if (!arg) { - // Need double quotation for empty argument - return '""'; - } - if (!arg.includes(' ') && !arg.includes('\t') && !arg.includes('"')) { - // No quotation needed - return arg; - } - if (!arg.includes('"') && !arg.includes('\\')) { - // No embedded double quotes or backslashes, so I can just wrap - // quote marks around the whole thing. - return `"${arg}"`; - } - // Expected input/output: - // input : hello"world - // output: "hello\"world" - // input : hello""world - // output: "hello\"\"world" - // input : hello\world - // output: hello\world - // input : hello\\world - // output: hello\\world - // input : hello\"world - // output: "hello\\\"world" - // input : hello\\"world - // output: "hello\\\\\"world" - // input : hello world\ - // output: "hello world\\" - note the comment in libuv actually reads "hello world\" - // but it appears the comment is wrong, it should be "hello world\\" - let reverse = '"'; - let quoteHit = true; - for (let i = arg.length; i > 0; i--) { - // walk the string in reverse - reverse += arg[i - 1]; - if (quoteHit && arg[i - 1] === '\\') { - reverse += '\\'; - } - else if (arg[i - 1] === '"') { - quoteHit = true; - reverse += '\\'; - } - else { - quoteHit = false; - } - } - reverse += '"'; - return reverse - .split('') - .reverse() - .join(''); - } - _cloneExecOptions(options) { - options = options || {}; - const result = { - cwd: options.cwd || process.cwd(), - env: options.env || process.env, - silent: options.silent || false, - windowsVerbatimArguments: options.windowsVerbatimArguments || false, - failOnStdErr: options.failOnStdErr || false, - ignoreReturnCode: options.ignoreReturnCode || false, - delay: options.delay || 10000 - }; - result.outStream = options.outStream || process.stdout; - result.errStream = options.errStream || process.stderr; - return result; - } - _getSpawnOptions(options, toolPath) { - options = options || {}; - const result = {}; - result.cwd = options.cwd; - result.env = options.env; - result['windowsVerbatimArguments'] = - options.windowsVerbatimArguments || this._isCmdFile(); - if (options.windowsVerbatimArguments) { - result.argv0 = `"${toolPath}"`; - } - return result; - } - /** - * Exec a tool. - * Output will be streamed to the live console. - * Returns promise with return code - * - * @param tool path to tool to exec - * @param options optional exec options. See ExecOptions - * @returns number - */ - exec() { - return __awaiter(this, void 0, void 0, function* () { - return new Promise((resolve, reject) => { - this._debug(`exec tool: ${this.toolPath}`); - this._debug('arguments:'); - for (const arg of this.args) { - this._debug(` ${arg}`); - } - const optionsNonNull = this._cloneExecOptions(this.options); - if (!optionsNonNull.silent && optionsNonNull.outStream) { - optionsNonNull.outStream.write(this._getCommandString(optionsNonNull) + os.EOL); - } - const state = new ExecState(optionsNonNull, this.toolPath); - state.on('debug', (message) => { - this._debug(message); - }); - const fileName = this._getSpawnFileName(); - const cp = child.spawn(fileName, this._getSpawnArgs(optionsNonNull), this._getSpawnOptions(this.options, fileName)); - const stdbuffer = ''; - if (cp.stdout) { - cp.stdout.on('data', (data) => { - if (this.options.listeners && this.options.listeners.stdout) { - this.options.listeners.stdout(data); - } - if (!optionsNonNull.silent && optionsNonNull.outStream) { - optionsNonNull.outStream.write(data); - } - this._processLineBuffer(data, stdbuffer, (line) => { - if (this.options.listeners && this.options.listeners.stdline) { - this.options.listeners.stdline(line); - } - }); - }); - } - const errbuffer = ''; - if (cp.stderr) { - cp.stderr.on('data', (data) => { - state.processStderr = true; - if (this.options.listeners && this.options.listeners.stderr) { - this.options.listeners.stderr(data); - } - if (!optionsNonNull.silent && - optionsNonNull.errStream && - optionsNonNull.outStream) { - const s = optionsNonNull.failOnStdErr - ? optionsNonNull.errStream - : optionsNonNull.outStream; - s.write(data); - } - this._processLineBuffer(data, errbuffer, (line) => { - if (this.options.listeners && this.options.listeners.errline) { - this.options.listeners.errline(line); - } - }); - }); - } - cp.on('error', (err) => { - state.processError = err.message; - state.processExited = true; - state.processClosed = true; - state.CheckComplete(); - }); - cp.on('exit', (code) => { - state.processExitCode = code; - state.processExited = true; - this._debug(`Exit code ${code} received from tool '${this.toolPath}'`); - state.CheckComplete(); - }); - cp.on('close', (code) => { - state.processExitCode = code; - state.processExited = true; - state.processClosed = true; - this._debug(`STDIO streams have closed for tool '${this.toolPath}'`); - state.CheckComplete(); - }); - state.on('done', (error, exitCode) => { - if (stdbuffer.length > 0) { - this.emit('stdline', stdbuffer); - } - if (errbuffer.length > 0) { - this.emit('errline', errbuffer); - } - cp.removeAllListeners(); - if (error) { - reject(error); - } - else { - resolve(exitCode); - } - }); - }); - }); - } -} -exports.ToolRunner = ToolRunner; -/** - * Convert an arg string to an array of args. Handles escaping - * - * @param argString string of arguments - * @returns string[] array of arguments - */ -function argStringToArray(argString) { - const args = []; - let inQuotes = false; - let escaped = false; - let arg = ''; - function append(c) { - // we only escape double quotes. - if (escaped && c !== '"') { - arg += '\\'; - } - arg += c; - escaped = false; - } - for (let i = 0; i < argString.length; i++) { - const c = argString.charAt(i); - if (c === '"') { - if (!escaped) { - inQuotes = !inQuotes; - } - else { - append(c); - } - continue; - } - if (c === '\\' && escaped) { - append(c); - continue; - } - if (c === '\\' && inQuotes) { - escaped = true; - continue; - } - if (c === ' ' && !inQuotes) { - if (arg.length > 0) { - args.push(arg); - arg = ''; - } - continue; - } - append(c); - } - if (arg.length > 0) { - args.push(arg.trim()); - } - return args; -} -exports.argStringToArray = argStringToArray; -class ExecState extends events.EventEmitter { - constructor(options, toolPath) { - super(); - this.processClosed = false; // tracks whether the process has exited and stdio is closed - this.processError = ''; - this.processExitCode = 0; - this.processExited = false; // tracks whether the process has exited - this.processStderr = false; // tracks whether stderr was written to - this.delay = 10000; // 10 seconds - this.done = false; - this.timeout = null; - if (!toolPath) { - throw new Error('toolPath must not be empty'); - } - this.options = options; - this.toolPath = toolPath; - if (options.delay) { - this.delay = options.delay; - } - } - CheckComplete() { - if (this.done) { - return; - } - if (this.processClosed) { - this._setResult(); - } - else if (this.processExited) { - this.timeout = setTimeout(ExecState.HandleTimeout, this.delay, this); - } - } - _debug(message) { - this.emit('debug', message); - } - _setResult() { - // determine whether there is an error - let error; - if (this.processExited) { - if (this.processError) { - error = new Error(`There was an error when attempting to execute the process '${this.toolPath}'. This may indicate the process failed to start. Error: ${this.processError}`); - } - else if (this.processExitCode !== 0 && !this.options.ignoreReturnCode) { - error = new Error(`The process '${this.toolPath}' failed with exit code ${this.processExitCode}`); - } - else if (this.processStderr && this.options.failOnStdErr) { - error = new Error(`The process '${this.toolPath}' failed because one or more lines were written to the STDERR stream`); - } - } - // clear the timeout - if (this.timeout) { - clearTimeout(this.timeout); - this.timeout = null; - } - this.done = true; - this.emit('done', error, this.processExitCode); - } - static HandleTimeout(state) { - if (state.done) { - return; - } - if (!state.processClosed && state.processExited) { - const message = `The STDIO streams did not close within ${state.delay / - 1000} seconds of the exit event from process '${state.toolPath}'. This may indicate a child process inherited the STDIO streams and has not yet exited.`; - state._debug(message); - } - state._setResult(); - } -} +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + 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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const os = require("os"); +const events = require("events"); +const child = require("child_process"); +/* eslint-disable @typescript-eslint/unbound-method */ +const IS_WINDOWS = process.platform === 'win32'; +/* + * Class for running command line tools. Handles quoting and arg parsing in a platform agnostic way. + */ +class ToolRunner extends events.EventEmitter { + constructor(toolPath, args, options) { + super(); + if (!toolPath) { + throw new Error("Parameter 'toolPath' cannot be null or empty."); + } + this.toolPath = toolPath; + this.args = args || []; + this.options = options || {}; + } + _debug(message) { + if (this.options.listeners && this.options.listeners.debug) { + this.options.listeners.debug(message); + } + } + _getCommandString(options, noPrefix) { + const toolPath = this._getSpawnFileName(); + const args = this._getSpawnArgs(options); + let cmd = noPrefix ? '' : '[command]'; // omit prefix when piped to a second tool + if (IS_WINDOWS) { + // Windows + cmd file + if (this._isCmdFile()) { + cmd += toolPath; + for (const a of args) { + cmd += ` ${a}`; + } + } + // Windows + verbatim + else if (options.windowsVerbatimArguments) { + cmd += `"${toolPath}"`; + for (const a of args) { + cmd += ` ${a}`; + } + } + // Windows (regular) + else { + cmd += this._windowsQuoteCmdArg(toolPath); + for (const a of args) { + cmd += ` ${this._windowsQuoteCmdArg(a)}`; + } + } + } + else { + // OSX/Linux - this can likely be improved with some form of quoting. + // creating processes on Unix is fundamentally different than Windows. + // on Unix, execvp() takes an arg array. + cmd += toolPath; + for (const a of args) { + cmd += ` ${a}`; + } + } + return cmd; + } + _processLineBuffer(data, strBuffer, onLine) { + try { + let s = strBuffer + data.toString(); + let n = s.indexOf(os.EOL); + while (n > -1) { + const line = s.substring(0, n); + onLine(line); + // the rest of the string ... + s = s.substring(n + os.EOL.length); + n = s.indexOf(os.EOL); + } + strBuffer = s; + } + catch (err) { + // streaming lines to console is best effort. Don't fail a build. + this._debug(`error processing line. Failed with error ${err}`); + } + } + _getSpawnFileName() { + if (IS_WINDOWS) { + if (this._isCmdFile()) { + return process.env['COMSPEC'] || 'cmd.exe'; + } + } + return this.toolPath; + } + _getSpawnArgs(options) { + if (IS_WINDOWS) { + if (this._isCmdFile()) { + let argline = `/D /S /C "${this._windowsQuoteCmdArg(this.toolPath)}`; + for (const a of this.args) { + argline += ' '; + argline += options.windowsVerbatimArguments + ? a + : this._windowsQuoteCmdArg(a); + } + argline += '"'; + return [argline]; + } + } + return this.args; + } + _endsWith(str, end) { + return str.endsWith(end); + } + _isCmdFile() { + const upperToolPath = this.toolPath.toUpperCase(); + return (this._endsWith(upperToolPath, '.CMD') || + this._endsWith(upperToolPath, '.BAT')); + } + _windowsQuoteCmdArg(arg) { + // for .exe, apply the normal quoting rules that libuv applies + if (!this._isCmdFile()) { + return this._uvQuoteCmdArg(arg); + } + // otherwise apply quoting rules specific to the cmd.exe command line parser. + // the libuv rules are generic and are not designed specifically for cmd.exe + // command line parser. + // + // for a detailed description of the cmd.exe command line parser, refer to + // http://stackoverflow.com/questions/4094699/how-does-the-windows-command-interpreter-cmd-exe-parse-scripts/7970912#7970912 + // need quotes for empty arg + if (!arg) { + return '""'; + } + // determine whether the arg needs to be quoted + const cmdSpecialChars = [ + ' ', + '\t', + '&', + '(', + ')', + '[', + ']', + '{', + '}', + '^', + '=', + ';', + '!', + "'", + '+', + ',', + '`', + '~', + '|', + '<', + '>', + '"' + ]; + let needsQuotes = false; + for (const char of arg) { + if (cmdSpecialChars.some(x => x === char)) { + needsQuotes = true; + break; + } + } + // short-circuit if quotes not needed + if (!needsQuotes) { + return arg; + } + // the following quoting rules are very similar to the rules that by libuv applies. + // + // 1) wrap the string in quotes + // + // 2) double-up quotes - i.e. " => "" + // + // this is different from the libuv quoting rules. libuv replaces " with \", which unfortunately + // doesn't work well with a cmd.exe command line. + // + // note, replacing " with "" also works well if the arg is passed to a downstream .NET console app. + // for example, the command line: + // foo.exe "myarg:""my val""" + // is parsed by a .NET console app into an arg array: + // [ "myarg:\"my val\"" ] + // which is the same end result when applying libuv quoting rules. although the actual + // command line from libuv quoting rules would look like: + // foo.exe "myarg:\"my val\"" + // + // 3) double-up slashes that preceed a quote, + // e.g. hello \world => "hello \world" + // hello\"world => "hello\\""world" + // hello\\"world => "hello\\\\""world" + // hello world\ => "hello world\\" + // + // technically this is not required for a cmd.exe command line, or the batch argument parser. + // the reasons for including this as a .cmd quoting rule are: + // + // a) this is optimized for the scenario where the argument is passed from the .cmd file to an + // external program. many programs (e.g. .NET console apps) rely on the slash-doubling rule. + // + // b) it's what we've been doing previously (by deferring to node default behavior) and we + // haven't heard any complaints about that aspect. + // + // note, a weakness of the quoting rules chosen here, is that % is not escaped. in fact, % cannot be + // escaped when used on the command line directly - even though within a .cmd file % can be escaped + // by using %%. + // + // the saving grace is, on the command line, %var% is left as-is if var is not defined. this contrasts + // the line parsing rules within a .cmd file, where if var is not defined it is replaced with nothing. + // + // one option that was explored was replacing % with ^% - i.e. %var% => ^%var^%. this hack would + // often work, since it is unlikely that var^ would exist, and the ^ character is removed when the + // variable is used. the problem, however, is that ^ is not removed when %* is used to pass the args + // to an external program. + // + // an unexplored potential solution for the % escaping problem, is to create a wrapper .cmd file. + // % can be escaped within a .cmd file. + let reverse = '"'; + let quoteHit = true; + for (let i = arg.length; i > 0; i--) { + // walk the string in reverse + reverse += arg[i - 1]; + if (quoteHit && arg[i - 1] === '\\') { + reverse += '\\'; // double the slash + } + else if (arg[i - 1] === '"') { + quoteHit = true; + reverse += '"'; // double the quote + } + else { + quoteHit = false; + } + } + reverse += '"'; + return reverse + .split('') + .reverse() + .join(''); + } + _uvQuoteCmdArg(arg) { + // Tool runner wraps child_process.spawn() and needs to apply the same quoting as + // Node in certain cases where the undocumented spawn option windowsVerbatimArguments + // is used. + // + // Since this function is a port of quote_cmd_arg from Node 4.x (technically, lib UV, + // see https://github.com/nodejs/node/blob/v4.x/deps/uv/src/win/process.c for details), + // pasting copyright notice from Node within this function: + // + // Copyright Joyent, Inc. and other Node contributors. All rights reserved. + // + // Permission is hereby granted, free of charge, to any person obtaining a copy + // of this software and associated documentation files (the "Software"), to + // deal in the Software without restriction, including without limitation the + // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + // sell copies of the Software, and to permit persons to whom the Software is + // furnished to do so, subject to the following conditions: + // + // The above copyright notice and this permission notice shall be included in + // all copies or substantial portions of the Software. + // + // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + // IN THE SOFTWARE. + if (!arg) { + // Need double quotation for empty argument + return '""'; + } + if (!arg.includes(' ') && !arg.includes('\t') && !arg.includes('"')) { + // No quotation needed + return arg; + } + if (!arg.includes('"') && !arg.includes('\\')) { + // No embedded double quotes or backslashes, so I can just wrap + // quote marks around the whole thing. + return `"${arg}"`; + } + // Expected input/output: + // input : hello"world + // output: "hello\"world" + // input : hello""world + // output: "hello\"\"world" + // input : hello\world + // output: hello\world + // input : hello\\world + // output: hello\\world + // input : hello\"world + // output: "hello\\\"world" + // input : hello\\"world + // output: "hello\\\\\"world" + // input : hello world\ + // output: "hello world\\" - note the comment in libuv actually reads "hello world\" + // but it appears the comment is wrong, it should be "hello world\\" + let reverse = '"'; + let quoteHit = true; + for (let i = arg.length; i > 0; i--) { + // walk the string in reverse + reverse += arg[i - 1]; + if (quoteHit && arg[i - 1] === '\\') { + reverse += '\\'; + } + else if (arg[i - 1] === '"') { + quoteHit = true; + reverse += '\\'; + } + else { + quoteHit = false; + } + } + reverse += '"'; + return reverse + .split('') + .reverse() + .join(''); + } + _cloneExecOptions(options) { + options = options || {}; + const result = { + cwd: options.cwd || process.cwd(), + env: options.env || process.env, + silent: options.silent || false, + windowsVerbatimArguments: options.windowsVerbatimArguments || false, + failOnStdErr: options.failOnStdErr || false, + ignoreReturnCode: options.ignoreReturnCode || false, + delay: options.delay || 10000 + }; + result.outStream = options.outStream || process.stdout; + result.errStream = options.errStream || process.stderr; + return result; + } + _getSpawnOptions(options, toolPath) { + options = options || {}; + const result = {}; + result.cwd = options.cwd; + result.env = options.env; + result['windowsVerbatimArguments'] = + options.windowsVerbatimArguments || this._isCmdFile(); + if (options.windowsVerbatimArguments) { + result.argv0 = `"${toolPath}"`; + } + return result; + } + /** + * Exec a tool. + * Output will be streamed to the live console. + * Returns promise with return code + * + * @param tool path to tool to exec + * @param options optional exec options. See ExecOptions + * @returns number + */ + exec() { + return __awaiter(this, void 0, void 0, function* () { + return new Promise((resolve, reject) => { + this._debug(`exec tool: ${this.toolPath}`); + this._debug('arguments:'); + for (const arg of this.args) { + this._debug(` ${arg}`); + } + const optionsNonNull = this._cloneExecOptions(this.options); + if (!optionsNonNull.silent && optionsNonNull.outStream) { + optionsNonNull.outStream.write(this._getCommandString(optionsNonNull) + os.EOL); + } + const state = new ExecState(optionsNonNull, this.toolPath); + state.on('debug', (message) => { + this._debug(message); + }); + const fileName = this._getSpawnFileName(); + const cp = child.spawn(fileName, this._getSpawnArgs(optionsNonNull), this._getSpawnOptions(this.options, fileName)); + const stdbuffer = ''; + if (cp.stdout) { + cp.stdout.on('data', (data) => { + if (this.options.listeners && this.options.listeners.stdout) { + this.options.listeners.stdout(data); + } + if (!optionsNonNull.silent && optionsNonNull.outStream) { + optionsNonNull.outStream.write(data); + } + this._processLineBuffer(data, stdbuffer, (line) => { + if (this.options.listeners && this.options.listeners.stdline) { + this.options.listeners.stdline(line); + } + }); + }); + } + const errbuffer = ''; + if (cp.stderr) { + cp.stderr.on('data', (data) => { + state.processStderr = true; + if (this.options.listeners && this.options.listeners.stderr) { + this.options.listeners.stderr(data); + } + if (!optionsNonNull.silent && + optionsNonNull.errStream && + optionsNonNull.outStream) { + const s = optionsNonNull.failOnStdErr + ? optionsNonNull.errStream + : optionsNonNull.outStream; + s.write(data); + } + this._processLineBuffer(data, errbuffer, (line) => { + if (this.options.listeners && this.options.listeners.errline) { + this.options.listeners.errline(line); + } + }); + }); + } + cp.on('error', (err) => { + state.processError = err.message; + state.processExited = true; + state.processClosed = true; + state.CheckComplete(); + }); + cp.on('exit', (code) => { + state.processExitCode = code; + state.processExited = true; + this._debug(`Exit code ${code} received from tool '${this.toolPath}'`); + state.CheckComplete(); + }); + cp.on('close', (code) => { + state.processExitCode = code; + state.processExited = true; + state.processClosed = true; + this._debug(`STDIO streams have closed for tool '${this.toolPath}'`); + state.CheckComplete(); + }); + state.on('done', (error, exitCode) => { + if (stdbuffer.length > 0) { + this.emit('stdline', stdbuffer); + } + if (errbuffer.length > 0) { + this.emit('errline', errbuffer); + } + cp.removeAllListeners(); + if (error) { + reject(error); + } + else { + resolve(exitCode); + } + }); + }); + }); + } +} +exports.ToolRunner = ToolRunner; +/** + * Convert an arg string to an array of args. Handles escaping + * + * @param argString string of arguments + * @returns string[] array of arguments + */ +function argStringToArray(argString) { + const args = []; + let inQuotes = false; + let escaped = false; + let arg = ''; + function append(c) { + // we only escape double quotes. + if (escaped && c !== '"') { + arg += '\\'; + } + arg += c; + escaped = false; + } + for (let i = 0; i < argString.length; i++) { + const c = argString.charAt(i); + if (c === '"') { + if (!escaped) { + inQuotes = !inQuotes; + } + else { + append(c); + } + continue; + } + if (c === '\\' && escaped) { + append(c); + continue; + } + if (c === '\\' && inQuotes) { + escaped = true; + continue; + } + if (c === ' ' && !inQuotes) { + if (arg.length > 0) { + args.push(arg); + arg = ''; + } + continue; + } + append(c); + } + if (arg.length > 0) { + args.push(arg.trim()); + } + return args; +} +exports.argStringToArray = argStringToArray; +class ExecState extends events.EventEmitter { + constructor(options, toolPath) { + super(); + this.processClosed = false; // tracks whether the process has exited and stdio is closed + this.processError = ''; + this.processExitCode = 0; + this.processExited = false; // tracks whether the process has exited + this.processStderr = false; // tracks whether stderr was written to + this.delay = 10000; // 10 seconds + this.done = false; + this.timeout = null; + if (!toolPath) { + throw new Error('toolPath must not be empty'); + } + this.options = options; + this.toolPath = toolPath; + if (options.delay) { + this.delay = options.delay; + } + } + CheckComplete() { + if (this.done) { + return; + } + if (this.processClosed) { + this._setResult(); + } + else if (this.processExited) { + this.timeout = setTimeout(ExecState.HandleTimeout, this.delay, this); + } + } + _debug(message) { + this.emit('debug', message); + } + _setResult() { + // determine whether there is an error + let error; + if (this.processExited) { + if (this.processError) { + error = new Error(`There was an error when attempting to execute the process '${this.toolPath}'. This may indicate the process failed to start. Error: ${this.processError}`); + } + else if (this.processExitCode !== 0 && !this.options.ignoreReturnCode) { + error = new Error(`The process '${this.toolPath}' failed with exit code ${this.processExitCode}`); + } + else if (this.processStderr && this.options.failOnStdErr) { + error = new Error(`The process '${this.toolPath}' failed because one or more lines were written to the STDERR stream`); + } + } + // clear the timeout + if (this.timeout) { + clearTimeout(this.timeout); + this.timeout = null; + } + this.done = true; + this.emit('done', error, this.processExitCode); + } + static HandleTimeout(state) { + if (state.done) { + return; + } + if (!state.processClosed && state.processExited) { + const message = `The STDIO streams did not close within ${state.delay / + 1000} seconds of the exit event from process '${state.toolPath}'. This may indicate a child process inherited the STDIO streams and has not yet exited.`; + state._debug(message); + } + state._setResult(); + } +} //# sourceMappingURL=toolrunner.js.map \ No newline at end of file diff --git a/node_modules/@actions/exit/LICENSE.md b/node_modules/@actions/exit/LICENSE.md index 5b674fe8..e5a73f40 100644 --- a/node_modules/@actions/exit/LICENSE.md +++ b/node_modules/@actions/exit/LICENSE.md @@ -1,7 +1,7 @@ -Copyright 2019 GitHub - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - +Copyright 2019 GitHub + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/@actions/exit/README.md b/node_modules/@actions/exit/README.md index 2a53c6ca..cbbe0eef 100644 --- a/node_modules/@actions/exit/README.md +++ b/node_modules/@actions/exit/README.md @@ -1,7 +1,7 @@ -# `@actions/exit` - -> TODO: description - -## Usage - +# `@actions/exit` + +> TODO: description + +## Usage + See [src/exit.ts](src/exit.ts). \ No newline at end of file diff --git a/node_modules/@actions/exit/lib/exit.d.ts b/node_modules/@actions/exit/lib/exit.d.ts index 22ebe162..a34305e5 100644 --- a/node_modules/@actions/exit/lib/exit.d.ts +++ b/node_modules/@actions/exit/lib/exit.d.ts @@ -1,29 +1,29 @@ -/** - * The code to exit an action - */ -export declare enum ExitCode { - /** - * A code indicating that the action was successful - */ - Success = 0, - /** - * A code indicating that the action was a failure - */ - Failure = 1, - /** - * A code indicating that the action is complete, but neither succeeded nor failed - */ - Neutral = 78 -} -/** - * Exit the action as a success. - */ -export declare function success(): void; -/** - * Exit the action as a failure. - */ -export declare function failure(): void; -/** - * Exit the action neither a success or a failure - */ -export declare function neutral(): void; +/** + * The code to exit an action + */ +export declare enum ExitCode { + /** + * A code indicating that the action was successful + */ + Success = 0, + /** + * A code indicating that the action was a failure + */ + Failure = 1, + /** + * A code indicating that the action is complete, but neither succeeded nor failed + */ + Neutral = 78 +} +/** + * Exit the action as a success. + */ +export declare function success(): void; +/** + * Exit the action as a failure. + */ +export declare function failure(): void; +/** + * Exit the action neither a success or a failure + */ +export declare function neutral(): void; diff --git a/node_modules/@actions/exit/lib/exit.js b/node_modules/@actions/exit/lib/exit.js index 6048c785..55caff26 100644 --- a/node_modules/@actions/exit/lib/exit.js +++ b/node_modules/@actions/exit/lib/exit.js @@ -1,44 +1,44 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -/** - * The code to exit an action - */ -var ExitCode; -(function (ExitCode) { - /** - * A code indicating that the action was successful - */ - ExitCode[ExitCode["Success"] = 0] = "Success"; - /** - * A code indicating that the action was a failure - */ - ExitCode[ExitCode["Failure"] = 1] = "Failure"; - /** - * A code indicating that the action is complete, but neither succeeded nor failed - */ - ExitCode[ExitCode["Neutral"] = 78] = "Neutral"; -})(ExitCode = exports.ExitCode || (exports.ExitCode = {})); -// TODO: These exit codes may not behave as expected on the new runtime, due to -// complexities of async logging and sync exiting. -/** - * Exit the action as a success. - */ -function success() { - process.exit(ExitCode.Success); -} -exports.success = success; -/** - * Exit the action as a failure. - */ -function failure() { - process.exit(ExitCode.Failure); -} -exports.failure = failure; -/** - * Exit the action neither a success or a failure - */ -function neutral() { - process.exit(ExitCode.Neutral); -} -exports.neutral = neutral; +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +/** + * The code to exit an action + */ +var ExitCode; +(function (ExitCode) { + /** + * A code indicating that the action was successful + */ + ExitCode[ExitCode["Success"] = 0] = "Success"; + /** + * A code indicating that the action was a failure + */ + ExitCode[ExitCode["Failure"] = 1] = "Failure"; + /** + * A code indicating that the action is complete, but neither succeeded nor failed + */ + ExitCode[ExitCode["Neutral"] = 78] = "Neutral"; +})(ExitCode = exports.ExitCode || (exports.ExitCode = {})); +// TODO: These exit codes may not behave as expected on the new runtime, due to +// complexities of async logging and sync exiting. +/** + * Exit the action as a success. + */ +function success() { + process.exit(ExitCode.Success); +} +exports.success = success; +/** + * Exit the action as a failure. + */ +function failure() { + process.exit(ExitCode.Failure); +} +exports.failure = failure; +/** + * Exit the action neither a success or a failure + */ +function neutral() { + process.exit(ExitCode.Neutral); +} +exports.neutral = neutral; //# sourceMappingURL=exit.js.map \ No newline at end of file diff --git a/node_modules/@actions/io/README.md b/node_modules/@actions/io/README.md index 79b3f8db..e9b50d2f 100644 --- a/node_modules/@actions/io/README.md +++ b/node_modules/@actions/io/README.md @@ -1,49 +1,49 @@ -# `@actions/io` - -> Core functions for cli filesystem scenarios - -## Usage - -``` -/** - * Copies a file or folder. - * - * @param source source path - * @param dest destination path - * @param options optional. See CopyOptions. - */ -export function cp(source: string, dest: string, options?: CopyOptions): Promise<void> - -/** - * Remove a path recursively with force - * - * @param path path to remove - */ -export function rmRF(path: string): Promise<void> - -/** - * Make a directory. Creates the full path with folders in between - * - * @param p path to create - * @returns Promise<void> - */ -export function mkdirP(p: string): Promise<void> - -/** - * Moves a path. - * - * @param source source path - * @param dest destination path - * @param options optional. See CopyOptions. - */ -export function mv(source: string, dest: string, options?: CopyOptions): Promise<void> - -/** - * Returns path of a tool had the tool actually been invoked. Resolves via paths. - * - * @param tool name of the tool - * @param options optional. See WhichOptions. - * @returns Promise<string> path to tool - */ -export function which(tool: string, options?: WhichOptions): Promise<string> +# `@actions/io` + +> Core functions for cli filesystem scenarios + +## Usage + +``` +/** + * Copies a file or folder. + * + * @param source source path + * @param dest destination path + * @param options optional. See CopyOptions. + */ +export function cp(source: string, dest: string, options?: CopyOptions): Promise<void> + +/** + * Remove a path recursively with force + * + * @param path path to remove + */ +export function rmRF(path: string): Promise<void> + +/** + * Make a directory. Creates the full path with folders in between + * + * @param p path to create + * @returns Promise<void> + */ +export function mkdirP(p: string): Promise<void> + +/** + * Moves a path. + * + * @param source source path + * @param dest destination path + * @param options optional. See CopyOptions. + */ +export function mv(source: string, dest: string, options?: CopyOptions): Promise<void> + +/** + * Returns path of a tool had the tool actually been invoked. Resolves via paths. + * + * @param tool name of the tool + * @param options optional. See WhichOptions. + * @returns Promise<string> path to tool + */ +export function which(tool: string, options?: WhichOptions): Promise<string> ``` \ No newline at end of file diff --git a/node_modules/@actions/io/lib/io-util.d.ts b/node_modules/@actions/io/lib/io-util.d.ts index 73086d4b..0bd51f6e 100644 --- a/node_modules/@actions/io/lib/io-util.d.ts +++ b/node_modules/@actions/io/lib/io-util.d.ts @@ -1,29 +1,29 @@ -/// <reference types="node" /> -import * as fs from 'fs'; -export declare const copyFile: typeof fs.promises.copyFile, lstat: typeof fs.promises.lstat, mkdir: typeof fs.promises.mkdir, readdir: typeof fs.promises.readdir, rmdir: typeof fs.promises.rmdir, stat: typeof fs.promises.stat, unlink: typeof fs.promises.unlink; -export declare const IS_WINDOWS: boolean; -export declare function exists(fsPath: string): Promise<boolean>; -export declare function isDirectory(fsPath: string, useStat?: boolean): Promise<boolean>; -/** - * 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). - */ -export declare function isRooted(p: string): boolean; -/** - * 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 - */ -export declare function mkdirP(fsPath: string, maxDepth?: number, depth?: number): Promise<void>; -/** - * 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. - */ -export declare function tryGetExecutablePath(filePath: string, extensions: string[]): Promise<string>; +/// <reference types="node" /> +import * as fs from 'fs'; +export declare const copyFile: typeof fs.promises.copyFile, lstat: typeof fs.promises.lstat, mkdir: typeof fs.promises.mkdir, readdir: typeof fs.promises.readdir, rmdir: typeof fs.promises.rmdir, stat: typeof fs.promises.stat, unlink: typeof fs.promises.unlink; +export declare const IS_WINDOWS: boolean; +export declare function exists(fsPath: string): Promise<boolean>; +export declare function isDirectory(fsPath: string, useStat?: boolean): Promise<boolean>; +/** + * 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). + */ +export declare function isRooted(p: string): boolean; +/** + * 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 + */ +export declare function mkdirP(fsPath: string, maxDepth?: number, depth?: number): Promise<void>; +/** + * 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. + */ +export declare function tryGetExecutablePath(filePath: string, extensions: string[]): Promise<string>; diff --git a/node_modules/@actions/io/lib/io-util.js b/node_modules/@actions/io/lib/io-util.js index d686c5a4..fad16232 100644 --- a/node_modules/@actions/io/lib/io-util.js +++ b/node_modules/@actions/io/lib/io-util.js @@ -1,194 +1,194 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - 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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var _a; -Object.defineProperty(exports, "__esModule", { value: true }); -const assert_1 = require("assert"); -const fs = require("fs"); -const path = require("path"); -_a = fs.promises, exports.copyFile = _a.copyFile, exports.lstat = _a.lstat, exports.mkdir = _a.mkdir, exports.readdir = _a.readdir, exports.rmdir = _a.rmdir, exports.stat = _a.stat, 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; -/** - * 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 - * @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())); -} +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + 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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var _a; +Object.defineProperty(exports, "__esModule", { value: true }); +const assert_1 = require("assert"); +const fs = require("fs"); +const path = require("path"); +_a = fs.promises, exports.copyFile = _a.copyFile, exports.lstat = _a.lstat, exports.mkdir = _a.mkdir, exports.readdir = _a.readdir, exports.rmdir = _a.rmdir, exports.stat = _a.stat, 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; +/** + * 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 + * @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())); +} //# sourceMappingURL=io-util.js.map \ No newline at end of file diff --git a/node_modules/@actions/io/lib/io.d.ts b/node_modules/@actions/io/lib/io.d.ts index 0116f6e9..f591cf52 100644 --- a/node_modules/@actions/io/lib/io.d.ts +++ b/node_modules/@actions/io/lib/io.d.ts @@ -1,48 +1,48 @@ -/** - * Interface for cp/mv options - */ -export interface CopyOptions { - /** Optional. Whether to recursively copy all subdirectories. Defaults to false */ - recursive?: boolean; - /** Optional. Whether to overwrite existing files in the destination. Defaults to true */ - force?: boolean; -} -/** - * Copies a file or folder. - * - * @param source source path - * @param dest destination path - * @param options optional. See CopyOptions. - */ -export declare function cp(source: string, dest: string, options?: CopyOptions): Promise<void>; -/** - * Moves a path. - * - * @param source source path - * @param dest destination path - * @param options optional. See CopyOptions. - */ -export declare function mv(source: string, dest: string, options?: CopyOptions): Promise<void>; -/** - * Remove a path recursively with force - * - * @param inputPath path to remove - */ -export declare function rmRF(inputPath: string): Promise<void>; -/** - * Make a directory. Creates the full path with folders in between - * Will throw if it fails - * - * @param fsPath path to create - * @returns Promise<void> - */ -export declare function mkdirP(fsPath: string): Promise<void>; -/** - * 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 - */ -export declare function which(tool: string, check?: boolean): Promise<string>; +/** + * Interface for cp/mv options + */ +export interface CopyOptions { + /** Optional. Whether to recursively copy all subdirectories. Defaults to false */ + recursive?: boolean; + /** Optional. Whether to overwrite existing files in the destination. Defaults to true */ + force?: boolean; +} +/** + * Copies a file or folder. + * + * @param source source path + * @param dest destination path + * @param options optional. See CopyOptions. + */ +export declare function cp(source: string, dest: string, options?: CopyOptions): Promise<void>; +/** + * Moves a path. + * + * @param source source path + * @param dest destination path + * @param options optional. See CopyOptions. + */ +export declare function mv(source: string, dest: string, options?: CopyOptions): Promise<void>; +/** + * Remove a path recursively with force + * + * @param inputPath path to remove + */ +export declare function rmRF(inputPath: string): Promise<void>; +/** + * Make a directory. Creates the full path with folders in between + * Will throw if it fails + * + * @param fsPath path to create + * @returns Promise<void> + */ +export declare function mkdirP(fsPath: string): Promise<void>; +/** + * 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 + */ +export declare function which(tool: string, check?: boolean): Promise<string>; diff --git a/node_modules/@actions/io/lib/io.js b/node_modules/@actions/io/lib/io.js index 4ce2d243..678e0e47 100644 --- a/node_modules/@actions/io/lib/io.js +++ b/node_modules/@actions/io/lib/io.js @@ -1,262 +1,262 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - 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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const childProcess = require("child_process"); -const fs = require("fs"); -const path = require("path"); -const util_1 = require("util"); -const ioUtil = require("./io-util"); -const exec = util_1.promisify(childProcess.exec); -/** - * Copies a file or folder. - * - * @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* () { - yield move(source, dest, options, { deleteOriginal: false }); - }); -} -exports.cp = cp; -/** - * Moves a path. - * - * @param source source path - * @param dest destination path - * @param options optional. See CopyOptions. - */ -function mv(source, dest, options = {}) { - return __awaiter(this, void 0, void 0, function* () { - yield move(source, dest, options, { deleteOriginal: true }); - }); -} -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. - try { - if (yield ioUtil.isDirectory(inputPath, true)) { - yield exec(`rd /s /q "${inputPath}"`); - } - else { - yield exec(`del /f /a "${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 exec(`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* () { - yield ioUtil.mkdirP(fsPath); - }); -} -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.`); - } - } - } - 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 task lib 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 task lib 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}`); - } - }); -} -exports.which = which; -// Copies contents of source into dest, making any necessary folders along the way. -// Deletes the original copy if deleteOriginal is true -function copyDirectoryContents(source, dest, force, deleteOriginal = false) { - return __awaiter(this, void 0, void 0, function* () { - if (yield ioUtil.isDirectory(source)) { - if (yield ioUtil.exists(dest)) { - if (!(yield ioUtil.isDirectory(dest))) { - throw new Error(`${dest} is not a directory`); - } - } - else { - yield mkdirP(dest); - } - // Copy all child files, and directories recursively - const sourceChildren = yield ioUtil.readdir(source); - for (const newSource of sourceChildren) { - const newDest = path.join(dest, path.basename(newSource)); - yield copyDirectoryContents(path.resolve(source, newSource), newDest, force, deleteOriginal); - } - if (deleteOriginal) { - yield ioUtil.rmdir(source); - } - } - else { - if (force) { - yield ioUtil.copyFile(source, dest); - } - else { - yield ioUtil.copyFile(source, dest, fs.constants.COPYFILE_EXCL); - } - if (deleteOriginal) { - yield ioUtil.unlink(source); - } - } - }); -} -function move(source, dest, options = {}, moveOptions) { - return __awaiter(this, void 0, void 0, function* () { - const { force, recursive } = readCopyOptions(options); - if (yield ioUtil.isDirectory(source)) { - if (!recursive) { - throw new Error(`non-recursive cp failed, ${source} is a directory`); - } - // If directory exists, move source inside it. Otherwise, create it and move contents of source inside. - if (yield ioUtil.exists(dest)) { - if (!(yield ioUtil.isDirectory(dest))) { - throw new Error(`${dest} is not a directory`); - } - dest = path.join(dest, path.basename(source)); - } - yield copyDirectoryContents(source, dest, force, moveOptions.deleteOriginal); - } - else { - if ((yield ioUtil.exists(dest)) && (yield ioUtil.isDirectory(dest))) { - dest = path.join(dest, path.basename(source)); - } - if (force) { - yield ioUtil.copyFile(source, dest); - } - else { - yield ioUtil.copyFile(source, dest, fs.constants.COPYFILE_EXCL); - } - if (moveOptions.deleteOriginal) { - yield ioUtil.unlink(source); - } - } - }); -} -function readCopyOptions(options) { - const force = options.force == null ? true : options.force; - const recursive = Boolean(options.recursive); - return { force, recursive }; -} +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + 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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const childProcess = require("child_process"); +const fs = require("fs"); +const path = require("path"); +const util_1 = require("util"); +const ioUtil = require("./io-util"); +const exec = util_1.promisify(childProcess.exec); +/** + * Copies a file or folder. + * + * @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* () { + yield move(source, dest, options, { deleteOriginal: false }); + }); +} +exports.cp = cp; +/** + * Moves a path. + * + * @param source source path + * @param dest destination path + * @param options optional. See CopyOptions. + */ +function mv(source, dest, options = {}) { + return __awaiter(this, void 0, void 0, function* () { + yield move(source, dest, options, { deleteOriginal: true }); + }); +} +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. + try { + if (yield ioUtil.isDirectory(inputPath, true)) { + yield exec(`rd /s /q "${inputPath}"`); + } + else { + yield exec(`del /f /a "${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 exec(`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* () { + yield ioUtil.mkdirP(fsPath); + }); +} +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.`); + } + } + } + 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 task lib 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 task lib 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}`); + } + }); +} +exports.which = which; +// Copies contents of source into dest, making any necessary folders along the way. +// Deletes the original copy if deleteOriginal is true +function copyDirectoryContents(source, dest, force, deleteOriginal = false) { + return __awaiter(this, void 0, void 0, function* () { + if (yield ioUtil.isDirectory(source)) { + if (yield ioUtil.exists(dest)) { + if (!(yield ioUtil.isDirectory(dest))) { + throw new Error(`${dest} is not a directory`); + } + } + else { + yield mkdirP(dest); + } + // Copy all child files, and directories recursively + const sourceChildren = yield ioUtil.readdir(source); + for (const newSource of sourceChildren) { + const newDest = path.join(dest, path.basename(newSource)); + yield copyDirectoryContents(path.resolve(source, newSource), newDest, force, deleteOriginal); + } + if (deleteOriginal) { + yield ioUtil.rmdir(source); + } + } + else { + if (force) { + yield ioUtil.copyFile(source, dest); + } + else { + yield ioUtil.copyFile(source, dest, fs.constants.COPYFILE_EXCL); + } + if (deleteOriginal) { + yield ioUtil.unlink(source); + } + } + }); +} +function move(source, dest, options = {}, moveOptions) { + return __awaiter(this, void 0, void 0, function* () { + const { force, recursive } = readCopyOptions(options); + if (yield ioUtil.isDirectory(source)) { + if (!recursive) { + throw new Error(`non-recursive cp failed, ${source} is a directory`); + } + // If directory exists, move source inside it. Otherwise, create it and move contents of source inside. + if (yield ioUtil.exists(dest)) { + if (!(yield ioUtil.isDirectory(dest))) { + throw new Error(`${dest} is not a directory`); + } + dest = path.join(dest, path.basename(source)); + } + yield copyDirectoryContents(source, dest, force, moveOptions.deleteOriginal); + } + else { + if ((yield ioUtil.exists(dest)) && (yield ioUtil.isDirectory(dest))) { + dest = path.join(dest, path.basename(source)); + } + if (force) { + yield ioUtil.copyFile(source, dest); + } + else { + yield ioUtil.copyFile(source, dest, fs.constants.COPYFILE_EXCL); + } + if (moveOptions.deleteOriginal) { + yield ioUtil.unlink(source); + } + } + }); +} +function readCopyOptions(options) { + const force = options.force == null ? true : options.force; + const recursive = Boolean(options.recursive); + return { force, recursive }; +} //# sourceMappingURL=io.js.map \ No newline at end of file diff --git a/node_modules/@actions/tool-cache/README.md b/node_modules/@actions/tool-cache/README.md index 97372063..56c53530 100644 --- a/node_modules/@actions/tool-cache/README.md +++ b/node_modules/@actions/tool-cache/README.md @@ -1,7 +1,82 @@ -# `@actions/tool-cache` - -> Functions necessary for downloading and caching tools. - -## Usage - -See [src/tool-cache.ts](src/tool-cache.ts). \ No newline at end of file +# `@actions/tool-cache` + +> Functions necessary for downloading and caching tools. + +## Usage + +#### Download + +You can use this to download tools (or other files) from a download URL: + +``` +const tc = require('@actions/tool-cache'); + +const node12Path = await tc.downloadTool('http://nodejs.org/dist/v12.7.0/node-v12.7.0-linux-x64.tar.gz'); +``` + +#### Extract + +These can then be extracted in platform specific ways: + +``` +const tc = require('@actions/tool-cache'); + +if (process.platform === 'win32') { + tc.downloadTool('http://nodejs.org/dist/v12.7.0/node-v12.7.0-win-x64.zip'); + const node12ExtractedFolder = await tc.extractZip(node12Path, 'path/to/extract/to'); + + // Or alternately + tc.downloadTool('http://nodejs.org/dist/v12.7.0/node-v12.7.0-win-x64.7z'); + const node12ExtractedFolder = await tc.extract7z(node12Path, 'path/to/extract/to'); +} +else { + const node12Path = await tc.downloadTool('http://nodejs.org/dist/v12.7.0/node-v12.7.0-linux-x64.tar.gz'); + const node12ExtractedFolder = await tc.extractTar(node12Path, 'path/to/extract/to'); +} +``` + +#### Cache + +Finally, you can cache these directories in our tool-cache. This is useful if you want to switch back and forth between versions of a tool, or save a tool between runs for private runners (private runners are still in development but are on the roadmap). + +You'll often want to add it to the path as part of this step: + +``` +const tc = require('@actions/tool-cache'); +const core = require('@actions/core'); + +const node12Path = await tc.downloadTool('http://nodejs.org/dist/v12.7.0/node-v12.7.0-linux-x64.tar.gz'); +const node12ExtractedFolder = await tc.extractTar(node12Path, 'path/to/extract/to'); + +const cachedPath = await tc.cacheDir(node12ExtractedFolder, 'node', '12.7.0'); +core.addPath(cachedPath); +``` + +You can also cache files for reuse. + +``` +const tc = require('@actions/tool-cache'); + +tc.cacheFile('path/to/exe', 'destFileName.exe', 'myExeName', '1.1.0'); +``` + +#### Find + +Finally, you can find directories and files you've previously cached: + +``` +const tc = require('@actions/tool-cache'); +const core = require('@actions/core'); + +const nodeDirectory = tc.find('node', '12.x', 'x64'); +core.addPath(nodeDirectory); +``` + +You can even find all cached versions of a tool: + +``` +const tc = require('@actions/tool-cache'); + +const allNodeVersions = tc.findAllVersions('node'); +console.log(`Versions of node available: ${allNodeVersions}`); +``` diff --git a/node_modules/@actions/tool-cache/lib/tool-cache.d.ts b/node_modules/@actions/tool-cache/lib/tool-cache.d.ts index 2f66b063..877eb333 100644 --- a/node_modules/@actions/tool-cache/lib/tool-cache.d.ts +++ b/node_modules/@actions/tool-cache/lib/tool-cache.d.ts @@ -1,78 +1,78 @@ -export declare class HTTPError extends Error { - readonly httpStatusCode: number | undefined; - constructor(httpStatusCode: number | undefined); -} -/** - * Download a tool from an url and stream it into a file - * - * @param url url of tool to download - * @returns path to downloaded tool - */ -export declare function downloadTool(url: string): Promise<string>; -/** - * Extract a .7z file - * - * @param file path to the .7z file - * @param dest destination directory. Optional. - * @param _7zPath path to 7zr.exe. Optional, for long path support. Most .7z archives do not have this - * problem. If your .7z archive contains very long paths, you can pass the path to 7zr.exe which will - * gracefully handle long paths. By default 7zdec.exe is used because it is a very small program and is - * bundled with the tool lib. However it does not support long paths. 7zr.exe is the reduced command line - * interface, it is smaller than the full command line interface, and it does support long paths. At the - * time of this writing, it is freely available from the LZMA SDK that is available on the 7zip website. - * Be sure to check the current license agreement. If 7zr.exe is bundled with your action, then the path - * to 7zr.exe can be pass to this function. - * @returns path to the destination directory - */ -export declare function extract7z(file: string, dest?: string, _7zPath?: string): Promise<string>; -/** - * Extract a tar - * - * @param file path to the tar - * @param dest destination directory. Optional. - * @returns path to the destination directory - */ -export declare function extractTar(file: string, dest?: string): Promise<string>; -/** - * Extract a zip - * - * @param file path to the zip - * @param dest destination directory. Optional. - * @returns path to the destination directory - */ -export declare function extractZip(file: string, dest?: string): Promise<string>; -/** - * Caches a directory and installs it into the tool cacheDir - * - * @param sourceDir the directory to cache into tools - * @param tool tool name - * @param version version of the tool. semver format - * @param arch architecture of the tool. Optional. Defaults to machine architecture - */ -export declare function cacheDir(sourceDir: string, tool: string, version: string, arch?: string): Promise<string>; -/** - * Caches a downloaded file (GUID) and installs it - * into the tool cache with a given targetName - * - * @param sourceFile the file to cache into tools. Typically a result of downloadTool which is a guid. - * @param targetFile the name of the file name in the tools directory - * @param tool tool name - * @param version version of the tool. semver format - * @param arch architecture of the tool. Optional. Defaults to machine architecture - */ -export declare function cacheFile(sourceFile: string, targetFile: string, tool: string, version: string, arch?: string): Promise<string>; -/** - * Finds the path to a tool version in the local installed tool cache - * - * @param toolName name of the tool - * @param versionSpec version of the tool - * @param arch optional arch. defaults to arch of computer - */ -export declare function find(toolName: string, versionSpec: string, arch?: string): string; -/** - * Finds the paths to all versions of a tool that are installed in the local tool cache - * - * @param toolName name of the tool - * @param arch optional arch. defaults to arch of computer - */ -export declare function findAllVersions(toolName: string, arch?: string): string[]; +export declare class HTTPError extends Error { + readonly httpStatusCode: number | undefined; + constructor(httpStatusCode: number | undefined); +} +/** + * Download a tool from an url and stream it into a file + * + * @param url url of tool to download + * @returns path to downloaded tool + */ +export declare function downloadTool(url: string): Promise<string>; +/** + * Extract a .7z file + * + * @param file path to the .7z file + * @param dest destination directory. Optional. + * @param _7zPath path to 7zr.exe. Optional, for long path support. Most .7z archives do not have this + * problem. If your .7z archive contains very long paths, you can pass the path to 7zr.exe which will + * gracefully handle long paths. By default 7zdec.exe is used because it is a very small program and is + * bundled with the tool lib. However it does not support long paths. 7zr.exe is the reduced command line + * interface, it is smaller than the full command line interface, and it does support long paths. At the + * time of this writing, it is freely available from the LZMA SDK that is available on the 7zip website. + * Be sure to check the current license agreement. If 7zr.exe is bundled with your action, then the path + * to 7zr.exe can be pass to this function. + * @returns path to the destination directory + */ +export declare function extract7z(file: string, dest?: string, _7zPath?: string): Promise<string>; +/** + * Extract a tar + * + * @param file path to the tar + * @param dest destination directory. Optional. + * @returns path to the destination directory + */ +export declare function extractTar(file: string, dest?: string): Promise<string>; +/** + * Extract a zip + * + * @param file path to the zip + * @param dest destination directory. Optional. + * @returns path to the destination directory + */ +export declare function extractZip(file: string, dest?: string): Promise<string>; +/** + * Caches a directory and installs it into the tool cacheDir + * + * @param sourceDir the directory to cache into tools + * @param tool tool name + * @param version version of the tool. semver format + * @param arch architecture of the tool. Optional. Defaults to machine architecture + */ +export declare function cacheDir(sourceDir: string, tool: string, version: string, arch?: string): Promise<string>; +/** + * Caches a downloaded file (GUID) and installs it + * into the tool cache with a given targetName + * + * @param sourceFile the file to cache into tools. Typically a result of downloadTool which is a guid. + * @param targetFile the name of the file name in the tools directory + * @param tool tool name + * @param version version of the tool. semver format + * @param arch architecture of the tool. Optional. Defaults to machine architecture + */ +export declare function cacheFile(sourceFile: string, targetFile: string, tool: string, version: string, arch?: string): Promise<string>; +/** + * Finds the path to a tool version in the local installed tool cache + * + * @param toolName name of the tool + * @param versionSpec version of the tool + * @param arch optional arch. defaults to arch of computer + */ +export declare function find(toolName: string, versionSpec: string, arch?: string): string; +/** + * Finds the paths to all versions of a tool that are installed in the local tool cache + * + * @param toolName name of the tool + * @param arch optional arch. defaults to arch of computer + */ +export declare function findAllVersions(toolName: string, arch?: string): string[]; diff --git a/node_modules/@actions/tool-cache/lib/tool-cache.js b/node_modules/@actions/tool-cache/lib/tool-cache.js index b2dc2e4c..3c121652 100644 --- a/node_modules/@actions/tool-cache/lib/tool-cache.js +++ b/node_modules/@actions/tool-cache/lib/tool-cache.js @@ -1,437 +1,436 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - 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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const core = require("@actions/core"); -const io = require("@actions/io"); -const fs = require("fs"); -const os = require("os"); -const path = require("path"); -const httpm = require("typed-rest-client/HttpClient"); -const semver = require("semver"); -const shell = require("shelljs"); -const uuidV4 = require("uuid/v4"); -const exec_1 = require("@actions/exec/lib/exec"); -const assert_1 = require("assert"); -class HTTPError extends Error { - constructor(httpStatusCode) { - super(`Unexpected HTTP response: ${httpStatusCode}`); - this.httpStatusCode = httpStatusCode; - Object.setPrototypeOf(this, new.target.prototype); - } -} -exports.HTTPError = HTTPError; -const IS_WINDOWS = process.platform === 'win32'; -const userAgent = 'actions/tool-cache'; -// On load grab temp directory and cache directory and remove them from env (currently don't want to expose this) -let tempDirectory = process.env['RUNNER_TEMP'] || ''; -let cacheRoot = process.env['RUNNER_TOOL_CACHE'] || ''; -// If directories not found, place them in common temp locations -if (!tempDirectory || !cacheRoot) { - let baseLocation; - if (IS_WINDOWS) { - // On windows use the USERPROFILE env variable - baseLocation = process.env['USERPROFILE'] || 'C:\\'; - } - else { - if (process.platform === 'darwin') { - baseLocation = '/Users'; - } - else { - baseLocation = '/home'; - } - } - if (!tempDirectory) { - tempDirectory = path.join(baseLocation, 'actions', 'temp'); - } - if (!cacheRoot) { - cacheRoot = path.join(baseLocation, 'actions', 'cache'); - } -} -/** - * Download a tool from an url and stream it into a file - * - * @param url url of tool to download - * @returns path to downloaded tool - */ -function downloadTool(url) { - return __awaiter(this, void 0, void 0, function* () { - // Wrap in a promise so that we can resolve from within stream callbacks - return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () { - try { - const http = new httpm.HttpClient(userAgent, [], { - allowRetries: true, - maxRetries: 3 - }); - const destPath = path.join(tempDirectory, uuidV4()); - yield io.mkdirP(tempDirectory); - core.debug(`Downloading ${url}`); - core.debug(`Downloading ${destPath}`); - if (fs.existsSync(destPath)) { - throw new Error(`Destination file path ${destPath} already exists`); - } - const response = yield http.get(url); - if (response.message.statusCode !== 200) { - const err = new HTTPError(response.message.statusCode); - core.debug(`Failed to download from "${url}". Code(${response.message.statusCode}) Message(${response.message.statusMessage})`); - throw err; - } - const file = fs.createWriteStream(destPath); - file.on('open', () => __awaiter(this, void 0, void 0, function* () { - try { - const stream = response.message.pipe(file); - stream.on('close', () => { - core.debug('download complete'); - resolve(destPath); - }); - } - catch (err) { - core.debug(`Failed to download from "${url}". Code(${response.message.statusCode}) Message(${response.message.statusMessage})`); - reject(err); - } - })); - file.on('error', err => { - file.end(); - reject(err); - }); - } - catch (err) { - reject(err); - } - })); - }); -} -exports.downloadTool = downloadTool; -/** - * Extract a .7z file - * - * @param file path to the .7z file - * @param dest destination directory. Optional. - * @param _7zPath path to 7zr.exe. Optional, for long path support. Most .7z archives do not have this - * problem. If your .7z archive contains very long paths, you can pass the path to 7zr.exe which will - * gracefully handle long paths. By default 7zdec.exe is used because it is a very small program and is - * bundled with the tool lib. However it does not support long paths. 7zr.exe is the reduced command line - * interface, it is smaller than the full command line interface, and it does support long paths. At the - * time of this writing, it is freely available from the LZMA SDK that is available on the 7zip website. - * Be sure to check the current license agreement. If 7zr.exe is bundled with your action, then the path - * to 7zr.exe can be pass to this function. - * @returns path to the destination directory - */ -function extract7z(file, dest, _7zPath) { - return __awaiter(this, void 0, void 0, function* () { - assert_1.ok(IS_WINDOWS, 'extract7z() not supported on current OS'); - assert_1.ok(file, 'parameter "file" is required'); - dest = dest || (yield _createExtractFolder(dest)); - const originalCwd = process.cwd(); - process.chdir(dest); - if (_7zPath) { - try { - const args = [ - 'x', - '-bb1', - '-bd', - '-sccUTF-8', - file - ]; - const options = { - silent: true - }; - yield exec_1.exec(`"${_7zPath}"`, args, options); - } - finally { - process.chdir(originalCwd); - } - } - else { - const escapedScript = path - .join(__dirname, '..', 'scripts', 'Invoke-7zdec.ps1') - .replace(/'/g, "''") - .replace(/"|\n|\r/g, ''); // double-up single quotes, remove double quotes and newlines - const escapedFile = file.replace(/'/g, "''").replace(/"|\n|\r/g, ''); - const escapedTarget = dest.replace(/'/g, "''").replace(/"|\n|\r/g, ''); - const command = `& '${escapedScript}' -Source '${escapedFile}' -Target '${escapedTarget}'`; - const args = [ - '-NoLogo', - '-Sta', - '-NoProfile', - '-NonInteractive', - '-ExecutionPolicy', - 'Unrestricted', - '-Command', - command - ]; - const options = { - silent: true - }; - try { - const powershellPath = yield io.which('powershell', true); - yield exec_1.exec(`"${powershellPath}"`, args, options); - } - finally { - process.chdir(originalCwd); - } - } - return dest; - }); -} -exports.extract7z = extract7z; -/** - * Extract a tar - * - * @param file path to the tar - * @param dest destination directory. Optional. - * @returns path to the destination directory - */ -function extractTar(file, dest) { - return __awaiter(this, void 0, void 0, function* () { - if (!file) { - throw new Error("parameter 'file' is required"); - } - dest = dest || (yield _createExtractFolder(dest)); - const tarPath = yield io.which('tar', true); - yield exec_1.exec(`"${tarPath}"`, ['xzC', dest, '-f', file]); - return dest; - }); -} -exports.extractTar = extractTar; -/** - * Extract a zip - * - * @param file path to the zip - * @param dest destination directory. Optional. - * @returns path to the destination directory - */ -function extractZip(file, dest) { - return __awaiter(this, void 0, void 0, function* () { - if (!file) { - throw new Error("parameter 'file' is required"); - } - dest = dest || (yield _createExtractFolder(dest)); - if (IS_WINDOWS) { - yield extractZipWin(file, dest); - } - else { - yield extractZipNix(file, dest); - } - return dest; - }); -} -exports.extractZip = extractZip; -function extractZipWin(file, dest) { - return __awaiter(this, void 0, void 0, function* () { - // build the powershell command - const escapedFile = file.replace(/'/g, "''").replace(/"|\n|\r/g, ''); // double-up single quotes, remove double quotes and newlines - const escapedDest = dest.replace(/'/g, "''").replace(/"|\n|\r/g, ''); - const command = `$ErrorActionPreference = 'Stop' ; try { Add-Type -AssemblyName System.IO.Compression.FileSystem } catch { } ; [System.IO.Compression.ZipFile]::ExtractToDirectory('${escapedFile}', '${escapedDest}')`; - // run powershell - const powershellPath = yield io.which('powershell'); - const args = [ - '-NoLogo', - '-Sta', - '-NoProfile', - '-NonInteractive', - '-ExecutionPolicy', - 'Unrestricted', - '-Command', - command - ]; - yield exec_1.exec(`"${powershellPath}"`, args); - }); -} -function extractZipNix(file, dest) { - return __awaiter(this, void 0, void 0, function* () { - const unzipPath = path.join(__dirname, '..', 'scripts', 'externals', 'unzip'); - yield exec_1.exec(`"${unzipPath}"`, [file], { cwd: dest }); - }); -} -/** - * Caches a directory and installs it into the tool cacheDir - * - * @param sourceDir the directory to cache into tools - * @param tool tool name - * @param version version of the tool. semver format - * @param arch architecture of the tool. Optional. Defaults to machine architecture - */ -function cacheDir(sourceDir, tool, version, arch) { - return __awaiter(this, void 0, void 0, function* () { - version = semver.clean(version) || version; - arch = arch || os.arch(); - core.debug(`Caching tool ${tool} ${version} ${arch}`); - core.debug(`source dir: ${sourceDir}`); - if (!fs.statSync(sourceDir).isDirectory()) { - throw new Error('sourceDir is not a directory'); - } - // Create the tool dir - const destPath = yield _createToolPath(tool, version, arch); - // copy each child item. do not move. move can fail on Windows - // due to anti-virus software having an open handle on a file. - for (const itemName of fs.readdirSync(sourceDir)) { - const s = path.join(sourceDir, itemName); - shell.cp('-R', s, destPath); - } - // write .complete - _completeToolPath(tool, version, arch); - return destPath; - }); -} -exports.cacheDir = cacheDir; -/** - * Caches a downloaded file (GUID) and installs it - * into the tool cache with a given targetName - * - * @param sourceFile the file to cache into tools. Typically a result of downloadTool which is a guid. - * @param targetFile the name of the file name in the tools directory - * @param tool tool name - * @param version version of the tool. semver format - * @param arch architecture of the tool. Optional. Defaults to machine architecture - */ -function cacheFile(sourceFile, targetFile, tool, version, arch) { - return __awaiter(this, void 0, void 0, function* () { - version = semver.clean(version) || version; - arch = arch || os.arch(); - core.debug(`Caching tool ${tool} ${version} ${arch}`); - core.debug(`source file: ${sourceFile}`); - if (!fs.statSync(sourceFile).isFile()) { - throw new Error('sourceFile is not a file'); - } - // create the tool dir - const destFolder = yield _createToolPath(tool, version, arch); - // copy instead of move. move can fail on Windows due to - // anti-virus software having an open handle on a file. - const destPath = path.join(destFolder, targetFile); - core.debug(`destination file ${destPath}`); - yield io.cp(sourceFile, destPath); - // write .complete - _completeToolPath(tool, version, arch); - return destFolder; - }); -} -exports.cacheFile = cacheFile; -/** - * Finds the path to a tool version in the local installed tool cache - * - * @param toolName name of the tool - * @param versionSpec version of the tool - * @param arch optional arch. defaults to arch of computer - */ -function find(toolName, versionSpec, arch) { - if (!toolName) { - throw new Error('toolName parameter is required'); - } - if (!versionSpec) { - throw new Error('versionSpec parameter is required'); - } - arch = arch || os.arch(); - // attempt to resolve an explicit version - if (!_isExplicitVersion(versionSpec)) { - const localVersions = findAllVersions(toolName, arch); - const match = _evaluateVersions(localVersions, versionSpec); - versionSpec = match; - } - // check for the explicit version in the cache - let toolPath = ''; - if (versionSpec) { - versionSpec = semver.clean(versionSpec) || ''; - const cachePath = path.join(cacheRoot, toolName, versionSpec, arch); - core.debug(`checking cache: ${cachePath}`); - if (fs.existsSync(cachePath) && fs.existsSync(`${cachePath}.complete`)) { - core.debug(`Found tool in cache ${toolName} ${versionSpec} ${arch}`); - toolPath = cachePath; - } - else { - core.debug('not found'); - } - } - return toolPath; -} -exports.find = find; -/** - * Finds the paths to all versions of a tool that are installed in the local tool cache - * - * @param toolName name of the tool - * @param arch optional arch. defaults to arch of computer - */ -function findAllVersions(toolName, arch) { - const versions = []; - arch = arch || os.arch(); - const toolPath = path.join(cacheRoot, toolName); - if (fs.existsSync(toolPath)) { - const children = fs.readdirSync(toolPath); - for (const child of children) { - if (_isExplicitVersion(child)) { - const fullPath = path.join(toolPath, child, arch || ''); - if (fs.existsSync(fullPath) && fs.existsSync(`${fullPath}.complete`)) { - versions.push(child); - } - } - } - } - return versions; -} -exports.findAllVersions = findAllVersions; -function _createExtractFolder(dest) { - return __awaiter(this, void 0, void 0, function* () { - if (!dest) { - // create a temp dir - dest = path.join(tempDirectory, uuidV4()); - } - yield io.mkdirP(dest); - return dest; - }); -} -function _createToolPath(tool, version, arch) { - return __awaiter(this, void 0, void 0, function* () { - const folderPath = path.join(cacheRoot, tool, semver.clean(version) || version, arch || ''); - core.debug(`destination ${folderPath}`); - const markerPath = `${folderPath}.complete`; - yield io.rmRF(folderPath); - yield io.rmRF(markerPath); - yield io.mkdirP(folderPath); - return folderPath; - }); -} -function _completeToolPath(tool, version, arch) { - const folderPath = path.join(cacheRoot, tool, semver.clean(version) || version, arch || ''); - const markerPath = `${folderPath}.complete`; - fs.writeFileSync(markerPath, ''); - core.debug('finished caching tool'); -} -function _isExplicitVersion(versionSpec) { - const c = semver.clean(versionSpec) || ''; - core.debug(`isExplicit: ${c}`); - const valid = semver.valid(c) != null; - core.debug(`explicit? ${valid}`); - return valid; -} -function _evaluateVersions(versions, versionSpec) { - let version = ''; - core.debug(`evaluating ${versions.length} versions`); - versions = versions.sort((a, b) => { - if (semver.gt(a, b)) { - return 1; - } - return -1; - }); - for (let i = versions.length - 1; i >= 0; i--) { - const potential = versions[i]; - const satisfied = semver.satisfies(potential, versionSpec); - if (satisfied) { - version = potential; - break; - } - } - if (version) { - core.debug(`matched: ${version}`); - } - else { - core.debug('match not found'); - } - return version; -} -//# sourceMappingURL=tool-cache.js.map +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + 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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const core = require("@actions/core"); +const io = require("@actions/io"); +const fs = require("fs"); +const os = require("os"); +const path = require("path"); +const httpm = require("typed-rest-client/HttpClient"); +const semver = require("semver"); +const uuidV4 = require("uuid/v4"); +const exec_1 = require("@actions/exec/lib/exec"); +const assert_1 = require("assert"); +class HTTPError extends Error { + constructor(httpStatusCode) { + super(`Unexpected HTTP response: ${httpStatusCode}`); + this.httpStatusCode = httpStatusCode; + Object.setPrototypeOf(this, new.target.prototype); + } +} +exports.HTTPError = HTTPError; +const IS_WINDOWS = process.platform === 'win32'; +const userAgent = 'actions/tool-cache'; +// On load grab temp directory and cache directory and remove them from env (currently don't want to expose this) +let tempDirectory = process.env['RUNNER_TEMP'] || ''; +let cacheRoot = process.env['RUNNER_TOOL_CACHE'] || ''; +// If directories not found, place them in common temp locations +if (!tempDirectory || !cacheRoot) { + let baseLocation; + if (IS_WINDOWS) { + // On windows use the USERPROFILE env variable + baseLocation = process.env['USERPROFILE'] || 'C:\\'; + } + else { + if (process.platform === 'darwin') { + baseLocation = '/Users'; + } + else { + baseLocation = '/home'; + } + } + if (!tempDirectory) { + tempDirectory = path.join(baseLocation, 'actions', 'temp'); + } + if (!cacheRoot) { + cacheRoot = path.join(baseLocation, 'actions', 'cache'); + } +} +/** + * Download a tool from an url and stream it into a file + * + * @param url url of tool to download + * @returns path to downloaded tool + */ +function downloadTool(url) { + return __awaiter(this, void 0, void 0, function* () { + // Wrap in a promise so that we can resolve from within stream callbacks + return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () { + try { + const http = new httpm.HttpClient(userAgent, [], { + allowRetries: true, + maxRetries: 3 + }); + const destPath = path.join(tempDirectory, uuidV4()); + yield io.mkdirP(tempDirectory); + core.debug(`Downloading ${url}`); + core.debug(`Downloading ${destPath}`); + if (fs.existsSync(destPath)) { + throw new Error(`Destination file path ${destPath} already exists`); + } + const response = yield http.get(url); + if (response.message.statusCode !== 200) { + const err = new HTTPError(response.message.statusCode); + core.debug(`Failed to download from "${url}". Code(${response.message.statusCode}) Message(${response.message.statusMessage})`); + throw err; + } + const file = fs.createWriteStream(destPath); + file.on('open', () => __awaiter(this, void 0, void 0, function* () { + try { + const stream = response.message.pipe(file); + stream.on('close', () => { + core.debug('download complete'); + resolve(destPath); + }); + } + catch (err) { + core.debug(`Failed to download from "${url}". Code(${response.message.statusCode}) Message(${response.message.statusMessage})`); + reject(err); + } + })); + file.on('error', err => { + file.end(); + reject(err); + }); + } + catch (err) { + reject(err); + } + })); + }); +} +exports.downloadTool = downloadTool; +/** + * Extract a .7z file + * + * @param file path to the .7z file + * @param dest destination directory. Optional. + * @param _7zPath path to 7zr.exe. Optional, for long path support. Most .7z archives do not have this + * problem. If your .7z archive contains very long paths, you can pass the path to 7zr.exe which will + * gracefully handle long paths. By default 7zdec.exe is used because it is a very small program and is + * bundled with the tool lib. However it does not support long paths. 7zr.exe is the reduced command line + * interface, it is smaller than the full command line interface, and it does support long paths. At the + * time of this writing, it is freely available from the LZMA SDK that is available on the 7zip website. + * Be sure to check the current license agreement. If 7zr.exe is bundled with your action, then the path + * to 7zr.exe can be pass to this function. + * @returns path to the destination directory + */ +function extract7z(file, dest, _7zPath) { + return __awaiter(this, void 0, void 0, function* () { + assert_1.ok(IS_WINDOWS, 'extract7z() not supported on current OS'); + assert_1.ok(file, 'parameter "file" is required'); + dest = dest || (yield _createExtractFolder(dest)); + const originalCwd = process.cwd(); + process.chdir(dest); + if (_7zPath) { + try { + const args = [ + 'x', + '-bb1', + '-bd', + '-sccUTF-8', + file + ]; + const options = { + silent: true + }; + yield exec_1.exec(`"${_7zPath}"`, args, options); + } + finally { + process.chdir(originalCwd); + } + } + else { + const escapedScript = path + .join(__dirname, '..', 'scripts', 'Invoke-7zdec.ps1') + .replace(/'/g, "''") + .replace(/"|\n|\r/g, ''); // double-up single quotes, remove double quotes and newlines + const escapedFile = file.replace(/'/g, "''").replace(/"|\n|\r/g, ''); + const escapedTarget = dest.replace(/'/g, "''").replace(/"|\n|\r/g, ''); + const command = `& '${escapedScript}' -Source '${escapedFile}' -Target '${escapedTarget}'`; + const args = [ + '-NoLogo', + '-Sta', + '-NoProfile', + '-NonInteractive', + '-ExecutionPolicy', + 'Unrestricted', + '-Command', + command + ]; + const options = { + silent: true + }; + try { + const powershellPath = yield io.which('powershell', true); + yield exec_1.exec(`"${powershellPath}"`, args, options); + } + finally { + process.chdir(originalCwd); + } + } + return dest; + }); +} +exports.extract7z = extract7z; +/** + * Extract a tar + * + * @param file path to the tar + * @param dest destination directory. Optional. + * @returns path to the destination directory + */ +function extractTar(file, dest) { + return __awaiter(this, void 0, void 0, function* () { + if (!file) { + throw new Error("parameter 'file' is required"); + } + dest = dest || (yield _createExtractFolder(dest)); + const tarPath = yield io.which('tar', true); + yield exec_1.exec(`"${tarPath}"`, ['xzC', dest, '-f', file]); + return dest; + }); +} +exports.extractTar = extractTar; +/** + * Extract a zip + * + * @param file path to the zip + * @param dest destination directory. Optional. + * @returns path to the destination directory + */ +function extractZip(file, dest) { + return __awaiter(this, void 0, void 0, function* () { + if (!file) { + throw new Error("parameter 'file' is required"); + } + dest = dest || (yield _createExtractFolder(dest)); + if (IS_WINDOWS) { + yield extractZipWin(file, dest); + } + else { + yield extractZipNix(file, dest); + } + return dest; + }); +} +exports.extractZip = extractZip; +function extractZipWin(file, dest) { + return __awaiter(this, void 0, void 0, function* () { + // build the powershell command + const escapedFile = file.replace(/'/g, "''").replace(/"|\n|\r/g, ''); // double-up single quotes, remove double quotes and newlines + const escapedDest = dest.replace(/'/g, "''").replace(/"|\n|\r/g, ''); + const command = `$ErrorActionPreference = 'Stop' ; try { Add-Type -AssemblyName System.IO.Compression.FileSystem } catch { } ; [System.IO.Compression.ZipFile]::ExtractToDirectory('${escapedFile}', '${escapedDest}')`; + // run powershell + const powershellPath = yield io.which('powershell'); + const args = [ + '-NoLogo', + '-Sta', + '-NoProfile', + '-NonInteractive', + '-ExecutionPolicy', + 'Unrestricted', + '-Command', + command + ]; + yield exec_1.exec(`"${powershellPath}"`, args); + }); +} +function extractZipNix(file, dest) { + return __awaiter(this, void 0, void 0, function* () { + const unzipPath = path.join(__dirname, '..', 'scripts', 'externals', 'unzip'); + yield exec_1.exec(`"${unzipPath}"`, [file], { cwd: dest }); + }); +} +/** + * Caches a directory and installs it into the tool cacheDir + * + * @param sourceDir the directory to cache into tools + * @param tool tool name + * @param version version of the tool. semver format + * @param arch architecture of the tool. Optional. Defaults to machine architecture + */ +function cacheDir(sourceDir, tool, version, arch) { + return __awaiter(this, void 0, void 0, function* () { + version = semver.clean(version) || version; + arch = arch || os.arch(); + core.debug(`Caching tool ${tool} ${version} ${arch}`); + core.debug(`source dir: ${sourceDir}`); + if (!fs.statSync(sourceDir).isDirectory()) { + throw new Error('sourceDir is not a directory'); + } + // Create the tool dir + const destPath = yield _createToolPath(tool, version, arch); + // copy each child item. do not move. move can fail on Windows + // due to anti-virus software having an open handle on a file. + for (const itemName of fs.readdirSync(sourceDir)) { + const s = path.join(sourceDir, itemName); + yield io.cp(s, destPath, { recursive: true }); + } + // write .complete + _completeToolPath(tool, version, arch); + return destPath; + }); +} +exports.cacheDir = cacheDir; +/** + * Caches a downloaded file (GUID) and installs it + * into the tool cache with a given targetName + * + * @param sourceFile the file to cache into tools. Typically a result of downloadTool which is a guid. + * @param targetFile the name of the file name in the tools directory + * @param tool tool name + * @param version version of the tool. semver format + * @param arch architecture of the tool. Optional. Defaults to machine architecture + */ +function cacheFile(sourceFile, targetFile, tool, version, arch) { + return __awaiter(this, void 0, void 0, function* () { + version = semver.clean(version) || version; + arch = arch || os.arch(); + core.debug(`Caching tool ${tool} ${version} ${arch}`); + core.debug(`source file: ${sourceFile}`); + if (!fs.statSync(sourceFile).isFile()) { + throw new Error('sourceFile is not a file'); + } + // create the tool dir + const destFolder = yield _createToolPath(tool, version, arch); + // copy instead of move. move can fail on Windows due to + // anti-virus software having an open handle on a file. + const destPath = path.join(destFolder, targetFile); + core.debug(`destination file ${destPath}`); + yield io.cp(sourceFile, destPath); + // write .complete + _completeToolPath(tool, version, arch); + return destFolder; + }); +} +exports.cacheFile = cacheFile; +/** + * Finds the path to a tool version in the local installed tool cache + * + * @param toolName name of the tool + * @param versionSpec version of the tool + * @param arch optional arch. defaults to arch of computer + */ +function find(toolName, versionSpec, arch) { + if (!toolName) { + throw new Error('toolName parameter is required'); + } + if (!versionSpec) { + throw new Error('versionSpec parameter is required'); + } + arch = arch || os.arch(); + // attempt to resolve an explicit version + if (!_isExplicitVersion(versionSpec)) { + const localVersions = findAllVersions(toolName, arch); + const match = _evaluateVersions(localVersions, versionSpec); + versionSpec = match; + } + // check for the explicit version in the cache + let toolPath = ''; + if (versionSpec) { + versionSpec = semver.clean(versionSpec) || ''; + const cachePath = path.join(cacheRoot, toolName, versionSpec, arch); + core.debug(`checking cache: ${cachePath}`); + if (fs.existsSync(cachePath) && fs.existsSync(`${cachePath}.complete`)) { + core.debug(`Found tool in cache ${toolName} ${versionSpec} ${arch}`); + toolPath = cachePath; + } + else { + core.debug('not found'); + } + } + return toolPath; +} +exports.find = find; +/** + * Finds the paths to all versions of a tool that are installed in the local tool cache + * + * @param toolName name of the tool + * @param arch optional arch. defaults to arch of computer + */ +function findAllVersions(toolName, arch) { + const versions = []; + arch = arch || os.arch(); + const toolPath = path.join(cacheRoot, toolName); + if (fs.existsSync(toolPath)) { + const children = fs.readdirSync(toolPath); + for (const child of children) { + if (_isExplicitVersion(child)) { + const fullPath = path.join(toolPath, child, arch || ''); + if (fs.existsSync(fullPath) && fs.existsSync(`${fullPath}.complete`)) { + versions.push(child); + } + } + } + } + return versions; +} +exports.findAllVersions = findAllVersions; +function _createExtractFolder(dest) { + return __awaiter(this, void 0, void 0, function* () { + if (!dest) { + // create a temp dir + dest = path.join(tempDirectory, uuidV4()); + } + yield io.mkdirP(dest); + return dest; + }); +} +function _createToolPath(tool, version, arch) { + return __awaiter(this, void 0, void 0, function* () { + const folderPath = path.join(cacheRoot, tool, semver.clean(version) || version, arch || ''); + core.debug(`destination ${folderPath}`); + const markerPath = `${folderPath}.complete`; + yield io.rmRF(folderPath); + yield io.rmRF(markerPath); + yield io.mkdirP(folderPath); + return folderPath; + }); +} +function _completeToolPath(tool, version, arch) { + const folderPath = path.join(cacheRoot, tool, semver.clean(version) || version, arch || ''); + const markerPath = `${folderPath}.complete`; + fs.writeFileSync(markerPath, ''); + core.debug('finished caching tool'); +} +function _isExplicitVersion(versionSpec) { + const c = semver.clean(versionSpec) || ''; + core.debug(`isExplicit: ${c}`); + const valid = semver.valid(c) != null; + core.debug(`explicit? ${valid}`); + return valid; +} +function _evaluateVersions(versions, versionSpec) { + let version = ''; + core.debug(`evaluating ${versions.length} versions`); + versions = versions.sort((a, b) => { + if (semver.gt(a, b)) { + return 1; + } + return -1; + }); + for (let i = versions.length - 1; i >= 0; i--) { + const potential = versions[i]; + const satisfied = semver.satisfies(potential, versionSpec); + if (satisfied) { + version = potential; + break; + } + } + if (version) { + core.debug(`matched: ${version}`); + } + else { + core.debug('match not found'); + } + return version; +} +//# sourceMappingURL=tool-cache.js.map \ No newline at end of file diff --git a/node_modules/@actions/tool-cache/lib/tool-cache.js.map b/node_modules/@actions/tool-cache/lib/tool-cache.js.map index 55017746..0c4f30b9 100644 --- a/node_modules/@actions/tool-cache/lib/tool-cache.js.map +++ b/node_modules/@actions/tool-cache/lib/tool-cache.js.map @@ -1 +1 @@ -{"version":3,"file":"tool-cache.js","sourceRoot":"","sources":["../src/tool-cache.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"tool-cache.js","sourceRoot":"","sources":["../src/tool-cache.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,sCAAqC;AACrC,kCAAiC;AACjC,yBAAwB;AACxB,yBAAwB;AACxB,6BAA4B;AAC5B,sDAAqD;AACrD,iCAAgC;AAChC,kCAAiC;AACjC,iDAA2C;AAE3C,mCAAyB;AAEzB,MAAa,SAAU,SAAQ,KAAK;IAClC,YAAqB,cAAkC;QACrD,KAAK,CAAC,6BAA6B,cAAc,EAAE,CAAC,CAAA;QADjC,mBAAc,GAAd,cAAc,CAAoB;QAErD,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IACnD,CAAC;CACF;AALD,8BAKC;AAED,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAA;AAC/C,MAAM,SAAS,GAAG,oBAAoB,CAAA;AAEtC,iHAAiH;AACjH,IAAI,aAAa,GAAW,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,CAAA;AAC5D,IAAI,SAAS,GAAW,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAA;AAC9D,gEAAgE;AAChE,IAAI,CAAC,aAAa,IAAI,CAAC,SAAS,EAAE;IAChC,IAAI,YAAoB,CAAA;IACxB,IAAI,UAAU,EAAE;QACd,8CAA8C;QAC9C,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,MAAM,CAAA;KACpD;SAAM;QACL,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE;YACjC,YAAY,GAAG,QAAQ,CAAA;SACxB;aAAM;YACL,YAAY,GAAG,OAAO,CAAA;SACvB;KACF;IACD,IAAI,CAAC,aAAa,EAAE;QAClB,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;KAC3D;IACD,IAAI,CAAC,SAAS,EAAE;QACd,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;KACxD;CACF;AAED;;;;;GAKG;AACH,SAAsB,YAAY,CAAC,GAAW;;QAC5C,wEAAwE;QACxE,OAAO,IAAI,OAAO,CAAS,CAAO,OAAO,EAAE,MAAM,EAAE,EAAE;YACnD,IAAI;gBACF,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,UAAU,CAAC,SAAS,EAAE,EAAE,EAAE;oBAC/C,YAAY,EAAE,IAAI;oBAClB,UAAU,EAAE,CAAC;iBACd,CAAC,CAAA;gBACF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC,CAAA;gBAEnD,MAAM,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;gBAC9B,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,EAAE,CAAC,CAAA;gBAChC,IAAI,CAAC,KAAK,CAAC,eAAe,QAAQ,EAAE,CAAC,CAAA;gBAErC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;oBAC3B,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,iBAAiB,CAAC,CAAA;iBACpE;gBAED,MAAM,QAAQ,GAA6B,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;gBAE9D,IAAI,QAAQ,CAAC,OAAO,CAAC,UAAU,KAAK,GAAG,EAAE;oBACvC,MAAM,GAAG,GAAG,IAAI,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;oBACtD,IAAI,CAAC,KAAK,CACR,4BAA4B,GAAG,WAC7B,QAAQ,CAAC,OAAO,CAAC,UACnB,aAAa,QAAQ,CAAC,OAAO,CAAC,aAAa,GAAG,CAC/C,CAAA;oBACD,MAAM,GAAG,CAAA;iBACV;gBAED,MAAM,IAAI,GAA0B,EAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAA;gBAClE,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,GAAS,EAAE;oBACzB,IAAI;wBACF,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;wBAC1C,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;4BACtB,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAA;4BAC/B,OAAO,CAAC,QAAQ,CAAC,CAAA;wBACnB,CAAC,CAAC,CAAA;qBACH;oBAAC,OAAO,GAAG,EAAE;wBACZ,IAAI,CAAC,KAAK,CACR,4BAA4B,GAAG,WAC7B,QAAQ,CAAC,OAAO,CAAC,UACnB,aAAa,QAAQ,CAAC,OAAO,CAAC,aAAa,GAAG,CAC/C,CAAA;wBACD,MAAM,CAAC,GAAG,CAAC,CAAA;qBACZ;gBACH,CAAC,CAAA,CAAC,CAAA;gBACF,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE;oBACrB,IAAI,CAAC,GAAG,EAAE,CAAA;oBACV,MAAM,CAAC,GAAG,CAAC,CAAA;gBACb,CAAC,CAAC,CAAA;aACH;YAAC,OAAO,GAAG,EAAE;gBACZ,MAAM,CAAC,GAAG,CAAC,CAAA;aACZ;QACH,CAAC,CAAA,CAAC,CAAA;IACJ,CAAC;CAAA;AAvDD,oCAuDC;AAED;;;;;;;;;;;;;;GAcG;AACH,SAAsB,SAAS,CAC7B,IAAY,EACZ,IAAa,EACb,OAAgB;;QAEhB,WAAE,CAAC,UAAU,EAAE,yCAAyC,CAAC,CAAA;QACzD,WAAE,CAAC,IAAI,EAAE,8BAA8B,CAAC,CAAA;QAExC,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAA;QAEjD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;QACjC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACnB,IAAI,OAAO,EAAE;YACX,IAAI;gBACF,MAAM,IAAI,GAAa;oBACrB,GAAG;oBACH,MAAM;oBACN,KAAK;oBACL,WAAW;oBACX,IAAI;iBACL,CAAA;gBACD,MAAM,OAAO,GAAgB;oBAC3B,MAAM,EAAE,IAAI;iBACb,CAAA;gBACD,MAAM,WAAI,CAAC,IAAI,OAAO,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;aAC1C;oBAAS;gBACR,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;aAC3B;SACF;aAAM;YACL,MAAM,aAAa,GAAG,IAAI;iBACvB,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,kBAAkB,CAAC;iBACpD,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;iBACnB,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA,CAAC,6DAA6D;YACxF,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;YACpE,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;YACtE,MAAM,OAAO,GAAG,MAAM,aAAa,cAAc,WAAW,cAAc,aAAa,GAAG,CAAA;YAC1F,MAAM,IAAI,GAAa;gBACrB,SAAS;gBACT,MAAM;gBACN,YAAY;gBACZ,iBAAiB;gBACjB,kBAAkB;gBAClB,cAAc;gBACd,UAAU;gBACV,OAAO;aACR,CAAA;YACD,MAAM,OAAO,GAAgB;gBAC3B,MAAM,EAAE,IAAI;aACb,CAAA;YACD,IAAI;gBACF,MAAM,cAAc,GAAW,MAAM,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;gBACjE,MAAM,WAAI,CAAC,IAAI,cAAc,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;aACjD;oBAAS;gBACR,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;aAC3B;SACF;QAED,OAAO,IAAI,CAAA;IACb,CAAC;CAAA;AA1DD,8BA0DC;AAED;;;;;;GAMG;AACH,SAAsB,UAAU,CAAC,IAAY,EAAE,IAAa;;QAC1D,IAAI,CAAC,IAAI,EAAE;YACT,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;SAChD;QAED,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAA;QACjD,MAAM,OAAO,GAAW,MAAM,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;QACnD,MAAM,WAAI,CAAC,IAAI,OAAO,GAAG,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;QAErD,OAAO,IAAI,CAAA;IACb,CAAC;CAAA;AAVD,gCAUC;AAED;;;;;;GAMG;AACH,SAAsB,UAAU,CAAC,IAAY,EAAE,IAAa;;QAC1D,IAAI,CAAC,IAAI,EAAE;YACT,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;SAChD;QAED,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAA;QAEjD,IAAI,UAAU,EAAE;YACd,MAAM,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;SAChC;aAAM;YACL,MAAM,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;SAChC;QAED,OAAO,IAAI,CAAA;IACb,CAAC;CAAA;AAdD,gCAcC;AAED,SAAe,aAAa,CAAC,IAAY,EAAE,IAAY;;QACrD,+BAA+B;QAC/B,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA,CAAC,6DAA6D;QAClI,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;QACpE,MAAM,OAAO,GAAG,sKAAsK,WAAW,OAAO,WAAW,IAAI,CAAA;QAEvN,iBAAiB;QACjB,MAAM,cAAc,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;QACnD,MAAM,IAAI,GAAG;YACX,SAAS;YACT,MAAM;YACN,YAAY;YACZ,iBAAiB;YACjB,kBAAkB;YAClB,cAAc;YACd,UAAU;YACV,OAAO;SACR,CAAA;QACD,MAAM,WAAI,CAAC,IAAI,cAAc,GAAG,EAAE,IAAI,CAAC,CAAA;IACzC,CAAC;CAAA;AAED,SAAe,aAAa,CAAC,IAAY,EAAE,IAAY;;QACrD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,CAAC,CAAA;QAC7E,MAAM,WAAI,CAAC,IAAI,SAAS,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,EAAC,GAAG,EAAE,IAAI,EAAC,CAAC,CAAA;IACnD,CAAC;CAAA;AAED;;;;;;;GAOG;AACH,SAAsB,QAAQ,CAC5B,SAAiB,EACjB,IAAY,EACZ,OAAe,EACf,IAAa;;QAEb,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,OAAO,CAAA;QAC1C,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,IAAI,EAAE,CAAA;QACxB,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC,CAAA;QAErD,IAAI,CAAC,KAAK,CAAC,eAAe,SAAS,EAAE,CAAC,CAAA;QACtC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,EAAE;YACzC,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;SAChD;QAED,sBAAsB;QACtB,MAAM,QAAQ,GAAW,MAAM,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;QACnE,8DAA8D;QAC9D,8DAA8D;QAC9D,KAAK,MAAM,QAAQ,IAAI,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE;YAChD,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;YACxC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAA;SAC5C;QAED,kBAAkB;QAClB,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;QAEtC,OAAO,QAAQ,CAAA;IACjB,CAAC;CAAA;AA5BD,4BA4BC;AAED;;;;;;;;;GASG;AACH,SAAsB,SAAS,CAC7B,UAAkB,EAClB,UAAkB,EAClB,IAAY,EACZ,OAAe,EACf,IAAa;;QAEb,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,OAAO,CAAA;QAC1C,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,IAAI,EAAE,CAAA;QACxB,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC,CAAA;QAErD,IAAI,CAAC,KAAK,CAAC,gBAAgB,UAAU,EAAE,CAAC,CAAA;QACxC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,EAAE;YACrC,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;SAC5C;QAED,sBAAsB;QACtB,MAAM,UAAU,GAAW,MAAM,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;QAErE,wDAAwD;QACxD,uDAAuD;QACvD,MAAM,QAAQ,GAAW,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;QAC1D,IAAI,CAAC,KAAK,CAAC,oBAAoB,QAAQ,EAAE,CAAC,CAAA;QAC1C,MAAM,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;QAEjC,kBAAkB;QAClB,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;QAEtC,OAAO,UAAU,CAAA;IACnB,CAAC;CAAA;AA7BD,8BA6BC;AAED;;;;;;GAMG;AACH,SAAgB,IAAI,CAClB,QAAgB,EAChB,WAAmB,EACnB,IAAa;IAEb,IAAI,CAAC,QAAQ,EAAE;QACb,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;KAClD;IAED,IAAI,CAAC,WAAW,EAAE;QAChB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAA;KACrD;IAED,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,IAAI,EAAE,CAAA;IAExB,yCAAyC;IACzC,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,EAAE;QACpC,MAAM,aAAa,GAAa,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;QAC/D,MAAM,KAAK,GAAG,iBAAiB,CAAC,aAAa,EAAE,WAAW,CAAC,CAAA;QAC3D,WAAW,GAAG,KAAK,CAAA;KACpB;IAED,8CAA8C;IAC9C,IAAI,QAAQ,GAAG,EAAE,CAAA;IACjB,IAAI,WAAW,EAAE;QACf,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAA;QAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,CAAC,CAAA;QACnE,IAAI,CAAC,KAAK,CAAC,mBAAmB,SAAS,EAAE,CAAC,CAAA;QAC1C,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,SAAS,WAAW,CAAC,EAAE;YACtE,IAAI,CAAC,KAAK,CAAC,uBAAuB,QAAQ,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC,CAAA;YACpE,QAAQ,GAAG,SAAS,CAAA;SACrB;aAAM;YACL,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;SACxB;KACF;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC;AApCD,oBAoCC;AAED;;;;;GAKG;AACH,SAAgB,eAAe,CAAC,QAAgB,EAAE,IAAa;IAC7D,MAAM,QAAQ,GAAa,EAAE,CAAA;IAE7B,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,IAAI,EAAE,CAAA;IACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;IAE/C,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;QAC3B,MAAM,QAAQ,GAAa,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;QACnD,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE;YAC5B,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE;gBAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,IAAI,EAAE,CAAC,CAAA;gBACvD,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,QAAQ,WAAW,CAAC,EAAE;oBACpE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;iBACrB;aACF;SACF;KACF;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC;AAnBD,0CAmBC;AAED,SAAe,oBAAoB,CAAC,IAAa;;QAC/C,IAAI,CAAC,IAAI,EAAE;YACT,oBAAoB;YACpB,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC,CAAA;SAC1C;QACD,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACrB,OAAO,IAAI,CAAA;IACb,CAAC;CAAA;AAED,SAAe,eAAe,CAC5B,IAAY,EACZ,OAAe,EACf,IAAa;;QAEb,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAC1B,SAAS,EACT,IAAI,EACJ,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,OAAO,EAChC,IAAI,IAAI,EAAE,CACX,CAAA;QACD,IAAI,CAAC,KAAK,CAAC,eAAe,UAAU,EAAE,CAAC,CAAA;QACvC,MAAM,UAAU,GAAG,GAAG,UAAU,WAAW,CAAA;QAC3C,MAAM,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QACzB,MAAM,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QACzB,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QAC3B,OAAO,UAAU,CAAA;IACnB,CAAC;CAAA;AAED,SAAS,iBAAiB,CAAC,IAAY,EAAE,OAAe,EAAE,IAAa;IACrE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAC1B,SAAS,EACT,IAAI,EACJ,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,OAAO,EAChC,IAAI,IAAI,EAAE,CACX,CAAA;IACD,MAAM,UAAU,GAAG,GAAG,UAAU,WAAW,CAAA;IAC3C,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;IAChC,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAA;AACrC,CAAC;AAED,SAAS,kBAAkB,CAAC,WAAmB;IAC7C,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAA;IACzC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC,CAAA;IAE9B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAA;IACrC,IAAI,CAAC,KAAK,CAAC,aAAa,KAAK,EAAE,CAAC,CAAA;IAEhC,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAkB,EAAE,WAAmB;IAChE,IAAI,OAAO,GAAG,EAAE,CAAA;IAChB,IAAI,CAAC,KAAK,CAAC,cAAc,QAAQ,CAAC,MAAM,WAAW,CAAC,CAAA;IACpD,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAChC,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;YACnB,OAAO,CAAC,CAAA;SACT;QACD,OAAO,CAAC,CAAC,CAAA;IACX,CAAC,CAAC,CAAA;IACF,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;QAC7C,MAAM,SAAS,GAAW,QAAQ,CAAC,CAAC,CAAC,CAAA;QACrC,MAAM,SAAS,GAAY,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;QACnE,IAAI,SAAS,EAAE;YACb,OAAO,GAAG,SAAS,CAAA;YACnB,MAAK;SACN;KACF;IAED,IAAI,OAAO,EAAE;QACX,IAAI,CAAC,KAAK,CAAC,YAAY,OAAO,EAAE,CAAC,CAAA;KAClC;SAAM;QACL,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAA;KAC9B;IAED,OAAO,OAAO,CAAA;AAChB,CAAC"} \ No newline at end of file diff --git a/node_modules/@actions/tool-cache/package.json b/node_modules/@actions/tool-cache/package.json index aee6aeaa..76ca4745 100644 --- a/node_modules/@actions/tool-cache/package.json +++ b/node_modules/@actions/tool-cache/package.json @@ -2,7 +2,7 @@ "_from": "file:toolkit\\actions-tool-cache-0.0.0.tgz", "_id": "@actions/tool-cache@0.0.0", "_inBundle": false, - "_integrity": "sha512-R08MGFekNLkf1ofh5wi8QVgmFyPgkKC+Cp8FRE1n6zOpHbUWv3QGa6eR6z+2ESuGCstOPtbq/tRgZsSusItm9Q==", + "_integrity": "sha512-33oYAVRdp6MWNT7Yca0//SmOsvpE7FpFfNA/LzwjIZdLucHaO6V67dqZ5p81CTBncrZal+O5kE9B8qSk0rhipg==", "_location": "/@actions/tool-cache", "_phantomChildren": {}, "_requested": { @@ -17,10 +17,11 @@ "fetchSpec": "C:\\Users\\Administrator\\Documents\\setup-node\\toolkit\\actions-tool-cache-0.0.0.tgz" }, "_requiredBy": [ + "#USER", "/" ], "_resolved": "C:\\Users\\Administrator\\Documents\\setup-node\\toolkit\\actions-tool-cache-0.0.0.tgz", - "_shasum": "e4ffe745db46f47e512db20e80f8ad25910e41d1", + "_shasum": "ce9e7d81ebb138911d20b9f74c8aa6120caac9b1", "_spec": "@actions/tool-cache@file:toolkit/actions-tool-cache-0.0.0.tgz", "_where": "C:\\Users\\Administrator\\Documents\\setup-node", "bugs": { @@ -32,7 +33,6 @@ "@actions/exec": "^0.0.0", "@actions/io": "^0.0.0", "semver": "^6.1.0", - "shelljs": "^0.3.0", "typed-rest-client": "^1.4.0", "uuid": "^3.3.2" }, diff --git a/node_modules/@actions/tool-cache/scripts/Invoke-7zdec.ps1 b/node_modules/@actions/tool-cache/scripts/Invoke-7zdec.ps1 index ee3822d0..8b39bb4d 100644 --- a/node_modules/@actions/tool-cache/scripts/Invoke-7zdec.ps1 +++ b/node_modules/@actions/tool-cache/scripts/Invoke-7zdec.ps1 @@ -1,60 +1,60 @@ -[CmdletBinding()] -param( - [Parameter(Mandatory = $true)] - [string]$Source, - - [Parameter(Mandatory = $true)] - [string]$Target) - -# This script translates the output from 7zdec into UTF8. Node has limited -# built-in support for encodings. -# -# 7zdec uses the system default code page. The system default code page varies -# depending on the locale configuration. On an en-US box, the system default code -# page is Windows-1252. -# -# Note, on a typical en-US box, testing with the 'ç' character is a good way to -# determine whether data is passed correctly between processes. This is because -# the 'ç' character has a different code point across each of the common encodings -# on a typical en-US box, i.e. -# 1) the default console-output code page (IBM437) -# 2) the system default code page (i.e. CP_ACP) (Windows-1252) -# 3) UTF8 - -$ErrorActionPreference = 'Stop' - -# Redefine the wrapper over STDOUT to use UTF8. Node expects UTF8 by default. -$stdout = [System.Console]::OpenStandardOutput() -$utf8 = New-Object System.Text.UTF8Encoding($false) # do not emit BOM -$writer = New-Object System.IO.StreamWriter($stdout, $utf8) -[System.Console]::SetOut($writer) - -# All subsequent output must be written using [System.Console]::WriteLine(). In -# PowerShell 4, Write-Host and Out-Default do not consider the updated stream writer. - -Set-Location -LiteralPath $Target - -# Print the ##command. -$_7zdec = Join-Path -Path "$PSScriptRoot" -ChildPath "externals/7zdec.exe" -[System.Console]::WriteLine("##[command]$_7zdec x `"$Source`"") - -# The $OutputEncoding variable instructs PowerShell how to interpret the output -# from the external command. -$OutputEncoding = [System.Text.Encoding]::Default - -# Note, the output from 7zdec.exe needs to be iterated over. Otherwise PowerShell.exe -# will launch the external command in such a way that it inherits the streams. -& $_7zdec x $Source 2>&1 | - ForEach-Object { - if ($_ -is [System.Management.Automation.ErrorRecord]) { - [System.Console]::WriteLine($_.Exception.Message) - } - else { - [System.Console]::WriteLine($_) - } - } -[System.Console]::WriteLine("##[debug]7zdec.exe exit code '$LASTEXITCODE'") -[System.Console]::Out.Flush() -if ($LASTEXITCODE -ne 0) { - exit $LASTEXITCODE +[CmdletBinding()] +param( + [Parameter(Mandatory = $true)] + [string]$Source, + + [Parameter(Mandatory = $true)] + [string]$Target) + +# This script translates the output from 7zdec into UTF8. Node has limited +# built-in support for encodings. +# +# 7zdec uses the system default code page. The system default code page varies +# depending on the locale configuration. On an en-US box, the system default code +# page is Windows-1252. +# +# Note, on a typical en-US box, testing with the 'ç' character is a good way to +# determine whether data is passed correctly between processes. This is because +# the 'ç' character has a different code point across each of the common encodings +# on a typical en-US box, i.e. +# 1) the default console-output code page (IBM437) +# 2) the system default code page (i.e. CP_ACP) (Windows-1252) +# 3) UTF8 + +$ErrorActionPreference = 'Stop' + +# Redefine the wrapper over STDOUT to use UTF8. Node expects UTF8 by default. +$stdout = [System.Console]::OpenStandardOutput() +$utf8 = New-Object System.Text.UTF8Encoding($false) # do not emit BOM +$writer = New-Object System.IO.StreamWriter($stdout, $utf8) +[System.Console]::SetOut($writer) + +# All subsequent output must be written using [System.Console]::WriteLine(). In +# PowerShell 4, Write-Host and Out-Default do not consider the updated stream writer. + +Set-Location -LiteralPath $Target + +# Print the ##command. +$_7zdec = Join-Path -Path "$PSScriptRoot" -ChildPath "externals/7zdec.exe" +[System.Console]::WriteLine("##[command]$_7zdec x `"$Source`"") + +# The $OutputEncoding variable instructs PowerShell how to interpret the output +# from the external command. +$OutputEncoding = [System.Text.Encoding]::Default + +# Note, the output from 7zdec.exe needs to be iterated over. Otherwise PowerShell.exe +# will launch the external command in such a way that it inherits the streams. +& $_7zdec x $Source 2>&1 | + ForEach-Object { + if ($_ -is [System.Management.Automation.ErrorRecord]) { + [System.Console]::WriteLine($_.Exception.Message) + } + else { + [System.Console]::WriteLine($_) + } + } +[System.Console]::WriteLine("##[debug]7zdec.exe exit code '$LASTEXITCODE'") +[System.Console]::Out.Flush() +if ($LASTEXITCODE -ne 0) { + exit $LASTEXITCODE } \ No newline at end of file diff --git a/node_modules/shelljs/.documentup.json b/node_modules/shelljs/.documentup.json deleted file mode 100644 index 57fe3011..00000000 --- a/node_modules/shelljs/.documentup.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "ShellJS", - "twitter": [ - "r2r" - ] -} diff --git a/node_modules/shelljs/.jshintrc b/node_modules/shelljs/.jshintrc deleted file mode 100644 index a80c559a..00000000 --- a/node_modules/shelljs/.jshintrc +++ /dev/null @@ -1,7 +0,0 @@ -{ - "loopfunc": true, - "sub": true, - "undef": true, - "unused": true, - "node": true -} \ No newline at end of file diff --git a/node_modules/shelljs/.npmignore b/node_modules/shelljs/.npmignore deleted file mode 100644 index 6b20c38a..00000000 --- a/node_modules/shelljs/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -test/ -tmp/ \ No newline at end of file diff --git a/node_modules/shelljs/.travis.yml b/node_modules/shelljs/.travis.yml deleted file mode 100644 index 99cdc743..00000000 --- a/node_modules/shelljs/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: node_js -node_js: - - "0.8" - - "0.10" - - "0.11" diff --git a/node_modules/shelljs/LICENSE b/node_modules/shelljs/LICENSE deleted file mode 100644 index 1b35ee9f..00000000 --- a/node_modules/shelljs/LICENSE +++ /dev/null @@ -1,26 +0,0 @@ -Copyright (c) 2012, Artur Adib <aadib@mozilla.com> -All rights reserved. - -You may use this project under the terms of the New BSD license as follows: - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Artur Adib nor the - names of the contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL ARTUR ADIB BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/shelljs/README.md b/node_modules/shelljs/README.md deleted file mode 100644 index 51358bd3..00000000 --- a/node_modules/shelljs/README.md +++ /dev/null @@ -1,569 +0,0 @@ -# ShellJS - Unix shell commands for Node.js [](http://travis-ci.org/arturadib/shelljs) - -ShellJS is a portable **(Windows/Linux/OS X)** implementation of Unix shell commands on top of the Node.js API. You can use it to eliminate your shell script's dependency on Unix while still keeping its familiar and powerful commands. You can also install it globally so you can run it from outside Node projects - say goodbye to those gnarly Bash scripts! - -The project is [unit-tested](http://travis-ci.org/arturadib/shelljs) and battled-tested in projects like: - -+ [PDF.js](http://github.com/mozilla/pdf.js) - Firefox's next-gen PDF reader -+ [Firebug](http://getfirebug.com/) - Firefox's infamous debugger -+ [JSHint](http://jshint.com) - Most popular JavaScript linter -+ [Zepto](http://zeptojs.com) - jQuery-compatible JavaScript library for modern browsers -+ [Yeoman](http://yeoman.io/) - Web application stack and development tool -+ [Deployd.com](http://deployd.com) - Open source PaaS for quick API backend generation - -and [many more](https://npmjs.org/browse/depended/shelljs). - -## Installing - -Via npm: - -```bash -$ npm install [-g] shelljs -``` - -If the global option `-g` is specified, the binary `shjs` will be installed. This makes it possible to -run ShellJS scripts much like any shell script from the command line, i.e. without requiring a `node_modules` folder: - -```bash -$ shjs my_script -``` - -You can also just copy `shell.js` into your project's directory, and `require()` accordingly. - - -## Examples - -### JavaScript - -```javascript -require('shelljs/global'); - -if (!which('git')) { - echo('Sorry, this script requires git'); - exit(1); -} - -// Copy files to release dir -mkdir('-p', 'out/Release'); -cp('-R', 'stuff/*', 'out/Release'); - -// Replace macros in each .js file -cd('lib'); -ls('*.js').forEach(function(file) { - sed('-i', 'BUILD_VERSION', 'v0.1.2', file); - sed('-i', /.*REMOVE_THIS_LINE.*\n/, '', file); - sed('-i', /.*REPLACE_LINE_WITH_MACRO.*\n/, cat('macro.js'), file); -}); -cd('..'); - -// Run external tool synchronously -if (exec('git commit -am "Auto-commit"').code !== 0) { - echo('Error: Git commit failed'); - exit(1); -} -``` - -### CoffeeScript - -```coffeescript -require 'shelljs/global' - -if not which 'git' - echo 'Sorry, this script requires git' - exit 1 - -# Copy files to release dir -mkdir '-p', 'out/Release' -cp '-R', 'stuff/*', 'out/Release' - -# Replace macros in each .js file -cd 'lib' -for file in ls '*.js' - sed '-i', 'BUILD_VERSION', 'v0.1.2', file - sed '-i', /.*REMOVE_THIS_LINE.*\n/, '', file - sed '-i', /.*REPLACE_LINE_WITH_MACRO.*\n/, cat 'macro.js', file -cd '..' - -# Run external tool synchronously -if (exec 'git commit -am "Auto-commit"').code != 0 - echo 'Error: Git commit failed' - exit 1 -``` - -## Global vs. Local - -The example above uses the convenience script `shelljs/global` to reduce verbosity. If polluting your global namespace is not desirable, simply require `shelljs`. - -Example: - -```javascript -var shell = require('shelljs'); -shell.echo('hello world'); -``` - -## Make tool - -A convenience script `shelljs/make` is also provided to mimic the behavior of a Unix Makefile. In this case all shell objects are global, and command line arguments will cause the script to execute only the corresponding function in the global `target` object. To avoid redundant calls, target functions are executed only once per script. - -Example (CoffeeScript): - -```coffeescript -require 'shelljs/make' - -target.all = -> - target.bundle() - target.docs() - -target.bundle = -> - cd __dirname - mkdir 'build' - cd 'lib' - (cat '*.js').to '../build/output.js' - -target.docs = -> - cd __dirname - mkdir 'docs' - cd 'lib' - for file in ls '*.js' - text = grep '//@', file # extract special comments - text.replace '//@', '' # remove comment tags - text.to 'docs/my_docs.md' -``` - -To run the target `all`, call the above script without arguments: `$ node make`. To run the target `docs`: `$ node make docs`, and so on. - - - -<!-- - - DO NOT MODIFY BEYOND THIS POINT - IT'S AUTOMATICALLY GENERATED - ---> - - -## Command reference - - -All commands run synchronously, unless otherwise stated. - - -### cd('dir') -Changes to directory `dir` for the duration of the script - - -### pwd() -Returns the current directory. - - -### ls([options ,] path [,path ...]) -### ls([options ,] path_array) -Available options: - -+ `-R`: recursive -+ `-A`: all files (include files beginning with `.`, except for `.` and `..`) - -Examples: - -```javascript -ls('projs/*.js'); -ls('-R', '/users/me', '/tmp'); -ls('-R', ['/users/me', '/tmp']); // same as above -``` - -Returns array of files in the given path, or in current directory if no path provided. - - -### find(path [,path ...]) -### find(path_array) -Examples: - -```javascript -find('src', 'lib'); -find(['src', 'lib']); // same as above -find('.').filter(function(file) { return file.match(/\.js$/); }); -``` - -Returns array of all files (however deep) in the given paths. - -The main difference from `ls('-R', path)` is that the resulting file names -include the base directories, e.g. `lib/resources/file1` instead of just `file1`. - - -### cp([options ,] source [,source ...], dest) -### cp([options ,] source_array, dest) -Available options: - -+ `-f`: force -+ `-r, -R`: recursive - -Examples: - -```javascript -cp('file1', 'dir1'); -cp('-Rf', '/tmp/*', '/usr/local/*', '/home/tmp'); -cp('-Rf', ['/tmp/*', '/usr/local/*'], '/home/tmp'); // same as above -``` - -Copies files. The wildcard `*` is accepted. - - -### rm([options ,] file [, file ...]) -### rm([options ,] file_array) -Available options: - -+ `-f`: force -+ `-r, -R`: recursive - -Examples: - -```javascript -rm('-rf', '/tmp/*'); -rm('some_file.txt', 'another_file.txt'); -rm(['some_file.txt', 'another_file.txt']); // same as above -``` - -Removes files. The wildcard `*` is accepted. - - -### mv(source [, source ...], dest') -### mv(source_array, dest') -Available options: - -+ `f`: force - -Examples: - -```javascript -mv('-f', 'file', 'dir/'); -mv('file1', 'file2', 'dir/'); -mv(['file1', 'file2'], 'dir/'); // same as above -``` - -Moves files. The wildcard `*` is accepted. - - -### mkdir([options ,] dir [, dir ...]) -### mkdir([options ,] dir_array) -Available options: - -+ `p`: full path (will create intermediate dirs if necessary) - -Examples: - -```javascript -mkdir('-p', '/tmp/a/b/c/d', '/tmp/e/f/g'); -mkdir('-p', ['/tmp/a/b/c/d', '/tmp/e/f/g']); // same as above -``` - -Creates directories. - - -### test(expression) -Available expression primaries: - -+ `'-b', 'path'`: true if path is a block device -+ `'-c', 'path'`: true if path is a character device -+ `'-d', 'path'`: true if path is a directory -+ `'-e', 'path'`: true if path exists -+ `'-f', 'path'`: true if path is a regular file -+ `'-L', 'path'`: true if path is a symboilc link -+ `'-p', 'path'`: true if path is a pipe (FIFO) -+ `'-S', 'path'`: true if path is a socket - -Examples: - -```javascript -if (test('-d', path)) { /* do something with dir */ }; -if (!test('-f', path)) continue; // skip if it's a regular file -``` - -Evaluates expression using the available primaries and returns corresponding value. - - -### cat(file [, file ...]) -### cat(file_array) - -Examples: - -```javascript -var str = cat('file*.txt'); -var str = cat('file1', 'file2'); -var str = cat(['file1', 'file2']); // same as above -``` - -Returns a string containing the given file, or a concatenated string -containing the files if more than one file is given (a new line character is -introduced between each file). Wildcard `*` accepted. - - -### 'string'.to(file) - -Examples: - -```javascript -cat('input.txt').to('output.txt'); -``` - -Analogous to the redirection operator `>` in Unix, but works with JavaScript strings (such as -those returned by `cat`, `grep`, etc). _Like Unix redirections, `to()` will overwrite any existing file!_ - - -### 'string'.toEnd(file) - -Examples: - -```javascript -cat('input.txt').toEnd('output.txt'); -``` - -Analogous to the redirect-and-append operator `>>` in Unix, but works with JavaScript strings (such as -those returned by `cat`, `grep`, etc). - - -### sed([options ,] search_regex, replacement, file) -Available options: - -+ `-i`: Replace contents of 'file' in-place. _Note that no backups will be created!_ - -Examples: - -```javascript -sed('-i', 'PROGRAM_VERSION', 'v0.1.3', 'source.js'); -sed(/.*DELETE_THIS_LINE.*\n/, '', 'source.js'); -``` - -Reads an input string from `file` and performs a JavaScript `replace()` on the input -using the given search regex and replacement string or function. Returns the new string after replacement. - - -### grep([options ,] regex_filter, file [, file ...]) -### grep([options ,] regex_filter, file_array) -Available options: - -+ `-v`: Inverse the sense of the regex and print the lines not matching the criteria. - -Examples: - -```javascript -grep('-v', 'GLOBAL_VARIABLE', '*.js'); -grep('GLOBAL_VARIABLE', '*.js'); -``` - -Reads input string from given files and returns a string containing all lines of the -file that match the given `regex_filter`. Wildcard `*` accepted. - - -### which(command) - -Examples: - -```javascript -var nodeExec = which('node'); -``` - -Searches for `command` in the system's PATH. On Windows looks for `.exe`, `.cmd`, and `.bat` extensions. -Returns string containing the absolute path to the command. - - -### echo(string [,string ...]) - -Examples: - -```javascript -echo('hello world'); -var str = echo('hello world'); -``` - -Prints string to stdout, and returns string with additional utility methods -like `.to()`. - - -### pushd([options,] [dir | '-N' | '+N']) - -Available options: - -+ `-n`: Suppresses the normal change of directory when adding directories to the stack, so that only the stack is manipulated. - -Arguments: - -+ `dir`: Makes the current working directory be the top of the stack, and then executes the equivalent of `cd dir`. -+ `+N`: Brings the Nth directory (counting from the left of the list printed by dirs, starting with zero) to the top of the list by rotating the stack. -+ `-N`: Brings the Nth directory (counting from the right of the list printed by dirs, starting with zero) to the top of the list by rotating the stack. - -Examples: - -```javascript -// process.cwd() === '/usr' -pushd('/etc'); // Returns /etc /usr -pushd('+1'); // Returns /usr /etc -``` - -Save the current directory on the top of the directory stack and then cd to `dir`. With no arguments, pushd exchanges the top two directories. Returns an array of paths in the stack. - -### popd([options,] ['-N' | '+N']) - -Available options: - -+ `-n`: Suppresses the normal change of directory when removing directories from the stack, so that only the stack is manipulated. - -Arguments: - -+ `+N`: Removes the Nth directory (counting from the left of the list printed by dirs), starting with zero. -+ `-N`: Removes the Nth directory (counting from the right of the list printed by dirs), starting with zero. - -Examples: - -```javascript -echo(process.cwd()); // '/usr' -pushd('/etc'); // '/etc /usr' -echo(process.cwd()); // '/etc' -popd(); // '/usr' -echo(process.cwd()); // '/usr' -``` - -When no arguments are given, popd removes the top directory from the stack and performs a cd to the new top directory. The elements are numbered from 0 starting at the first directory listed with dirs; i.e., popd is equivalent to popd +0. Returns an array of paths in the stack. - -### dirs([options | '+N' | '-N']) - -Available options: - -+ `-c`: Clears the directory stack by deleting all of the elements. - -Arguments: - -+ `+N`: Displays the Nth directory (counting from the left of the list printed by dirs when invoked without options), starting with zero. -+ `-N`: Displays the Nth directory (counting from the right of the list printed by dirs when invoked without options), starting with zero. - -Display the list of currently remembered directories. Returns an array of paths in the stack, or a single path if +N or -N was specified. - -See also: pushd, popd - - -### ln(options, source, dest) -### ln(source, dest) -Available options: - -+ `s`: symlink -+ `f`: force - -Examples: - -```javascript -ln('file', 'newlink'); -ln('-sf', 'file', 'existing'); -``` - -Links source to dest. Use -f to force the link, should dest already exist. - - -### exit(code) -Exits the current process with the given exit code. - -### env['VAR_NAME'] -Object containing environment variables (both getter and setter). Shortcut to process.env. - -### exec(command [, options] [, callback]) -Available options (all `false` by default): - -+ `async`: Asynchronous execution. Defaults to true if a callback is provided. -+ `silent`: Do not echo program output to console. - -Examples: - -```javascript -var version = exec('node --version', {silent:true}).output; - -var child = exec('some_long_running_process', {async:true}); -child.stdout.on('data', function(data) { - /* ... do something with data ... */ -}); - -exec('some_long_running_process', function(code, output) { - console.log('Exit code:', code); - console.log('Program output:', output); -}); -``` - -Executes the given `command` _synchronously_, unless otherwise specified. -When in synchronous mode returns the object `{ code:..., output:... }`, containing the program's -`output` (stdout + stderr) and its exit `code`. Otherwise returns the child process object, and -the `callback` gets the arguments `(code, output)`. - -**Note:** For long-lived processes, it's best to run `exec()` asynchronously as -the current synchronous implementation uses a lot of CPU. This should be getting -fixed soon. - - -### chmod(octal_mode || octal_string, file) -### chmod(symbolic_mode, file) - -Available options: - -+ `-v`: output a diagnostic for every file processed -+ `-c`: like verbose but report only when a change is made -+ `-R`: change files and directories recursively - -Examples: - -```javascript -chmod(755, '/Users/brandon'); -chmod('755', '/Users/brandon'); // same as above -chmod('u+x', '/Users/brandon'); -``` - -Alters the permissions of a file or directory by either specifying the -absolute permissions in octal form or expressing the changes in symbols. -This command tries to mimic the POSIX behavior as much as possible. -Notable exceptions: - -+ In symbolic modes, 'a-r' and '-r' are identical. No consideration is - given to the umask. -+ There is no "quiet" option since default behavior is to run silent. - - -## Non-Unix commands - - -### tempdir() - -Examples: - -```javascript -var tmp = tempdir(); // "/tmp" for most *nix platforms -``` - -Searches and returns string containing a writeable, platform-dependent temporary directory. -Follows Python's [tempfile algorithm](http://docs.python.org/library/tempfile.html#tempfile.tempdir). - - -### error() -Tests if error occurred in the last command. Returns `null` if no error occurred, -otherwise returns string explaining the error - - -## Configuration - - -### config.silent -Example: - -```javascript -var silentState = config.silent; // save old silent state -config.silent = true; -/* ... */ -config.silent = silentState; // restore old silent state -``` - -Suppresses all command output if `true`, except for `echo()` calls. -Default is `false`. - -### config.fatal -Example: - -```javascript -config.fatal = true; -cp('this_file_does_not_exist', '/dev/null'); // dies here -/* more commands... */ -``` - -If `true` the script will die on errors. Default is `false`. diff --git a/node_modules/shelljs/bin/shjs b/node_modules/shelljs/bin/shjs deleted file mode 100644 index d239a7ad..00000000 --- a/node_modules/shelljs/bin/shjs +++ /dev/null @@ -1,51 +0,0 @@ -#!/usr/bin/env node -require('../global'); - -if (process.argv.length < 3) { - console.log('ShellJS: missing argument (script name)'); - console.log(); - process.exit(1); -} - -var args, - scriptName = process.argv[2]; -env['NODE_PATH'] = __dirname + '/../..'; - -if (!scriptName.match(/\.js/) && !scriptName.match(/\.coffee/)) { - if (test('-f', scriptName + '.js')) - scriptName += '.js'; - if (test('-f', scriptName + '.coffee')) - scriptName += '.coffee'; -} - -if (!test('-f', scriptName)) { - console.log('ShellJS: script not found ('+scriptName+')'); - console.log(); - process.exit(1); -} - -args = process.argv.slice(3); - -for (var i = 0, l = args.length; i < l; i++) { - if (args[i][0] !== "-"){ - args[i] = '"' + args[i] + '"'; // fixes arguments with multiple words - } -} - -if (scriptName.match(/\.coffee$/)) { - // - // CoffeeScript - // - if (which('coffee')) { - exec('coffee ' + scriptName + ' ' + args.join(' '), { async: true }); - } else { - console.log('ShellJS: CoffeeScript interpreter not found'); - console.log(); - process.exit(1); - } -} else { - // - // JavaScript - // - exec('node ' + scriptName + ' ' + args.join(' '), { async: true }); -} diff --git a/node_modules/shelljs/global.js b/node_modules/shelljs/global.js deleted file mode 100644 index 97f0033c..00000000 --- a/node_modules/shelljs/global.js +++ /dev/null @@ -1,3 +0,0 @@ -var shell = require('./shell.js'); -for (var cmd in shell) - global[cmd] = shell[cmd]; diff --git a/node_modules/shelljs/make.js b/node_modules/shelljs/make.js deleted file mode 100644 index 53e5e812..00000000 --- a/node_modules/shelljs/make.js +++ /dev/null @@ -1,47 +0,0 @@ -require('./global'); - -global.config.fatal = true; -global.target = {}; - -// This ensures we only execute the script targets after the entire script has -// been evaluated -var args = process.argv.slice(2); -setTimeout(function() { - var t; - - if (args.length === 1 && args[0] === '--help') { - console.log('Available targets:'); - for (t in global.target) - console.log(' ' + t); - return; - } - - // Wrap targets to prevent duplicate execution - for (t in global.target) { - (function(t, oldTarget){ - - // Wrap it - global.target[t] = function(force) { - if (oldTarget.done && !force) - return; - oldTarget.done = true; - return oldTarget.apply(oldTarget, arguments); - }; - - })(t, global.target[t]); - } - - // Execute desired targets - if (args.length > 0) { - args.forEach(function(arg) { - if (arg in global.target) - global.target[arg](); - else { - console.log('no such target: ' + arg); - } - }); - } else if ('all' in global.target) { - global.target.all(); - } - -}, 0); diff --git a/node_modules/shelljs/package.json b/node_modules/shelljs/package.json deleted file mode 100644 index 0e9c35dc..00000000 --- a/node_modules/shelljs/package.json +++ /dev/null @@ -1,66 +0,0 @@ -{ - "_from": "shelljs@^0.3.0", - "_id": "shelljs@0.3.0", - "_inBundle": false, - "_integrity": "sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E=", - "_location": "/shelljs", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "shelljs@^0.3.0", - "name": "shelljs", - "escapedName": "shelljs", - "rawSpec": "^0.3.0", - "saveSpec": null, - "fetchSpec": "^0.3.0" - }, - "_requiredBy": [ - "/@actions/tool-cache" - ], - "_resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz", - "_shasum": "3596e6307a781544f591f37da618360f31db57b1", - "_spec": "shelljs@^0.3.0", - "_where": "C:\\Users\\Administrator\\Documents\\setup-node\\toolkit\\actions-tool-cache-0.0.0.tgz", - "author": { - "name": "Artur Adib", - "email": "aadib@mozilla.com" - }, - "bin": { - "shjs": "./bin/shjs" - }, - "bugs": { - "url": "https://github.com/arturadib/shelljs/issues" - }, - "bundleDependencies": false, - "dependencies": {}, - "deprecated": false, - "description": "Portable Unix shell commands for Node.js", - "devDependencies": { - "jshint": "~2.1.11" - }, - "engines": { - "node": ">=0.8.0" - }, - "homepage": "http://github.com/arturadib/shelljs", - "keywords": [ - "unix", - "shell", - "makefile", - "make", - "jake", - "synchronous" - ], - "license": "BSD*", - "main": "./shell.js", - "name": "shelljs", - "optionalDependencies": {}, - "repository": { - "type": "git", - "url": "git://github.com/arturadib/shelljs.git" - }, - "scripts": { - "test": "node scripts/run-tests" - }, - "version": "0.3.0" -} diff --git a/node_modules/shelljs/scripts/generate-docs.js b/node_modules/shelljs/scripts/generate-docs.js deleted file mode 100644 index 532fed9f..00000000 --- a/node_modules/shelljs/scripts/generate-docs.js +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env node -require('../global'); - -echo('Appending docs to README.md'); - -cd(__dirname + '/..'); - -// Extract docs from shell.js -var docs = grep('//@', 'shell.js'); - -docs = docs.replace(/\/\/\@include (.+)/g, function(match, path) { - var file = path.match('.js$') ? path : path+'.js'; - return grep('//@', file); -}); - -// Remove '//@' -docs = docs.replace(/\/\/\@ ?/g, ''); -// Append docs to README -sed('-i', /## Command reference(.|\n)*/, '## Command reference\n\n' + docs, 'README.md'); - -echo('All done.'); diff --git a/node_modules/shelljs/scripts/run-tests.js b/node_modules/shelljs/scripts/run-tests.js deleted file mode 100644 index f9d31e06..00000000 --- a/node_modules/shelljs/scripts/run-tests.js +++ /dev/null @@ -1,50 +0,0 @@ -#!/usr/bin/env node -require('../global'); - -var path = require('path'); - -var failed = false; - -// -// Lint -// -JSHINT_BIN = './node_modules/jshint/bin/jshint'; -cd(__dirname + '/..'); - -if (!test('-f', JSHINT_BIN)) { - echo('JSHint not found. Run `npm install` in the root dir first.'); - exit(1); -} - -if (exec(JSHINT_BIN + ' *.js test/*.js').code !== 0) { - failed = true; - echo('*** JSHINT FAILED! (return code != 0)'); - echo(); -} else { - echo('All JSHint tests passed'); - echo(); -} - -// -// Unit tests -// -cd(__dirname + '/../test'); -ls('*.js').forEach(function(file) { - echo('Running test:', file); - if (exec('node ' + file).code !== 123) { // 123 avoids false positives (e.g. premature exit) - failed = true; - echo('*** TEST FAILED! (missing exit code "123")'); - echo(); - } -}); - -if (failed) { - echo(); - echo('*******************************************************'); - echo('WARNING: Some tests did not pass!'); - echo('*******************************************************'); - exit(1); -} else { - echo(); - echo('All tests passed.'); -} diff --git a/node_modules/shelljs/shell.js b/node_modules/shelljs/shell.js deleted file mode 100644 index 54402c79..00000000 --- a/node_modules/shelljs/shell.js +++ /dev/null @@ -1,157 +0,0 @@ -// -// ShellJS -// Unix shell commands on top of Node's API -// -// Copyright (c) 2012 Artur Adib -// http://github.com/arturadib/shelljs -// - -var common = require('./src/common'); - - -//@ -//@ All commands run synchronously, unless otherwise stated. -//@ - -//@include ./src/cd -var _cd = require('./src/cd'); -exports.cd = common.wrap('cd', _cd); - -//@include ./src/pwd -var _pwd = require('./src/pwd'); -exports.pwd = common.wrap('pwd', _pwd); - -//@include ./src/ls -var _ls = require('./src/ls'); -exports.ls = common.wrap('ls', _ls); - -//@include ./src/find -var _find = require('./src/find'); -exports.find = common.wrap('find', _find); - -//@include ./src/cp -var _cp = require('./src/cp'); -exports.cp = common.wrap('cp', _cp); - -//@include ./src/rm -var _rm = require('./src/rm'); -exports.rm = common.wrap('rm', _rm); - -//@include ./src/mv -var _mv = require('./src/mv'); -exports.mv = common.wrap('mv', _mv); - -//@include ./src/mkdir -var _mkdir = require('./src/mkdir'); -exports.mkdir = common.wrap('mkdir', _mkdir); - -//@include ./src/test -var _test = require('./src/test'); -exports.test = common.wrap('test', _test); - -//@include ./src/cat -var _cat = require('./src/cat'); -exports.cat = common.wrap('cat', _cat); - -//@include ./src/to -var _to = require('./src/to'); -String.prototype.to = common.wrap('to', _to); - -//@include ./src/toEnd -var _toEnd = require('./src/toEnd'); -String.prototype.toEnd = common.wrap('toEnd', _toEnd); - -//@include ./src/sed -var _sed = require('./src/sed'); -exports.sed = common.wrap('sed', _sed); - -//@include ./src/grep -var _grep = require('./src/grep'); -exports.grep = common.wrap('grep', _grep); - -//@include ./src/which -var _which = require('./src/which'); -exports.which = common.wrap('which', _which); - -//@include ./src/echo -var _echo = require('./src/echo'); -exports.echo = _echo; // don't common.wrap() as it could parse '-options' - -//@include ./src/dirs -var _dirs = require('./src/dirs').dirs; -exports.dirs = common.wrap("dirs", _dirs); -var _pushd = require('./src/dirs').pushd; -exports.pushd = common.wrap('pushd', _pushd); -var _popd = require('./src/dirs').popd; -exports.popd = common.wrap("popd", _popd); - -//@include ./src/ln -var _ln = require('./src/ln'); -exports.ln = common.wrap('ln', _ln); - -//@ -//@ ### exit(code) -//@ Exits the current process with the given exit code. -exports.exit = process.exit; - -//@ -//@ ### env['VAR_NAME'] -//@ Object containing environment variables (both getter and setter). Shortcut to process.env. -exports.env = process.env; - -//@include ./src/exec -var _exec = require('./src/exec'); -exports.exec = common.wrap('exec', _exec, {notUnix:true}); - -//@include ./src/chmod -var _chmod = require('./src/chmod'); -exports.chmod = common.wrap('chmod', _chmod); - - - -//@ -//@ ## Non-Unix commands -//@ - -//@include ./src/tempdir -var _tempDir = require('./src/tempdir'); -exports.tempdir = common.wrap('tempdir', _tempDir); - - -//@include ./src/error -var _error = require('./src/error'); -exports.error = _error; - - - -//@ -//@ ## Configuration -//@ - -exports.config = common.config; - -//@ -//@ ### config.silent -//@ Example: -//@ -//@ ```javascript -//@ var silentState = config.silent; // save old silent state -//@ config.silent = true; -//@ /* ... */ -//@ config.silent = silentState; // restore old silent state -//@ ``` -//@ -//@ Suppresses all command output if `true`, except for `echo()` calls. -//@ Default is `false`. - -//@ -//@ ### config.fatal -//@ Example: -//@ -//@ ```javascript -//@ config.fatal = true; -//@ cp('this_file_does_not_exist', '/dev/null'); // dies here -//@ /* more commands... */ -//@ ``` -//@ -//@ If `true` the script will die on errors. Default is `false`. diff --git a/node_modules/shelljs/src/cat.js b/node_modules/shelljs/src/cat.js deleted file mode 100644 index f6f4d254..00000000 --- a/node_modules/shelljs/src/cat.js +++ /dev/null @@ -1,43 +0,0 @@ -var common = require('./common'); -var fs = require('fs'); - -//@ -//@ ### cat(file [, file ...]) -//@ ### cat(file_array) -//@ -//@ Examples: -//@ -//@ ```javascript -//@ var str = cat('file*.txt'); -//@ var str = cat('file1', 'file2'); -//@ var str = cat(['file1', 'file2']); // same as above -//@ ``` -//@ -//@ Returns a string containing the given file, or a concatenated string -//@ containing the files if more than one file is given (a new line character is -//@ introduced between each file). Wildcard `*` accepted. -function _cat(options, files) { - var cat = ''; - - if (!files) - common.error('no paths given'); - - if (typeof files === 'string') - files = [].slice.call(arguments, 1); - // if it's array leave it as it is - - files = common.expand(files); - - files.forEach(function(file) { - if (!fs.existsSync(file)) - common.error('no such file or directory: ' + file); - - cat += fs.readFileSync(file, 'utf8') + '\n'; - }); - - if (cat[cat.length-1] === '\n') - cat = cat.substring(0, cat.length-1); - - return common.ShellString(cat); -} -module.exports = _cat; diff --git a/node_modules/shelljs/src/cd.js b/node_modules/shelljs/src/cd.js deleted file mode 100644 index 230f4326..00000000 --- a/node_modules/shelljs/src/cd.js +++ /dev/null @@ -1,19 +0,0 @@ -var fs = require('fs'); -var common = require('./common'); - -//@ -//@ ### cd('dir') -//@ Changes to directory `dir` for the duration of the script -function _cd(options, dir) { - if (!dir) - common.error('directory not specified'); - - if (!fs.existsSync(dir)) - common.error('no such file or directory: ' + dir); - - if (!fs.statSync(dir).isDirectory()) - common.error('not a directory: ' + dir); - - process.chdir(dir); -} -module.exports = _cd; diff --git a/node_modules/shelljs/src/chmod.js b/node_modules/shelljs/src/chmod.js deleted file mode 100644 index f2888930..00000000 --- a/node_modules/shelljs/src/chmod.js +++ /dev/null @@ -1,208 +0,0 @@ -var common = require('./common'); -var fs = require('fs'); -var path = require('path'); - -var PERMS = (function (base) { - return { - OTHER_EXEC : base.EXEC, - OTHER_WRITE : base.WRITE, - OTHER_READ : base.READ, - - GROUP_EXEC : base.EXEC << 3, - GROUP_WRITE : base.WRITE << 3, - GROUP_READ : base.READ << 3, - - OWNER_EXEC : base.EXEC << 6, - OWNER_WRITE : base.WRITE << 6, - OWNER_READ : base.READ << 6, - - // Literal octal numbers are apparently not allowed in "strict" javascript. Using parseInt is - // the preferred way, else a jshint warning is thrown. - STICKY : parseInt('01000', 8), - SETGID : parseInt('02000', 8), - SETUID : parseInt('04000', 8), - - TYPE_MASK : parseInt('0770000', 8) - }; -})({ - EXEC : 1, - WRITE : 2, - READ : 4 -}); - -//@ -//@ ### chmod(octal_mode || octal_string, file) -//@ ### chmod(symbolic_mode, file) -//@ -//@ Available options: -//@ -//@ + `-v`: output a diagnostic for every file processed//@ -//@ + `-c`: like verbose but report only when a change is made//@ -//@ + `-R`: change files and directories recursively//@ -//@ -//@ Examples: -//@ -//@ ```javascript -//@ chmod(755, '/Users/brandon'); -//@ chmod('755', '/Users/brandon'); // same as above -//@ chmod('u+x', '/Users/brandon'); -//@ ``` -//@ -//@ Alters the permissions of a file or directory by either specifying the -//@ absolute permissions in octal form or expressing the changes in symbols. -//@ This command tries to mimic the POSIX behavior as much as possible. -//@ Notable exceptions: -//@ -//@ + In symbolic modes, 'a-r' and '-r' are identical. No consideration is -//@ given to the umask. -//@ + There is no "quiet" option since default behavior is to run silent. -function _chmod(options, mode, filePattern) { - if (!filePattern) { - if (options.length > 0 && options.charAt(0) === '-') { - // Special case where the specified file permissions started with - to subtract perms, which - // get picked up by the option parser as command flags. - // If we are down by one argument and options starts with -, shift everything over. - filePattern = mode; - mode = options; - options = ''; - } - else { - common.error('You must specify a file.'); - } - } - - options = common.parseOptions(options, { - 'R': 'recursive', - 'c': 'changes', - 'v': 'verbose' - }); - - if (typeof filePattern === 'string') { - filePattern = [ filePattern ]; - } - - var files; - - if (options.recursive) { - files = []; - common.expand(filePattern).forEach(function addFile(expandedFile) { - var stat = fs.lstatSync(expandedFile); - - if (!stat.isSymbolicLink()) { - files.push(expandedFile); - - if (stat.isDirectory()) { // intentionally does not follow symlinks. - fs.readdirSync(expandedFile).forEach(function (child) { - addFile(expandedFile + '/' + child); - }); - } - } - }); - } - else { - files = common.expand(filePattern); - } - - files.forEach(function innerChmod(file) { - file = path.resolve(file); - if (!fs.existsSync(file)) { - common.error('File not found: ' + file); - } - - // When recursing, don't follow symlinks. - if (options.recursive && fs.lstatSync(file).isSymbolicLink()) { - return; - } - - var perms = fs.statSync(file).mode; - var type = perms & PERMS.TYPE_MASK; - - var newPerms = perms; - - if (isNaN(parseInt(mode, 8))) { - // parse options - mode.split(',').forEach(function (symbolicMode) { - /*jshint regexdash:true */ - var pattern = /([ugoa]*)([=\+-])([rwxXst]*)/i; - var matches = pattern.exec(symbolicMode); - - if (matches) { - var applyTo = matches[1]; - var operator = matches[2]; - var change = matches[3]; - - var changeOwner = applyTo.indexOf('u') != -1 || applyTo === 'a' || applyTo === ''; - var changeGroup = applyTo.indexOf('g') != -1 || applyTo === 'a' || applyTo === ''; - var changeOther = applyTo.indexOf('o') != -1 || applyTo === 'a' || applyTo === ''; - - var changeRead = change.indexOf('r') != -1; - var changeWrite = change.indexOf('w') != -1; - var changeExec = change.indexOf('x') != -1; - var changeSticky = change.indexOf('t') != -1; - var changeSetuid = change.indexOf('s') != -1; - - var mask = 0; - if (changeOwner) { - mask |= (changeRead ? PERMS.OWNER_READ : 0) + (changeWrite ? PERMS.OWNER_WRITE : 0) + (changeExec ? PERMS.OWNER_EXEC : 0) + (changeSetuid ? PERMS.SETUID : 0); - } - if (changeGroup) { - mask |= (changeRead ? PERMS.GROUP_READ : 0) + (changeWrite ? PERMS.GROUP_WRITE : 0) + (changeExec ? PERMS.GROUP_EXEC : 0) + (changeSetuid ? PERMS.SETGID : 0); - } - if (changeOther) { - mask |= (changeRead ? PERMS.OTHER_READ : 0) + (changeWrite ? PERMS.OTHER_WRITE : 0) + (changeExec ? PERMS.OTHER_EXEC : 0); - } - - // Sticky bit is special - it's not tied to user, group or other. - if (changeSticky) { - mask |= PERMS.STICKY; - } - - switch (operator) { - case '+': - newPerms |= mask; - break; - - case '-': - newPerms &= ~mask; - break; - - case '=': - newPerms = type + mask; - - // According to POSIX, when using = to explicitly set the permissions, setuid and setgid can never be cleared. - if (fs.statSync(file).isDirectory()) { - newPerms |= (PERMS.SETUID + PERMS.SETGID) & perms; - } - break; - } - - if (options.verbose) { - log(file + ' -> ' + newPerms.toString(8)); - } - - if (perms != newPerms) { - if (!options.verbose && options.changes) { - log(file + ' -> ' + newPerms.toString(8)); - } - fs.chmodSync(file, newPerms); - } - } - else { - common.error('Invalid symbolic mode change: ' + symbolicMode); - } - }); - } - else { - // they gave us a full number - newPerms = type + parseInt(mode, 8); - - // POSIX rules are that setuid and setgid can only be added using numeric form, but not cleared. - if (fs.statSync(file).isDirectory()) { - newPerms |= (PERMS.SETUID + PERMS.SETGID) & perms; - } - - fs.chmodSync(file, newPerms); - } - }); -} -module.exports = _chmod; diff --git a/node_modules/shelljs/src/common.js b/node_modules/shelljs/src/common.js deleted file mode 100644 index d8c23129..00000000 --- a/node_modules/shelljs/src/common.js +++ /dev/null @@ -1,203 +0,0 @@ -var os = require('os'); -var fs = require('fs'); -var _ls = require('./ls'); - -// Module globals -var config = { - silent: false, - fatal: false -}; -exports.config = config; - -var state = { - error: null, - currentCmd: 'shell.js', - tempDir: null -}; -exports.state = state; - -var platform = os.type().match(/^Win/) ? 'win' : 'unix'; -exports.platform = platform; - -function log() { - if (!config.silent) - console.log.apply(this, arguments); -} -exports.log = log; - -// Shows error message. Throws unless _continue or config.fatal are true -function error(msg, _continue) { - if (state.error === null) - state.error = ''; - state.error += state.currentCmd + ': ' + msg + '\n'; - - if (msg.length > 0) - log(state.error); - - if (config.fatal) - process.exit(1); - - if (!_continue) - throw ''; -} -exports.error = error; - -// In the future, when Proxies are default, we can add methods like `.to()` to primitive strings. -// For now, this is a dummy function to bookmark places we need such strings -function ShellString(str) { - return str; -} -exports.ShellString = ShellString; - -// Returns {'alice': true, 'bob': false} when passed a dictionary, e.g.: -// parseOptions('-a', {'a':'alice', 'b':'bob'}); -function parseOptions(str, map) { - if (!map) - error('parseOptions() internal error: no map given'); - - // All options are false by default - var options = {}; - for (var letter in map) - options[map[letter]] = false; - - if (!str) - return options; // defaults - - if (typeof str !== 'string') - error('parseOptions() internal error: wrong str'); - - // e.g. match[1] = 'Rf' for str = '-Rf' - var match = str.match(/^\-(.+)/); - if (!match) - return options; - - // e.g. chars = ['R', 'f'] - var chars = match[1].split(''); - - chars.forEach(function(c) { - if (c in map) - options[map[c]] = true; - else - error('option not recognized: '+c); - }); - - return options; -} -exports.parseOptions = parseOptions; - -// Expands wildcards with matching (ie. existing) file names. -// For example: -// expand(['file*.js']) = ['file1.js', 'file2.js', ...] -// (if the files 'file1.js', 'file2.js', etc, exist in the current dir) -function expand(list) { - var expanded = []; - list.forEach(function(listEl) { - // Wildcard present on directory names ? - if(listEl.search(/\*[^\/]*\//) > -1 || listEl.search(/\*\*[^\/]*\//) > -1) { - var match = listEl.match(/^([^*]+\/|)(.*)/); - var root = match[1]; - var rest = match[2]; - var restRegex = rest.replace(/\*\*/g, ".*").replace(/\*/g, "[^\\/]*"); - restRegex = new RegExp(restRegex); - - _ls('-R', root).filter(function (e) { - return restRegex.test(e); - }).forEach(function(file) { - expanded.push(file); - }); - } - // Wildcard present on file names ? - else if (listEl.search(/\*/) > -1) { - _ls('', listEl).forEach(function(file) { - expanded.push(file); - }); - } else { - expanded.push(listEl); - } - }); - return expanded; -} -exports.expand = expand; - -// Normalizes _unlinkSync() across platforms to match Unix behavior, i.e. -// file can be unlinked even if it's read-only, see https://github.com/joyent/node/issues/3006 -function unlinkSync(file) { - try { - fs.unlinkSync(file); - } catch(e) { - // Try to override file permission - if (e.code === 'EPERM') { - fs.chmodSync(file, '0666'); - fs.unlinkSync(file); - } else { - throw e; - } - } -} -exports.unlinkSync = unlinkSync; - -// e.g. 'shelljs_a5f185d0443ca...' -function randomFileName() { - function randomHash(count) { - if (count === 1) - return parseInt(16*Math.random(), 10).toString(16); - else { - var hash = ''; - for (var i=0; i<count; i++) - hash += randomHash(1); - return hash; - } - } - - return 'shelljs_'+randomHash(20); -} -exports.randomFileName = randomFileName; - -// extend(target_obj, source_obj1 [, source_obj2 ...]) -// Shallow extend, e.g.: -// extend({A:1}, {b:2}, {c:3}) returns {A:1, b:2, c:3} -function extend(target) { - var sources = [].slice.call(arguments, 1); - sources.forEach(function(source) { - for (var key in source) - target[key] = source[key]; - }); - - return target; -} -exports.extend = extend; - -// Common wrapper for all Unix-like commands -function wrap(cmd, fn, options) { - return function() { - var retValue = null; - - state.currentCmd = cmd; - state.error = null; - - try { - var args = [].slice.call(arguments, 0); - - if (options && options.notUnix) { - retValue = fn.apply(this, args); - } else { - if (args.length === 0 || typeof args[0] !== 'string' || args[0][0] !== '-') - args.unshift(''); // only add dummy option if '-option' not already present - retValue = fn.apply(this, args); - } - } catch (e) { - if (!state.error) { - // If state.error hasn't been set it's an error thrown by Node, not us - probably a bug... - console.log('shell.js: internal error'); - console.log(e.stack || e); - process.exit(1); - } - if (config.fatal) - throw e; - } - - state.currentCmd = 'shell.js'; - return retValue; - }; -} // wrap -exports.wrap = wrap; diff --git a/node_modules/shelljs/src/cp.js b/node_modules/shelljs/src/cp.js deleted file mode 100644 index 141d8e38..00000000 --- a/node_modules/shelljs/src/cp.js +++ /dev/null @@ -1,201 +0,0 @@ -var fs = require('fs'); -var path = require('path'); -var common = require('./common'); -var os = require('os'); - -// Buffered file copy, synchronous -// (Using readFileSync() + writeFileSync() could easily cause a memory overflow -// with large files) -function copyFileSync(srcFile, destFile) { - if (!fs.existsSync(srcFile)) - common.error('copyFileSync: no such file or directory: ' + srcFile); - - var BUF_LENGTH = 64*1024, - buf = new Buffer(BUF_LENGTH), - bytesRead = BUF_LENGTH, - pos = 0, - fdr = null, - fdw = null; - - try { - fdr = fs.openSync(srcFile, 'r'); - } catch(e) { - common.error('copyFileSync: could not read src file ('+srcFile+')'); - } - - try { - fdw = fs.openSync(destFile, 'w'); - } catch(e) { - common.error('copyFileSync: could not write to dest file (code='+e.code+'):'+destFile); - } - - while (bytesRead === BUF_LENGTH) { - bytesRead = fs.readSync(fdr, buf, 0, BUF_LENGTH, pos); - fs.writeSync(fdw, buf, 0, bytesRead); - pos += bytesRead; - } - - fs.closeSync(fdr); - fs.closeSync(fdw); - - fs.chmodSync(destFile, fs.statSync(srcFile).mode); -} - -// Recursively copies 'sourceDir' into 'destDir' -// Adapted from https://github.com/ryanmcgrath/wrench-js -// -// Copyright (c) 2010 Ryan McGrath -// Copyright (c) 2012 Artur Adib -// -// Licensed under the MIT License -// http://www.opensource.org/licenses/mit-license.php -function cpdirSyncRecursive(sourceDir, destDir, opts) { - if (!opts) opts = {}; - - /* Create the directory where all our junk is moving to; read the mode of the source directory and mirror it */ - var checkDir = fs.statSync(sourceDir); - try { - fs.mkdirSync(destDir, checkDir.mode); - } catch (e) { - //if the directory already exists, that's okay - if (e.code !== 'EEXIST') throw e; - } - - var files = fs.readdirSync(sourceDir); - - for (var i = 0; i < files.length; i++) { - var srcFile = sourceDir + "/" + files[i]; - var destFile = destDir + "/" + files[i]; - var srcFileStat = fs.lstatSync(srcFile); - - if (srcFileStat.isDirectory()) { - /* recursion this thing right on back. */ - cpdirSyncRecursive(srcFile, destFile, opts); - } else if (srcFileStat.isSymbolicLink()) { - var symlinkFull = fs.readlinkSync(srcFile); - fs.symlinkSync(symlinkFull, destFile, os.platform() === "win32" ? "junction" : null); - } else { - /* At this point, we've hit a file actually worth copying... so copy it on over. */ - if (fs.existsSync(destFile) && !opts.force) { - common.log('skipping existing file: ' + files[i]); - } else { - copyFileSync(srcFile, destFile); - } - } - - } // for files -} // cpdirSyncRecursive - - -//@ -//@ ### cp([options ,] source [,source ...], dest) -//@ ### cp([options ,] source_array, dest) -//@ Available options: -//@ -//@ + `-f`: force -//@ + `-r, -R`: recursive -//@ -//@ Examples: -//@ -//@ ```javascript -//@ cp('file1', 'dir1'); -//@ cp('-Rf', '/tmp/*', '/usr/local/*', '/home/tmp'); -//@ cp('-Rf', ['/tmp/*', '/usr/local/*'], '/home/tmp'); // same as above -//@ ``` -//@ -//@ Copies files. The wildcard `*` is accepted. -function _cp(options, sources, dest) { - options = common.parseOptions(options, { - 'f': 'force', - 'R': 'recursive', - 'r': 'recursive' - }); - - // Get sources, dest - if (arguments.length < 3) { - common.error('missing <source> and/or <dest>'); - } else if (arguments.length > 3) { - sources = [].slice.call(arguments, 1, arguments.length - 1); - dest = arguments[arguments.length - 1]; - } else if (typeof sources === 'string') { - sources = [sources]; - } else if ('length' in sources) { - sources = sources; // no-op for array - } else { - common.error('invalid arguments'); - } - - var exists = fs.existsSync(dest), - stats = exists && fs.statSync(dest); - - // Dest is not existing dir, but multiple sources given - if ((!exists || !stats.isDirectory()) && sources.length > 1) - common.error('dest is not a directory (too many sources)'); - - // Dest is an existing file, but no -f given - if (exists && stats.isFile() && !options.force) - common.error('dest file already exists: ' + dest); - - if (options.recursive) { - // Recursive allows the shortcut syntax "sourcedir/" for "sourcedir/*" - // (see Github issue #15) - sources.forEach(function(src, i) { - if (src[src.length - 1] === '/') - sources[i] += '*'; - }); - - // Create dest - try { - fs.mkdirSync(dest, parseInt('0777', 8)); - } catch (e) { - // like Unix's cp, keep going even if we can't create dest dir - } - } - - sources = common.expand(sources); - - sources.forEach(function(src) { - if (!fs.existsSync(src)) { - common.error('no such file or directory: '+src, true); - return; // skip file - } - - // If here, src exists - if (fs.statSync(src).isDirectory()) { - if (!options.recursive) { - // Non-Recursive - common.log(src + ' is a directory (not copied)'); - } else { - // Recursive - // 'cp /a/source dest' should create 'source' in 'dest' - var newDest = path.join(dest, path.basename(src)), - checkDir = fs.statSync(src); - try { - fs.mkdirSync(newDest, checkDir.mode); - } catch (e) { - //if the directory already exists, that's okay - if (e.code !== 'EEXIST') throw e; - } - - cpdirSyncRecursive(src, newDest, {force: options.force}); - } - return; // done with dir - } - - // If here, src is a file - - // When copying to '/path/dir': - // thisDest = '/path/dir/file1' - var thisDest = dest; - if (fs.existsSync(dest) && fs.statSync(dest).isDirectory()) - thisDest = path.normalize(dest + '/' + path.basename(src)); - - if (fs.existsSync(thisDest) && !options.force) { - common.error('dest file already exists: ' + thisDest, true); - return; // skip file - } - - copyFileSync(src, thisDest); - }); // forEach(src) -} -module.exports = _cp; diff --git a/node_modules/shelljs/src/dirs.js b/node_modules/shelljs/src/dirs.js deleted file mode 100644 index 58fae8b3..00000000 --- a/node_modules/shelljs/src/dirs.js +++ /dev/null @@ -1,191 +0,0 @@ -var common = require('./common'); -var _cd = require('./cd'); -var path = require('path'); - -// Pushd/popd/dirs internals -var _dirStack = []; - -function _isStackIndex(index) { - return (/^[\-+]\d+$/).test(index); -} - -function _parseStackIndex(index) { - if (_isStackIndex(index)) { - if (Math.abs(index) < _dirStack.length + 1) { // +1 for pwd - return (/^-/).test(index) ? Number(index) - 1 : Number(index); - } else { - common.error(index + ': directory stack index out of range'); - } - } else { - common.error(index + ': invalid number'); - } -} - -function _actualDirStack() { - return [process.cwd()].concat(_dirStack); -} - -//@ -//@ ### pushd([options,] [dir | '-N' | '+N']) -//@ -//@ Available options: -//@ -//@ + `-n`: Suppresses the normal change of directory when adding directories to the stack, so that only the stack is manipulated. -//@ -//@ Arguments: -//@ -//@ + `dir`: Makes the current working directory be the top of the stack, and then executes the equivalent of `cd dir`. -//@ + `+N`: Brings the Nth directory (counting from the left of the list printed by dirs, starting with zero) to the top of the list by rotating the stack. -//@ + `-N`: Brings the Nth directory (counting from the right of the list printed by dirs, starting with zero) to the top of the list by rotating the stack. -//@ -//@ Examples: -//@ -//@ ```javascript -//@ // process.cwd() === '/usr' -//@ pushd('/etc'); // Returns /etc /usr -//@ pushd('+1'); // Returns /usr /etc -//@ ``` -//@ -//@ Save the current directory on the top of the directory stack and then cd to `dir`. With no arguments, pushd exchanges the top two directories. Returns an array of paths in the stack. -function _pushd(options, dir) { - if (_isStackIndex(options)) { - dir = options; - options = ''; - } - - options = common.parseOptions(options, { - 'n' : 'no-cd' - }); - - var dirs = _actualDirStack(); - - if (dir === '+0') { - return dirs; // +0 is a noop - } else if (!dir) { - if (dirs.length > 1) { - dirs = dirs.splice(1, 1).concat(dirs); - } else { - return common.error('no other directory'); - } - } else if (_isStackIndex(dir)) { - var n = _parseStackIndex(dir); - dirs = dirs.slice(n).concat(dirs.slice(0, n)); - } else { - if (options['no-cd']) { - dirs.splice(1, 0, dir); - } else { - dirs.unshift(dir); - } - } - - if (options['no-cd']) { - dirs = dirs.slice(1); - } else { - dir = path.resolve(dirs.shift()); - _cd('', dir); - } - - _dirStack = dirs; - return _dirs(''); -} -exports.pushd = _pushd; - -//@ -//@ ### popd([options,] ['-N' | '+N']) -//@ -//@ Available options: -//@ -//@ + `-n`: Suppresses the normal change of directory when removing directories from the stack, so that only the stack is manipulated. -//@ -//@ Arguments: -//@ -//@ + `+N`: Removes the Nth directory (counting from the left of the list printed by dirs), starting with zero. -//@ + `-N`: Removes the Nth directory (counting from the right of the list printed by dirs), starting with zero. -//@ -//@ Examples: -//@ -//@ ```javascript -//@ echo(process.cwd()); // '/usr' -//@ pushd('/etc'); // '/etc /usr' -//@ echo(process.cwd()); // '/etc' -//@ popd(); // '/usr' -//@ echo(process.cwd()); // '/usr' -//@ ``` -//@ -//@ When no arguments are given, popd removes the top directory from the stack and performs a cd to the new top directory. The elements are numbered from 0 starting at the first directory listed with dirs; i.e., popd is equivalent to popd +0. Returns an array of paths in the stack. -function _popd(options, index) { - if (_isStackIndex(options)) { - index = options; - options = ''; - } - - options = common.parseOptions(options, { - 'n' : 'no-cd' - }); - - if (!_dirStack.length) { - return common.error('directory stack empty'); - } - - index = _parseStackIndex(index || '+0'); - - if (options['no-cd'] || index > 0 || _dirStack.length + index === 0) { - index = index > 0 ? index - 1 : index; - _dirStack.splice(index, 1); - } else { - var dir = path.resolve(_dirStack.shift()); - _cd('', dir); - } - - return _dirs(''); -} -exports.popd = _popd; - -//@ -//@ ### dirs([options | '+N' | '-N']) -//@ -//@ Available options: -//@ -//@ + `-c`: Clears the directory stack by deleting all of the elements. -//@ -//@ Arguments: -//@ -//@ + `+N`: Displays the Nth directory (counting from the left of the list printed by dirs when invoked without options), starting with zero. -//@ + `-N`: Displays the Nth directory (counting from the right of the list printed by dirs when invoked without options), starting with zero. -//@ -//@ Display the list of currently remembered directories. Returns an array of paths in the stack, or a single path if +N or -N was specified. -//@ -//@ See also: pushd, popd -function _dirs(options, index) { - if (_isStackIndex(options)) { - index = options; - options = ''; - } - - options = common.parseOptions(options, { - 'c' : 'clear' - }); - - if (options['clear']) { - _dirStack = []; - return _dirStack; - } - - var stack = _actualDirStack(); - - if (index) { - index = _parseStackIndex(index); - - if (index < 0) { - index = stack.length + index; - } - - common.log(stack[index]); - return stack[index]; - } - - common.log(stack.join(' ')); - - return stack; -} -exports.dirs = _dirs; diff --git a/node_modules/shelljs/src/echo.js b/node_modules/shelljs/src/echo.js deleted file mode 100644 index 760ea840..00000000 --- a/node_modules/shelljs/src/echo.js +++ /dev/null @@ -1,20 +0,0 @@ -var common = require('./common'); - -//@ -//@ ### echo(string [,string ...]) -//@ -//@ Examples: -//@ -//@ ```javascript -//@ echo('hello world'); -//@ var str = echo('hello world'); -//@ ``` -//@ -//@ Prints string to stdout, and returns string with additional utility methods -//@ like `.to()`. -function _echo() { - var messages = [].slice.call(arguments, 0); - console.log.apply(this, messages); - return common.ShellString(messages.join(' ')); -} -module.exports = _echo; diff --git a/node_modules/shelljs/src/error.js b/node_modules/shelljs/src/error.js deleted file mode 100644 index cca3efb6..00000000 --- a/node_modules/shelljs/src/error.js +++ /dev/null @@ -1,10 +0,0 @@ -var common = require('./common'); - -//@ -//@ ### error() -//@ Tests if error occurred in the last command. Returns `null` if no error occurred, -//@ otherwise returns string explaining the error -function error() { - return common.state.error; -}; -module.exports = error; diff --git a/node_modules/shelljs/src/exec.js b/node_modules/shelljs/src/exec.js deleted file mode 100644 index 7ccdbc00..00000000 --- a/node_modules/shelljs/src/exec.js +++ /dev/null @@ -1,181 +0,0 @@ -var common = require('./common'); -var _tempDir = require('./tempdir'); -var _pwd = require('./pwd'); -var path = require('path'); -var fs = require('fs'); -var child = require('child_process'); - -// Hack to run child_process.exec() synchronously (sync avoids callback hell) -// Uses a custom wait loop that checks for a flag file, created when the child process is done. -// (Can't do a wait loop that checks for internal Node variables/messages as -// Node is single-threaded; callbacks and other internal state changes are done in the -// event loop). -function execSync(cmd, opts) { - var tempDir = _tempDir(); - var stdoutFile = path.resolve(tempDir+'/'+common.randomFileName()), - codeFile = path.resolve(tempDir+'/'+common.randomFileName()), - scriptFile = path.resolve(tempDir+'/'+common.randomFileName()), - sleepFile = path.resolve(tempDir+'/'+common.randomFileName()); - - var options = common.extend({ - silent: common.config.silent - }, opts); - - var previousStdoutContent = ''; - // Echoes stdout changes from running process, if not silent - function updateStdout() { - if (options.silent || !fs.existsSync(stdoutFile)) - return; - - var stdoutContent = fs.readFileSync(stdoutFile, 'utf8'); - // No changes since last time? - if (stdoutContent.length <= previousStdoutContent.length) - return; - - process.stdout.write(stdoutContent.substr(previousStdoutContent.length)); - previousStdoutContent = stdoutContent; - } - - function escape(str) { - return (str+'').replace(/([\\"'])/g, "\\$1").replace(/\0/g, "\\0"); - } - - cmd += ' > '+stdoutFile+' 2>&1'; // works on both win/unix - - var script = - "var child = require('child_process')," + - " fs = require('fs');" + - "child.exec('"+escape(cmd)+"', {env: process.env, maxBuffer: 20*1024*1024}, function(err) {" + - " fs.writeFileSync('"+escape(codeFile)+"', err ? err.code.toString() : '0');" + - "});"; - - if (fs.existsSync(scriptFile)) common.unlinkSync(scriptFile); - if (fs.existsSync(stdoutFile)) common.unlinkSync(stdoutFile); - if (fs.existsSync(codeFile)) common.unlinkSync(codeFile); - - fs.writeFileSync(scriptFile, script); - child.exec('"'+process.execPath+'" '+scriptFile, { - env: process.env, - cwd: _pwd(), - maxBuffer: 20*1024*1024 - }); - - // The wait loop - // sleepFile is used as a dummy I/O op to mitigate unnecessary CPU usage - // (tried many I/O sync ops, writeFileSync() seems to be only one that is effective in reducing - // CPU usage, though apparently not so much on Windows) - while (!fs.existsSync(codeFile)) { updateStdout(); fs.writeFileSync(sleepFile, 'a'); } - while (!fs.existsSync(stdoutFile)) { updateStdout(); fs.writeFileSync(sleepFile, 'a'); } - - // At this point codeFile exists, but it's not necessarily flushed yet. - // Keep reading it until it is. - var code = parseInt('', 10); - while (isNaN(code)) { - code = parseInt(fs.readFileSync(codeFile, 'utf8'), 10); - } - - var stdout = fs.readFileSync(stdoutFile, 'utf8'); - - // No biggie if we can't erase the files now -- they're in a temp dir anyway - try { common.unlinkSync(scriptFile); } catch(e) {} - try { common.unlinkSync(stdoutFile); } catch(e) {} - try { common.unlinkSync(codeFile); } catch(e) {} - try { common.unlinkSync(sleepFile); } catch(e) {} - - // some shell return codes are defined as errors, per http://tldp.org/LDP/abs/html/exitcodes.html - if (code === 1 || code === 2 || code >= 126) { - common.error('', true); // unix/shell doesn't really give an error message after non-zero exit codes - } - // True if successful, false if not - var obj = { - code: code, - output: stdout - }; - return obj; -} // execSync() - -// Wrapper around exec() to enable echoing output to console in real time -function execAsync(cmd, opts, callback) { - var output = ''; - - var options = common.extend({ - silent: common.config.silent - }, opts); - - var c = child.exec(cmd, {env: process.env, maxBuffer: 20*1024*1024}, function(err) { - if (callback) - callback(err ? err.code : 0, output); - }); - - c.stdout.on('data', function(data) { - output += data; - if (!options.silent) - process.stdout.write(data); - }); - - c.stderr.on('data', function(data) { - output += data; - if (!options.silent) - process.stdout.write(data); - }); - - return c; -} - -//@ -//@ ### exec(command [, options] [, callback]) -//@ Available options (all `false` by default): -//@ -//@ + `async`: Asynchronous execution. Defaults to true if a callback is provided. -//@ + `silent`: Do not echo program output to console. -//@ -//@ Examples: -//@ -//@ ```javascript -//@ var version = exec('node --version', {silent:true}).output; -//@ -//@ var child = exec('some_long_running_process', {async:true}); -//@ child.stdout.on('data', function(data) { -//@ /* ... do something with data ... */ -//@ }); -//@ -//@ exec('some_long_running_process', function(code, output) { -//@ console.log('Exit code:', code); -//@ console.log('Program output:', output); -//@ }); -//@ ``` -//@ -//@ Executes the given `command` _synchronously_, unless otherwise specified. -//@ When in synchronous mode returns the object `{ code:..., output:... }`, containing the program's -//@ `output` (stdout + stderr) and its exit `code`. Otherwise returns the child process object, and -//@ the `callback` gets the arguments `(code, output)`. -//@ -//@ **Note:** For long-lived processes, it's best to run `exec()` asynchronously as -//@ the current synchronous implementation uses a lot of CPU. This should be getting -//@ fixed soon. -function _exec(command, options, callback) { - if (!command) - common.error('must specify command'); - - // Callback is defined instead of options. - if (typeof options === 'function') { - callback = options; - options = { async: true }; - } - - // Callback is defined with options. - if (typeof options === 'object' && typeof callback === 'function') { - options.async = true; - } - - options = common.extend({ - silent: common.config.silent, - async: false - }, options); - - if (options.async) - return execAsync(command, options, callback); - else - return execSync(command, options); -} -module.exports = _exec; diff --git a/node_modules/shelljs/src/find.js b/node_modules/shelljs/src/find.js deleted file mode 100644 index d9eeec26..00000000 --- a/node_modules/shelljs/src/find.js +++ /dev/null @@ -1,51 +0,0 @@ -var fs = require('fs'); -var common = require('./common'); -var _ls = require('./ls'); - -//@ -//@ ### find(path [,path ...]) -//@ ### find(path_array) -//@ Examples: -//@ -//@ ```javascript -//@ find('src', 'lib'); -//@ find(['src', 'lib']); // same as above -//@ find('.').filter(function(file) { return file.match(/\.js$/); }); -//@ ``` -//@ -//@ Returns array of all files (however deep) in the given paths. -//@ -//@ The main difference from `ls('-R', path)` is that the resulting file names -//@ include the base directories, e.g. `lib/resources/file1` instead of just `file1`. -function _find(options, paths) { - if (!paths) - common.error('no path specified'); - else if (typeof paths === 'object') - paths = paths; // assume array - else if (typeof paths === 'string') - paths = [].slice.call(arguments, 1); - - var list = []; - - function pushFile(file) { - if (common.platform === 'win') - file = file.replace(/\\/g, '/'); - list.push(file); - } - - // why not simply do ls('-R', paths)? because the output wouldn't give the base dirs - // to get the base dir in the output, we need instead ls('-R', 'dir/*') for every directory - - paths.forEach(function(file) { - pushFile(file); - - if (fs.statSync(file).isDirectory()) { - _ls('-RA', file+'/*').forEach(function(subfile) { - pushFile(subfile); - }); - } - }); - - return list; -} -module.exports = _find; diff --git a/node_modules/shelljs/src/grep.js b/node_modules/shelljs/src/grep.js deleted file mode 100644 index 00c7d6a4..00000000 --- a/node_modules/shelljs/src/grep.js +++ /dev/null @@ -1,52 +0,0 @@ -var common = require('./common'); -var fs = require('fs'); - -//@ -//@ ### grep([options ,] regex_filter, file [, file ...]) -//@ ### grep([options ,] regex_filter, file_array) -//@ Available options: -//@ -//@ + `-v`: Inverse the sense of the regex and print the lines not matching the criteria. -//@ -//@ Examples: -//@ -//@ ```javascript -//@ grep('-v', 'GLOBAL_VARIABLE', '*.js'); -//@ grep('GLOBAL_VARIABLE', '*.js'); -//@ ``` -//@ -//@ Reads input string from given files and returns a string containing all lines of the -//@ file that match the given `regex_filter`. Wildcard `*` accepted. -function _grep(options, regex, files) { - options = common.parseOptions(options, { - 'v': 'inverse' - }); - - if (!files) - common.error('no paths given'); - - if (typeof files === 'string') - files = [].slice.call(arguments, 2); - // if it's array leave it as it is - - files = common.expand(files); - - var grep = ''; - files.forEach(function(file) { - if (!fs.existsSync(file)) { - common.error('no such file or directory: ' + file, true); - return; - } - - var contents = fs.readFileSync(file, 'utf8'), - lines = contents.split(/\r*\n/); - lines.forEach(function(line) { - var matched = line.match(regex); - if ((options.inverse && !matched) || (!options.inverse && matched)) - grep += line + '\n'; - }); - }); - - return common.ShellString(grep); -} -module.exports = _grep; diff --git a/node_modules/shelljs/src/ln.js b/node_modules/shelljs/src/ln.js deleted file mode 100644 index a7b9701b..00000000 --- a/node_modules/shelljs/src/ln.js +++ /dev/null @@ -1,53 +0,0 @@ -var fs = require('fs'); -var path = require('path'); -var common = require('./common'); -var os = require('os'); - -//@ -//@ ### ln(options, source, dest) -//@ ### ln(source, dest) -//@ Available options: -//@ -//@ + `s`: symlink -//@ + `f`: force -//@ -//@ Examples: -//@ -//@ ```javascript -//@ ln('file', 'newlink'); -//@ ln('-sf', 'file', 'existing'); -//@ ``` -//@ -//@ Links source to dest. Use -f to force the link, should dest already exist. -function _ln(options, source, dest) { - options = common.parseOptions(options, { - 's': 'symlink', - 'f': 'force' - }); - - if (!source || !dest) { - common.error('Missing <source> and/or <dest>'); - } - - source = path.resolve(process.cwd(), String(source)); - dest = path.resolve(process.cwd(), String(dest)); - - if (!fs.existsSync(source)) { - common.error('Source file does not exist', true); - } - - if (fs.existsSync(dest)) { - if (!options.force) { - common.error('Destination file exists', true); - } - - fs.unlinkSync(dest); - } - - if (options.symlink) { - fs.symlinkSync(source, dest, os.platform() === "win32" ? "junction" : null); - } else { - fs.linkSync(source, dest, os.platform() === "win32" ? "junction" : null); - } -} -module.exports = _ln; diff --git a/node_modules/shelljs/src/ls.js b/node_modules/shelljs/src/ls.js deleted file mode 100644 index 3345db44..00000000 --- a/node_modules/shelljs/src/ls.js +++ /dev/null @@ -1,126 +0,0 @@ -var path = require('path'); -var fs = require('fs'); -var common = require('./common'); -var _cd = require('./cd'); -var _pwd = require('./pwd'); - -//@ -//@ ### ls([options ,] path [,path ...]) -//@ ### ls([options ,] path_array) -//@ Available options: -//@ -//@ + `-R`: recursive -//@ + `-A`: all files (include files beginning with `.`, except for `.` and `..`) -//@ -//@ Examples: -//@ -//@ ```javascript -//@ ls('projs/*.js'); -//@ ls('-R', '/users/me', '/tmp'); -//@ ls('-R', ['/users/me', '/tmp']); // same as above -//@ ``` -//@ -//@ Returns array of files in the given path, or in current directory if no path provided. -function _ls(options, paths) { - options = common.parseOptions(options, { - 'R': 'recursive', - 'A': 'all', - 'a': 'all_deprecated' - }); - - if (options.all_deprecated) { - // We won't support the -a option as it's hard to image why it's useful - // (it includes '.' and '..' in addition to '.*' files) - // For backwards compatibility we'll dump a deprecated message and proceed as before - common.log('ls: Option -a is deprecated. Use -A instead'); - options.all = true; - } - - if (!paths) - paths = ['.']; - else if (typeof paths === 'object') - paths = paths; // assume array - else if (typeof paths === 'string') - paths = [].slice.call(arguments, 1); - - var list = []; - - // Conditionally pushes file to list - returns true if pushed, false otherwise - // (e.g. prevents hidden files to be included unless explicitly told so) - function pushFile(file, query) { - // hidden file? - if (path.basename(file)[0] === '.') { - // not explicitly asking for hidden files? - if (!options.all && !(path.basename(query)[0] === '.' && path.basename(query).length > 1)) - return false; - } - - if (common.platform === 'win') - file = file.replace(/\\/g, '/'); - - list.push(file); - return true; - } - - paths.forEach(function(p) { - if (fs.existsSync(p)) { - var stats = fs.statSync(p); - // Simple file? - if (stats.isFile()) { - pushFile(p, p); - return; // continue - } - - // Simple dir? - if (stats.isDirectory()) { - // Iterate over p contents - fs.readdirSync(p).forEach(function(file) { - if (!pushFile(file, p)) - return; - - // Recursive? - if (options.recursive) { - var oldDir = _pwd(); - _cd('', p); - if (fs.statSync(file).isDirectory()) - list = list.concat(_ls('-R'+(options.all?'A':''), file+'/*')); - _cd('', oldDir); - } - }); - return; // continue - } - } - - // p does not exist - possible wildcard present - - var basename = path.basename(p); - var dirname = path.dirname(p); - // Wildcard present on an existing dir? (e.g. '/tmp/*.js') - if (basename.search(/\*/) > -1 && fs.existsSync(dirname) && fs.statSync(dirname).isDirectory) { - // Escape special regular expression chars - var regexp = basename.replace(/(\^|\$|\(|\)|<|>|\[|\]|\{|\}|\.|\+|\?)/g, '\\$1'); - // Translates wildcard into regex - regexp = '^' + regexp.replace(/\*/g, '.*') + '$'; - // Iterate over directory contents - fs.readdirSync(dirname).forEach(function(file) { - if (file.match(new RegExp(regexp))) { - if (!pushFile(path.normalize(dirname+'/'+file), basename)) - return; - - // Recursive? - if (options.recursive) { - var pp = dirname + '/' + file; - if (fs.lstatSync(pp).isDirectory()) - list = list.concat(_ls('-R'+(options.all?'A':''), pp+'/*')); - } // recursive - } // if file matches - }); // forEach - return; - } - - common.error('no such file or directory: ' + p, true); - }); - - return list; -} -module.exports = _ls; diff --git a/node_modules/shelljs/src/mkdir.js b/node_modules/shelljs/src/mkdir.js deleted file mode 100644 index 5a7088f2..00000000 --- a/node_modules/shelljs/src/mkdir.js +++ /dev/null @@ -1,68 +0,0 @@ -var common = require('./common'); -var fs = require('fs'); -var path = require('path'); - -// Recursively creates 'dir' -function mkdirSyncRecursive(dir) { - var baseDir = path.dirname(dir); - - // Base dir exists, no recursion necessary - if (fs.existsSync(baseDir)) { - fs.mkdirSync(dir, parseInt('0777', 8)); - return; - } - - // Base dir does not exist, go recursive - mkdirSyncRecursive(baseDir); - - // Base dir created, can create dir - fs.mkdirSync(dir, parseInt('0777', 8)); -} - -//@ -//@ ### mkdir([options ,] dir [, dir ...]) -//@ ### mkdir([options ,] dir_array) -//@ Available options: -//@ -//@ + `p`: full path (will create intermediate dirs if necessary) -//@ -//@ Examples: -//@ -//@ ```javascript -//@ mkdir('-p', '/tmp/a/b/c/d', '/tmp/e/f/g'); -//@ mkdir('-p', ['/tmp/a/b/c/d', '/tmp/e/f/g']); // same as above -//@ ``` -//@ -//@ Creates directories. -function _mkdir(options, dirs) { - options = common.parseOptions(options, { - 'p': 'fullpath' - }); - if (!dirs) - common.error('no paths given'); - - if (typeof dirs === 'string') - dirs = [].slice.call(arguments, 1); - // if it's array leave it as it is - - dirs.forEach(function(dir) { - if (fs.existsSync(dir)) { - if (!options.fullpath) - common.error('path already exists: ' + dir, true); - return; // skip dir - } - - // Base dir does not exist, and no -p option given - var baseDir = path.dirname(dir); - if (!fs.existsSync(baseDir) && !options.fullpath) { - common.error('no such file or directory: ' + baseDir, true); - return; // skip dir - } - - if (options.fullpath) - mkdirSyncRecursive(dir); - else - fs.mkdirSync(dir, parseInt('0777', 8)); - }); -} // mkdir -module.exports = _mkdir; diff --git a/node_modules/shelljs/src/mv.js b/node_modules/shelljs/src/mv.js deleted file mode 100644 index 11f96071..00000000 --- a/node_modules/shelljs/src/mv.js +++ /dev/null @@ -1,80 +0,0 @@ -var fs = require('fs'); -var path = require('path'); -var common = require('./common'); - -//@ -//@ ### mv(source [, source ...], dest') -//@ ### mv(source_array, dest') -//@ Available options: -//@ -//@ + `f`: force -//@ -//@ Examples: -//@ -//@ ```javascript -//@ mv('-f', 'file', 'dir/'); -//@ mv('file1', 'file2', 'dir/'); -//@ mv(['file1', 'file2'], 'dir/'); // same as above -//@ ``` -//@ -//@ Moves files. The wildcard `*` is accepted. -function _mv(options, sources, dest) { - options = common.parseOptions(options, { - 'f': 'force' - }); - - // Get sources, dest - if (arguments.length < 3) { - common.error('missing <source> and/or <dest>'); - } else if (arguments.length > 3) { - sources = [].slice.call(arguments, 1, arguments.length - 1); - dest = arguments[arguments.length - 1]; - } else if (typeof sources === 'string') { - sources = [sources]; - } else if ('length' in sources) { - sources = sources; // no-op for array - } else { - common.error('invalid arguments'); - } - - sources = common.expand(sources); - - var exists = fs.existsSync(dest), - stats = exists && fs.statSync(dest); - - // Dest is not existing dir, but multiple sources given - if ((!exists || !stats.isDirectory()) && sources.length > 1) - common.error('dest is not a directory (too many sources)'); - - // Dest is an existing file, but no -f given - if (exists && stats.isFile() && !options.force) - common.error('dest file already exists: ' + dest); - - sources.forEach(function(src) { - if (!fs.existsSync(src)) { - common.error('no such file or directory: '+src, true); - return; // skip file - } - - // If here, src exists - - // When copying to '/path/dir': - // thisDest = '/path/dir/file1' - var thisDest = dest; - if (fs.existsSync(dest) && fs.statSync(dest).isDirectory()) - thisDest = path.normalize(dest + '/' + path.basename(src)); - - if (fs.existsSync(thisDest) && !options.force) { - common.error('dest file already exists: ' + thisDest, true); - return; // skip file - } - - if (path.resolve(src) === path.dirname(path.resolve(thisDest))) { - common.error('cannot move to self: '+src, true); - return; // skip file - } - - fs.renameSync(src, thisDest); - }); // forEach(src) -} // mv -module.exports = _mv; diff --git a/node_modules/shelljs/src/popd.js b/node_modules/shelljs/src/popd.js deleted file mode 100644 index 11ea24fa..00000000 --- a/node_modules/shelljs/src/popd.js +++ /dev/null @@ -1 +0,0 @@ -// see dirs.js \ No newline at end of file diff --git a/node_modules/shelljs/src/pushd.js b/node_modules/shelljs/src/pushd.js deleted file mode 100644 index 11ea24fa..00000000 --- a/node_modules/shelljs/src/pushd.js +++ /dev/null @@ -1 +0,0 @@ -// see dirs.js \ No newline at end of file diff --git a/node_modules/shelljs/src/pwd.js b/node_modules/shelljs/src/pwd.js deleted file mode 100644 index 41727bb9..00000000 --- a/node_modules/shelljs/src/pwd.js +++ /dev/null @@ -1,11 +0,0 @@ -var path = require('path'); -var common = require('./common'); - -//@ -//@ ### pwd() -//@ Returns the current directory. -function _pwd(options) { - var pwd = path.resolve(process.cwd()); - return common.ShellString(pwd); -} -module.exports = _pwd; diff --git a/node_modules/shelljs/src/rm.js b/node_modules/shelljs/src/rm.js deleted file mode 100644 index 3abe6e1d..00000000 --- a/node_modules/shelljs/src/rm.js +++ /dev/null @@ -1,145 +0,0 @@ -var common = require('./common'); -var fs = require('fs'); - -// Recursively removes 'dir' -// Adapted from https://github.com/ryanmcgrath/wrench-js -// -// Copyright (c) 2010 Ryan McGrath -// Copyright (c) 2012 Artur Adib -// -// Licensed under the MIT License -// http://www.opensource.org/licenses/mit-license.php -function rmdirSyncRecursive(dir, force) { - var files; - - files = fs.readdirSync(dir); - - // Loop through and delete everything in the sub-tree after checking it - for(var i = 0; i < files.length; i++) { - var file = dir + "/" + files[i], - currFile = fs.lstatSync(file); - - if(currFile.isDirectory()) { // Recursive function back to the beginning - rmdirSyncRecursive(file, force); - } - - else if(currFile.isSymbolicLink()) { // Unlink symlinks - if (force || isWriteable(file)) { - try { - common.unlinkSync(file); - } catch (e) { - common.error('could not remove file (code '+e.code+'): ' + file, true); - } - } - } - - else // Assume it's a file - perhaps a try/catch belongs here? - if (force || isWriteable(file)) { - try { - common.unlinkSync(file); - } catch (e) { - common.error('could not remove file (code '+e.code+'): ' + file, true); - } - } - } - - // Now that we know everything in the sub-tree has been deleted, we can delete the main directory. - // Huzzah for the shopkeep. - - var result; - try { - result = fs.rmdirSync(dir); - } catch(e) { - common.error('could not remove directory (code '+e.code+'): ' + dir, true); - } - - return result; -} // rmdirSyncRecursive - -// Hack to determine if file has write permissions for current user -// Avoids having to check user, group, etc, but it's probably slow -function isWriteable(file) { - var writePermission = true; - try { - var __fd = fs.openSync(file, 'a'); - fs.closeSync(__fd); - } catch(e) { - writePermission = false; - } - - return writePermission; -} - -//@ -//@ ### rm([options ,] file [, file ...]) -//@ ### rm([options ,] file_array) -//@ Available options: -//@ -//@ + `-f`: force -//@ + `-r, -R`: recursive -//@ -//@ Examples: -//@ -//@ ```javascript -//@ rm('-rf', '/tmp/*'); -//@ rm('some_file.txt', 'another_file.txt'); -//@ rm(['some_file.txt', 'another_file.txt']); // same as above -//@ ``` -//@ -//@ Removes files. The wildcard `*` is accepted. -function _rm(options, files) { - options = common.parseOptions(options, { - 'f': 'force', - 'r': 'recursive', - 'R': 'recursive' - }); - if (!files) - common.error('no paths given'); - - if (typeof files === 'string') - files = [].slice.call(arguments, 1); - // if it's array leave it as it is - - files = common.expand(files); - - files.forEach(function(file) { - if (!fs.existsSync(file)) { - // Path does not exist, no force flag given - if (!options.force) - common.error('no such file or directory: '+file, true); - - return; // skip file - } - - // If here, path exists - - var stats = fs.lstatSync(file); - if (stats.isFile() || stats.isSymbolicLink()) { - - // Do not check for file writing permissions - if (options.force) { - common.unlinkSync(file); - return; - } - - if (isWriteable(file)) - common.unlinkSync(file); - else - common.error('permission denied: '+file, true); - - return; - } // simple file - - // Path is an existing directory, but no -r flag given - if (stats.isDirectory() && !options.recursive) { - common.error('path is a directory', true); - return; // skip path - } - - // Recursively remove existing directory - if (stats.isDirectory() && options.recursive) { - rmdirSyncRecursive(file, options.force); - } - }); // forEach(file) -} // rm -module.exports = _rm; diff --git a/node_modules/shelljs/src/sed.js b/node_modules/shelljs/src/sed.js deleted file mode 100644 index 65f7cb49..00000000 --- a/node_modules/shelljs/src/sed.js +++ /dev/null @@ -1,43 +0,0 @@ -var common = require('./common'); -var fs = require('fs'); - -//@ -//@ ### sed([options ,] search_regex, replacement, file) -//@ Available options: -//@ -//@ + `-i`: Replace contents of 'file' in-place. _Note that no backups will be created!_ -//@ -//@ Examples: -//@ -//@ ```javascript -//@ sed('-i', 'PROGRAM_VERSION', 'v0.1.3', 'source.js'); -//@ sed(/.*DELETE_THIS_LINE.*\n/, '', 'source.js'); -//@ ``` -//@ -//@ Reads an input string from `file` and performs a JavaScript `replace()` on the input -//@ using the given search regex and replacement string or function. Returns the new string after replacement. -function _sed(options, regex, replacement, file) { - options = common.parseOptions(options, { - 'i': 'inplace' - }); - - if (typeof replacement === 'string' || typeof replacement === 'function') - replacement = replacement; // no-op - else if (typeof replacement === 'number') - replacement = replacement.toString(); // fallback - else - common.error('invalid replacement string'); - - if (!file) - common.error('no file given'); - - if (!fs.existsSync(file)) - common.error('no such file or directory: ' + file); - - var result = fs.readFileSync(file, 'utf8').replace(regex, replacement); - if (options.inplace) - fs.writeFileSync(file, result, 'utf8'); - - return common.ShellString(result); -} -module.exports = _sed; diff --git a/node_modules/shelljs/src/tempdir.js b/node_modules/shelljs/src/tempdir.js deleted file mode 100644 index 45953c24..00000000 --- a/node_modules/shelljs/src/tempdir.js +++ /dev/null @@ -1,56 +0,0 @@ -var common = require('./common'); -var os = require('os'); -var fs = require('fs'); - -// Returns false if 'dir' is not a writeable directory, 'dir' otherwise -function writeableDir(dir) { - if (!dir || !fs.existsSync(dir)) - return false; - - if (!fs.statSync(dir).isDirectory()) - return false; - - var testFile = dir+'/'+common.randomFileName(); - try { - fs.writeFileSync(testFile, ' '); - common.unlinkSync(testFile); - return dir; - } catch (e) { - return false; - } -} - - -//@ -//@ ### tempdir() -//@ -//@ Examples: -//@ -//@ ```javascript -//@ var tmp = tempdir(); // "/tmp" for most *nix platforms -//@ ``` -//@ -//@ Searches and returns string containing a writeable, platform-dependent temporary directory. -//@ Follows Python's [tempfile algorithm](http://docs.python.org/library/tempfile.html#tempfile.tempdir). -function _tempDir() { - var state = common.state; - if (state.tempDir) - return state.tempDir; // from cache - - state.tempDir = writeableDir(os.tempDir && os.tempDir()) || // node 0.8+ - writeableDir(process.env['TMPDIR']) || - writeableDir(process.env['TEMP']) || - writeableDir(process.env['TMP']) || - writeableDir(process.env['Wimp$ScrapDir']) || // RiscOS - writeableDir('C:\\TEMP') || // Windows - writeableDir('C:\\TMP') || // Windows - writeableDir('\\TEMP') || // Windows - writeableDir('\\TMP') || // Windows - writeableDir('/tmp') || - writeableDir('/var/tmp') || - writeableDir('/usr/tmp') || - writeableDir('.'); // last resort - - return state.tempDir; -} -module.exports = _tempDir; diff --git a/node_modules/shelljs/src/test.js b/node_modules/shelljs/src/test.js deleted file mode 100644 index 8a4ac7d4..00000000 --- a/node_modules/shelljs/src/test.js +++ /dev/null @@ -1,85 +0,0 @@ -var common = require('./common'); -var fs = require('fs'); - -//@ -//@ ### test(expression) -//@ Available expression primaries: -//@ -//@ + `'-b', 'path'`: true if path is a block device -//@ + `'-c', 'path'`: true if path is a character device -//@ + `'-d', 'path'`: true if path is a directory -//@ + `'-e', 'path'`: true if path exists -//@ + `'-f', 'path'`: true if path is a regular file -//@ + `'-L', 'path'`: true if path is a symboilc link -//@ + `'-p', 'path'`: true if path is a pipe (FIFO) -//@ + `'-S', 'path'`: true if path is a socket -//@ -//@ Examples: -//@ -//@ ```javascript -//@ if (test('-d', path)) { /* do something with dir */ }; -//@ if (!test('-f', path)) continue; // skip if it's a regular file -//@ ``` -//@ -//@ Evaluates expression using the available primaries and returns corresponding value. -function _test(options, path) { - if (!path) - common.error('no path given'); - - // hack - only works with unary primaries - options = common.parseOptions(options, { - 'b': 'block', - 'c': 'character', - 'd': 'directory', - 'e': 'exists', - 'f': 'file', - 'L': 'link', - 'p': 'pipe', - 'S': 'socket' - }); - - var canInterpret = false; - for (var key in options) - if (options[key] === true) { - canInterpret = true; - break; - } - - if (!canInterpret) - common.error('could not interpret expression'); - - if (options.link) { - try { - return fs.lstatSync(path).isSymbolicLink(); - } catch(e) { - return false; - } - } - - if (!fs.existsSync(path)) - return false; - - if (options.exists) - return true; - - var stats = fs.statSync(path); - - if (options.block) - return stats.isBlockDevice(); - - if (options.character) - return stats.isCharacterDevice(); - - if (options.directory) - return stats.isDirectory(); - - if (options.file) - return stats.isFile(); - - if (options.pipe) - return stats.isFIFO(); - - if (options.socket) - return stats.isSocket(); -} // test -module.exports = _test; diff --git a/node_modules/shelljs/src/to.js b/node_modules/shelljs/src/to.js deleted file mode 100644 index f0299993..00000000 --- a/node_modules/shelljs/src/to.js +++ /dev/null @@ -1,29 +0,0 @@ -var common = require('./common'); -var fs = require('fs'); -var path = require('path'); - -//@ -//@ ### 'string'.to(file) -//@ -//@ Examples: -//@ -//@ ```javascript -//@ cat('input.txt').to('output.txt'); -//@ ``` -//@ -//@ Analogous to the redirection operator `>` in Unix, but works with JavaScript strings (such as -//@ those returned by `cat`, `grep`, etc). _Like Unix redirections, `to()` will overwrite any existing file!_ -function _to(options, file) { - if (!file) - common.error('wrong arguments'); - - if (!fs.existsSync( path.dirname(file) )) - common.error('no such file or directory: ' + path.dirname(file)); - - try { - fs.writeFileSync(file, this.toString(), 'utf8'); - } catch(e) { - common.error('could not write to file (code '+e.code+'): '+file, true); - } -} -module.exports = _to; diff --git a/node_modules/shelljs/src/toEnd.js b/node_modules/shelljs/src/toEnd.js deleted file mode 100644 index f6d099d9..00000000 --- a/node_modules/shelljs/src/toEnd.js +++ /dev/null @@ -1,29 +0,0 @@ -var common = require('./common'); -var fs = require('fs'); -var path = require('path'); - -//@ -//@ ### 'string'.toEnd(file) -//@ -//@ Examples: -//@ -//@ ```javascript -//@ cat('input.txt').toEnd('output.txt'); -//@ ``` -//@ -//@ Analogous to the redirect-and-append operator `>>` in Unix, but works with JavaScript strings (such as -//@ those returned by `cat`, `grep`, etc). -function _toEnd(options, file) { - if (!file) - common.error('wrong arguments'); - - if (!fs.existsSync( path.dirname(file) )) - common.error('no such file or directory: ' + path.dirname(file)); - - try { - fs.appendFileSync(file, this.toString(), 'utf8'); - } catch(e) { - common.error('could not append to file (code '+e.code+'): '+file, true); - } -} -module.exports = _toEnd; diff --git a/node_modules/shelljs/src/which.js b/node_modules/shelljs/src/which.js deleted file mode 100644 index 2822ecfb..00000000 --- a/node_modules/shelljs/src/which.js +++ /dev/null @@ -1,83 +0,0 @@ -var common = require('./common'); -var fs = require('fs'); -var path = require('path'); - -// Cross-platform method for splitting environment PATH variables -function splitPath(p) { - for (i=1;i<2;i++) {} - - if (!p) - return []; - - if (common.platform === 'win') - return p.split(';'); - else - return p.split(':'); -} - -function checkPath(path) { - return fs.existsSync(path) && fs.statSync(path).isDirectory() == false; -} - -//@ -//@ ### which(command) -//@ -//@ Examples: -//@ -//@ ```javascript -//@ var nodeExec = which('node'); -//@ ``` -//@ -//@ Searches for `command` in the system's PATH. On Windows looks for `.exe`, `.cmd`, and `.bat` extensions. -//@ Returns string containing the absolute path to the command. -function _which(options, cmd) { - if (!cmd) - common.error('must specify command'); - - var pathEnv = process.env.path || process.env.Path || process.env.PATH, - pathArray = splitPath(pathEnv), - where = null; - - // No relative/absolute paths provided? - if (cmd.search(/\//) === -1) { - // Search for command in PATH - pathArray.forEach(function(dir) { - if (where) - return; // already found it - - var attempt = path.resolve(dir + '/' + cmd); - if (checkPath(attempt)) { - where = attempt; - return; - } - - if (common.platform === 'win') { - var baseAttempt = attempt; - attempt = baseAttempt + '.exe'; - if (checkPath(attempt)) { - where = attempt; - return; - } - attempt = baseAttempt + '.cmd'; - if (checkPath(attempt)) { - where = attempt; - return; - } - attempt = baseAttempt + '.bat'; - if (checkPath(attempt)) { - where = attempt; - return; - } - } // if 'win' - }); - } - - // Command not found anywhere? - if (!checkPath(cmd) && !where) - return null; - - where = where || path.resolve(cmd); - - return common.ShellString(where); -} -module.exports = _which; diff --git a/package-lock.json b/package-lock.json index e091e542..4206ba44 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25,13 +25,12 @@ }, "@actions/tool-cache": { "version": "file:toolkit/actions-tool-cache-0.0.0.tgz", - "integrity": "sha512-R08MGFekNLkf1ofh5wi8QVgmFyPgkKC+Cp8FRE1n6zOpHbUWv3QGa6eR6z+2ESuGCstOPtbq/tRgZsSusItm9Q==", + "integrity": "sha512-33oYAVRdp6MWNT7Yca0//SmOsvpE7FpFfNA/LzwjIZdLucHaO6V67dqZ5p81CTBncrZal+O5kE9B8qSk0rhipg==", "requires": { "@actions/core": "^0.0.0", "@actions/exec": "^0.0.0", "@actions/io": "^0.0.0", "semver": "^6.1.0", - "shelljs": "^0.3.0", "typed-rest-client": "^1.4.0", "uuid": "^3.3.2" } @@ -4523,11 +4522,6 @@ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, - "shelljs": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz", - "integrity": "sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E=" - }, "shellwords": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", diff --git a/package.json b/package.json index 57ec95c5..1ff1d4a6 100644 --- a/package.json +++ b/package.json @@ -22,10 +22,10 @@ "author": "GitHub", "license": "MIT", "dependencies": { - "@actions/exit": "file:toolkit/actions-exit-0.0.0.tgz", "@actions/core": "file:toolkit/actions-core-0.0.0.tgz", - "@actions/io": "file:toolkit/actions-io-0.0.0.tgz", "@actions/exec": "file:toolkit/actions-exec-0.0.0.tgz", + "@actions/exit": "file:toolkit/actions-exit-0.0.0.tgz", + "@actions/io": "file:toolkit/actions-io-0.0.0.tgz", "@actions/tool-cache": "file:toolkit/actions-tool-cache-0.0.0.tgz", "semver": "^6.1.1" }, diff --git a/toolkit/actions-tool-cache-0.0.0.tgz b/toolkit/actions-tool-cache-0.0.0.tgz index 4b0e65efec4ced709b4fb69de905d0bd02b4571e..7ff733692094f7dd4ed5a40ca6e2de2b73bbca6e 100644 GIT binary patch literal 119066 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 SXY={kp8o}oayZZc00aQ<phepN literal 118504 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ⅇ%Y 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:i1 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 VTzjrP*Pi$6`CkAJVU7U$0|3d16y^W`