From 4d73af8dd965587e78aef1299477e8d11a9cc6d3 Mon Sep 17 00:00:00 2001 From: Danny McCormick Date: Wed, 26 Jun 2019 16:52:05 -0400 Subject: [PATCH] Consume different tool-cache --- node_modules/.bin/shjs | 15 + node_modules/.bin/shjs.cmd | 7 + node_modules/@actions/core/package.json | 8 +- node_modules/@actions/exec/package.json | 8 +- node_modules/@actions/exit/package.json | 8 +- node_modules/@actions/io/package.json | 8 +- .../@actions/tool-cache/lib/tool-cache.js | 3 +- .../@actions/tool-cache/lib/tool-cache.js.map | 2 +- node_modules/@actions/tool-cache/package.json | 13 +- node_modules/semver/package.json | 2 +- 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 +++ node_modules/tunnel/package.json | 2 +- node_modules/typed-rest-client/package.json | 2 +- node_modules/underscore/package.json | 2 +- node_modules/uuid/package.json | 2 +- package-lock.json | 315 +++------- toolkit/actions-tool-cache-0.0.0.tgz | Bin 118473 -> 118504 bytes 54 files changed, 3141 insertions(+), 255 deletions(-) create mode 100644 node_modules/.bin/shjs create mode 100644 node_modules/.bin/shjs.cmd create mode 100644 node_modules/shelljs/.documentup.json create mode 100644 node_modules/shelljs/.jshintrc create mode 100644 node_modules/shelljs/.npmignore create mode 100644 node_modules/shelljs/.travis.yml create mode 100644 node_modules/shelljs/LICENSE create mode 100644 node_modules/shelljs/README.md create mode 100644 node_modules/shelljs/bin/shjs create mode 100644 node_modules/shelljs/global.js create mode 100644 node_modules/shelljs/make.js create mode 100644 node_modules/shelljs/package.json create mode 100644 node_modules/shelljs/scripts/generate-docs.js create mode 100644 node_modules/shelljs/scripts/run-tests.js create mode 100644 node_modules/shelljs/shell.js create mode 100644 node_modules/shelljs/src/cat.js create mode 100644 node_modules/shelljs/src/cd.js create mode 100644 node_modules/shelljs/src/chmod.js create mode 100644 node_modules/shelljs/src/common.js create mode 100644 node_modules/shelljs/src/cp.js create mode 100644 node_modules/shelljs/src/dirs.js create mode 100644 node_modules/shelljs/src/echo.js create mode 100644 node_modules/shelljs/src/error.js create mode 100644 node_modules/shelljs/src/exec.js create mode 100644 node_modules/shelljs/src/find.js create mode 100644 node_modules/shelljs/src/grep.js create mode 100644 node_modules/shelljs/src/ln.js create mode 100644 node_modules/shelljs/src/ls.js create mode 100644 node_modules/shelljs/src/mkdir.js create mode 100644 node_modules/shelljs/src/mv.js create mode 100644 node_modules/shelljs/src/popd.js create mode 100644 node_modules/shelljs/src/pushd.js create mode 100644 node_modules/shelljs/src/pwd.js create mode 100644 node_modules/shelljs/src/rm.js create mode 100644 node_modules/shelljs/src/sed.js create mode 100644 node_modules/shelljs/src/tempdir.js create mode 100644 node_modules/shelljs/src/test.js create mode 100644 node_modules/shelljs/src/to.js create mode 100644 node_modules/shelljs/src/toEnd.js create mode 100644 node_modules/shelljs/src/which.js diff --git a/node_modules/.bin/shjs b/node_modules/.bin/shjs new file mode 100644 index 00000000..1d45691b --- /dev/null +++ b/node_modules/.bin/shjs @@ -0,0 +1,15 @@ +#!/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 new file mode 100644 index 00000000..3d98b0bc --- /dev/null +++ b/node_modules/.bin/shjs.cmd @@ -0,0 +1,7 @@ +@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/core/package.json b/node_modules/@actions/core/package.json index c8ff513f..1b51eeeb 100644 --- a/node_modules/@actions/core/package.json +++ b/node_modules/@actions/core/package.json @@ -7,23 +7,23 @@ "_phantomChildren": {}, "_requested": { "type": "file", - "where": "C:\\Users\\damccorm\\Documents\\setup-node", + "where": "C:\\Users\\Administrator\\Documents\\setup-node", "raw": "@actions/core@file:toolkit/actions-core-0.0.0.tgz", "name": "@actions/core", "escapedName": "@actions%2fcore", "scope": "@actions", "rawSpec": "file:toolkit/actions-core-0.0.0.tgz", "saveSpec": "file:toolkit\\actions-core-0.0.0.tgz", - "fetchSpec": "C:\\Users\\damccorm\\Documents\\setup-node\\toolkit\\actions-core-0.0.0.tgz" + "fetchSpec": "C:\\Users\\Administrator\\Documents\\setup-node\\toolkit\\actions-core-0.0.0.tgz" }, "_requiredBy": [ "/", "/@actions/tool-cache" ], - "_resolved": "C:\\Users\\damccorm\\Documents\\setup-node\\toolkit\\actions-core-0.0.0.tgz", + "_resolved": "C:\\Users\\Administrator\\Documents\\setup-node\\toolkit\\actions-core-0.0.0.tgz", "_shasum": "346d90a534fa6c5021bc2e1b732574fd2c66fc35", "_spec": "@actions/core@file:toolkit/actions-core-0.0.0.tgz", - "_where": "C:\\Users\\damccorm\\Documents\\setup-node", + "_where": "C:\\Users\\Administrator\\Documents\\setup-node", "bugs": { "url": "https://github.com/actions/toolkit/issues" }, diff --git a/node_modules/@actions/exec/package.json b/node_modules/@actions/exec/package.json index c07f5ef8..df0651b3 100644 --- a/node_modules/@actions/exec/package.json +++ b/node_modules/@actions/exec/package.json @@ -7,23 +7,23 @@ "_phantomChildren": {}, "_requested": { "type": "file", - "where": "C:\\Users\\damccorm\\Documents\\setup-node", + "where": "C:\\Users\\Administrator\\Documents\\setup-node", "raw": "@actions/exec@file:toolkit/actions-exec-0.0.0.tgz", "name": "@actions/exec", "escapedName": "@actions%2fexec", "scope": "@actions", "rawSpec": "file:toolkit/actions-exec-0.0.0.tgz", "saveSpec": "file:toolkit\\actions-exec-0.0.0.tgz", - "fetchSpec": "C:\\Users\\damccorm\\Documents\\setup-node\\toolkit\\actions-exec-0.0.0.tgz" + "fetchSpec": "C:\\Users\\Administrator\\Documents\\setup-node\\toolkit\\actions-exec-0.0.0.tgz" }, "_requiredBy": [ "/", "/@actions/tool-cache" ], - "_resolved": "C:\\Users\\damccorm\\Documents\\setup-node\\toolkit\\actions-exec-0.0.0.tgz", + "_resolved": "C:\\Users\\Administrator\\Documents\\setup-node\\toolkit\\actions-exec-0.0.0.tgz", "_shasum": "341d868fe6c4123ded20db9c2106b7b8c16e1d73", "_spec": "@actions/exec@file:toolkit/actions-exec-0.0.0.tgz", - "_where": "C:\\Users\\damccorm\\Documents\\setup-node", + "_where": "C:\\Users\\Administrator\\Documents\\setup-node", "bugs": { "url": "https://github.com/actions/toolkit/issues" }, diff --git a/node_modules/@actions/exit/package.json b/node_modules/@actions/exit/package.json index e8095317..9658eea1 100644 --- a/node_modules/@actions/exit/package.json +++ b/node_modules/@actions/exit/package.json @@ -7,23 +7,23 @@ "_phantomChildren": {}, "_requested": { "type": "file", - "where": "C:\\Users\\damccorm\\Documents\\setup-node", + "where": "C:\\Users\\Administrator\\Documents\\setup-node", "raw": "@actions/exit@file:toolkit/actions-exit-0.0.0.tgz", "name": "@actions/exit", "escapedName": "@actions%2fexit", "scope": "@actions", "rawSpec": "file:toolkit/actions-exit-0.0.0.tgz", "saveSpec": "file:toolkit\\actions-exit-0.0.0.tgz", - "fetchSpec": "C:\\Users\\damccorm\\Documents\\setup-node\\toolkit\\actions-exit-0.0.0.tgz" + "fetchSpec": "C:\\Users\\Administrator\\Documents\\setup-node\\toolkit\\actions-exit-0.0.0.tgz" }, "_requiredBy": [ "/", "/@actions/core" ], - "_resolved": "C:\\Users\\damccorm\\Documents\\setup-node\\toolkit\\actions-exit-0.0.0.tgz", + "_resolved": "C:\\Users\\Administrator\\Documents\\setup-node\\toolkit\\actions-exit-0.0.0.tgz", "_shasum": "d47c8c61b45750ae49fea3061e3419a547b2a48f", "_spec": "@actions/exit@file:toolkit/actions-exit-0.0.0.tgz", - "_where": "C:\\Users\\damccorm\\Documents\\setup-node", + "_where": "C:\\Users\\Administrator\\Documents\\setup-node", "bugs": { "url": "https://github.com/actions/toolkit/issues" }, diff --git a/node_modules/@actions/io/package.json b/node_modules/@actions/io/package.json index 43437fe9..ce4ed2d6 100644 --- a/node_modules/@actions/io/package.json +++ b/node_modules/@actions/io/package.json @@ -7,23 +7,23 @@ "_phantomChildren": {}, "_requested": { "type": "file", - "where": "C:\\Users\\damccorm\\Documents\\setup-node", + "where": "C:\\Users\\Administrator\\Documents\\setup-node", "raw": "@actions/io@file:toolkit/actions-io-0.0.0.tgz", "name": "@actions/io", "escapedName": "@actions%2fio", "scope": "@actions", "rawSpec": "file:toolkit/actions-io-0.0.0.tgz", "saveSpec": "file:toolkit\\actions-io-0.0.0.tgz", - "fetchSpec": "C:\\Users\\damccorm\\Documents\\setup-node\\toolkit\\actions-io-0.0.0.tgz" + "fetchSpec": "C:\\Users\\Administrator\\Documents\\setup-node\\toolkit\\actions-io-0.0.0.tgz" }, "_requiredBy": [ "/", "/@actions/tool-cache" ], - "_resolved": "C:\\Users\\damccorm\\Documents\\setup-node\\toolkit\\actions-io-0.0.0.tgz", + "_resolved": "C:\\Users\\Administrator\\Documents\\setup-node\\toolkit\\actions-io-0.0.0.tgz", "_shasum": "1e8f0faca6b39215bebacedf473e5bb0716e39bf", "_spec": "@actions/io@file:toolkit/actions-io-0.0.0.tgz", - "_where": "C:\\Users\\damccorm\\Documents\\setup-node", + "_where": "C:\\Users\\Administrator\\Documents\\setup-node", "bugs": { "url": "https://github.com/actions/toolkit/issues" }, diff --git a/node_modules/@actions/tool-cache/lib/tool-cache.js b/node_modules/@actions/tool-cache/lib/tool-cache.js index eb924d79..3e16f53f 100644 --- a/node_modules/@actions/tool-cache/lib/tool-cache.js +++ b/node_modules/@actions/tool-cache/lib/tool-cache.js @@ -15,6 +15,7 @@ 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"); @@ -272,7 +273,7 @@ function cacheDir(sourceDir, tool, version, arch) { // 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 }); + shell.cp(s, destPath, '-r'); } // write .complete _completeToolPath(tool, version, arch); 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 740d24b3..55017746 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":"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"} \ 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 263a53ba..aee6aeaa 100644 --- a/node_modules/@actions/tool-cache/package.json +++ b/node_modules/@actions/tool-cache/package.json @@ -2,27 +2,27 @@ "_from": "file:toolkit\\actions-tool-cache-0.0.0.tgz", "_id": "@actions/tool-cache@0.0.0", "_inBundle": false, - "_integrity": "sha512-NavDg5VFXDfbe9TpFuj+uOHacjg1bT3Wmo3DQuul3gsGRBEXyzhh2MWKnBZs/Zh7FE3prLmIqpbtymafNBFkIA==", + "_integrity": "sha512-R08MGFekNLkf1ofh5wi8QVgmFyPgkKC+Cp8FRE1n6zOpHbUWv3QGa6eR6z+2ESuGCstOPtbq/tRgZsSusItm9Q==", "_location": "/@actions/tool-cache", "_phantomChildren": {}, "_requested": { "type": "file", - "where": "C:\\Users\\damccorm\\Documents\\setup-node", + "where": "C:\\Users\\Administrator\\Documents\\setup-node", "raw": "@actions/tool-cache@file:toolkit/actions-tool-cache-0.0.0.tgz", "name": "@actions/tool-cache", "escapedName": "@actions%2ftool-cache", "scope": "@actions", "rawSpec": "file:toolkit/actions-tool-cache-0.0.0.tgz", "saveSpec": "file:toolkit\\actions-tool-cache-0.0.0.tgz", - "fetchSpec": "C:\\Users\\damccorm\\Documents\\setup-node\\toolkit\\actions-tool-cache-0.0.0.tgz" + "fetchSpec": "C:\\Users\\Administrator\\Documents\\setup-node\\toolkit\\actions-tool-cache-0.0.0.tgz" }, "_requiredBy": [ "/" ], - "_resolved": "C:\\Users\\damccorm\\Documents\\setup-node\\toolkit\\actions-tool-cache-0.0.0.tgz", - "_shasum": "fa216c10f724010a74602fd14881f25f5b008070", + "_resolved": "C:\\Users\\Administrator\\Documents\\setup-node\\toolkit\\actions-tool-cache-0.0.0.tgz", + "_shasum": "e4ffe745db46f47e512db20e80f8ad25910e41d1", "_spec": "@actions/tool-cache@file:toolkit/actions-tool-cache-0.0.0.tgz", - "_where": "C:\\Users\\damccorm\\Documents\\setup-node", + "_where": "C:\\Users\\Administrator\\Documents\\setup-node", "bugs": { "url": "https://github.com/actions/toolkit/issues" }, @@ -32,6 +32,7 @@ "@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/semver/package.json b/node_modules/semver/package.json index 3dbba9e9..6c68916a 100644 --- a/node_modules/semver/package.json +++ b/node_modules/semver/package.json @@ -23,7 +23,7 @@ "_resolved": "https://registry.npmjs.org/semver/-/semver-6.1.2.tgz", "_shasum": "079960381376a3db62eb2edc8a3bfb10c7cfe318", "_spec": "semver@^6.1.1", - "_where": "C:\\Users\\damccorm\\Documents\\setup-node", + "_where": "C:\\Users\\Administrator\\Documents\\setup-node", "bin": { "semver": "./bin/semver" }, diff --git a/node_modules/shelljs/.documentup.json b/node_modules/shelljs/.documentup.json new file mode 100644 index 00000000..57fe3011 --- /dev/null +++ b/node_modules/shelljs/.documentup.json @@ -0,0 +1,6 @@ +{ + "name": "ShellJS", + "twitter": [ + "r2r" + ] +} diff --git a/node_modules/shelljs/.jshintrc b/node_modules/shelljs/.jshintrc new file mode 100644 index 00000000..a80c559a --- /dev/null +++ b/node_modules/shelljs/.jshintrc @@ -0,0 +1,7 @@ +{ + "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 new file mode 100644 index 00000000..6b20c38a --- /dev/null +++ b/node_modules/shelljs/.npmignore @@ -0,0 +1,2 @@ +test/ +tmp/ \ No newline at end of file diff --git a/node_modules/shelljs/.travis.yml b/node_modules/shelljs/.travis.yml new file mode 100644 index 00000000..99cdc743 --- /dev/null +++ b/node_modules/shelljs/.travis.yml @@ -0,0 +1,5 @@ +language: node_js +node_js: + - "0.8" + - "0.10" + - "0.11" diff --git a/node_modules/shelljs/LICENSE b/node_modules/shelljs/LICENSE new file mode 100644 index 00000000..1b35ee9f --- /dev/null +++ b/node_modules/shelljs/LICENSE @@ -0,0 +1,26 @@ +Copyright (c) 2012, Artur Adib +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 new file mode 100644 index 00000000..51358bd3 --- /dev/null +++ b/node_modules/shelljs/README.md @@ -0,0 +1,569 @@ +# ShellJS - Unix shell commands for Node.js [![Build Status](https://secure.travis-ci.org/arturadib/shelljs.png)](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. + + + + + + +## 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 new file mode 100644 index 00000000..d239a7ad --- /dev/null +++ b/node_modules/shelljs/bin/shjs @@ -0,0 +1,51 @@ +#!/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 new file mode 100644 index 00000000..97f0033c --- /dev/null +++ b/node_modules/shelljs/global.js @@ -0,0 +1,3 @@ +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 new file mode 100644 index 00000000..53e5e812 --- /dev/null +++ b/node_modules/shelljs/make.js @@ -0,0 +1,47 @@ +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 new file mode 100644 index 00000000..0e9c35dc --- /dev/null +++ b/node_modules/shelljs/package.json @@ -0,0 +1,66 @@ +{ + "_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 new file mode 100644 index 00000000..532fed9f --- /dev/null +++ b/node_modules/shelljs/scripts/generate-docs.js @@ -0,0 +1,21 @@ +#!/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 new file mode 100644 index 00000000..f9d31e06 --- /dev/null +++ b/node_modules/shelljs/scripts/run-tests.js @@ -0,0 +1,50 @@ +#!/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 new file mode 100644 index 00000000..54402c79 --- /dev/null +++ b/node_modules/shelljs/shell.js @@ -0,0 +1,157 @@ +// +// 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 new file mode 100644 index 00000000..f6f4d254 --- /dev/null +++ b/node_modules/shelljs/src/cat.js @@ -0,0 +1,43 @@ +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 new file mode 100644 index 00000000..230f4326 --- /dev/null +++ b/node_modules/shelljs/src/cd.js @@ -0,0 +1,19 @@ +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 new file mode 100644 index 00000000..f2888930 --- /dev/null +++ b/node_modules/shelljs/src/chmod.js @@ -0,0 +1,208 @@ +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 new file mode 100644 index 00000000..d8c23129 --- /dev/null +++ b/node_modules/shelljs/src/common.js @@ -0,0 +1,203 @@ +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 and/or '); + } 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 new file mode 100644 index 00000000..58fae8b3 --- /dev/null +++ b/node_modules/shelljs/src/dirs.js @@ -0,0 +1,191 @@ +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 new file mode 100644 index 00000000..760ea840 --- /dev/null +++ b/node_modules/shelljs/src/echo.js @@ -0,0 +1,20 @@ +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 new file mode 100644 index 00000000..cca3efb6 --- /dev/null +++ b/node_modules/shelljs/src/error.js @@ -0,0 +1,10 @@ +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 new file mode 100644 index 00000000..7ccdbc00 --- /dev/null +++ b/node_modules/shelljs/src/exec.js @@ -0,0 +1,181 @@ +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 new file mode 100644 index 00000000..d9eeec26 --- /dev/null +++ b/node_modules/shelljs/src/find.js @@ -0,0 +1,51 @@ +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 new file mode 100644 index 00000000..00c7d6a4 --- /dev/null +++ b/node_modules/shelljs/src/grep.js @@ -0,0 +1,52 @@ +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 new file mode 100644 index 00000000..a7b9701b --- /dev/null +++ b/node_modules/shelljs/src/ln.js @@ -0,0 +1,53 @@ +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 and/or '); + } + + 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 new file mode 100644 index 00000000..3345db44 --- /dev/null +++ b/node_modules/shelljs/src/ls.js @@ -0,0 +1,126 @@ +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 new file mode 100644 index 00000000..5a7088f2 --- /dev/null +++ b/node_modules/shelljs/src/mkdir.js @@ -0,0 +1,68 @@ +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 new file mode 100644 index 00000000..11f96071 --- /dev/null +++ b/node_modules/shelljs/src/mv.js @@ -0,0 +1,80 @@ +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 and/or '); + } 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 new file mode 100644 index 00000000..11ea24fa --- /dev/null +++ b/node_modules/shelljs/src/popd.js @@ -0,0 +1 @@ +// 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 new file mode 100644 index 00000000..11ea24fa --- /dev/null +++ b/node_modules/shelljs/src/pushd.js @@ -0,0 +1 @@ +// 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 new file mode 100644 index 00000000..41727bb9 --- /dev/null +++ b/node_modules/shelljs/src/pwd.js @@ -0,0 +1,11 @@ +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 new file mode 100644 index 00000000..3abe6e1d --- /dev/null +++ b/node_modules/shelljs/src/rm.js @@ -0,0 +1,145 @@ +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 new file mode 100644 index 00000000..65f7cb49 --- /dev/null +++ b/node_modules/shelljs/src/sed.js @@ -0,0 +1,43 @@ +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 new file mode 100644 index 00000000..45953c24 --- /dev/null +++ b/node_modules/shelljs/src/tempdir.js @@ -0,0 +1,56 @@ +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 new file mode 100644 index 00000000..8a4ac7d4 --- /dev/null +++ b/node_modules/shelljs/src/test.js @@ -0,0 +1,85 @@ +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 new file mode 100644 index 00000000..f0299993 --- /dev/null +++ b/node_modules/shelljs/src/to.js @@ -0,0 +1,29 @@ +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 new file mode 100644 index 00000000..f6d099d9 --- /dev/null +++ b/node_modules/shelljs/src/toEnd.js @@ -0,0 +1,29 @@ +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 new file mode 100644 index 00000000..2822ecfb --- /dev/null +++ b/node_modules/shelljs/src/which.js @@ -0,0 +1,83 @@ +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/node_modules/tunnel/package.json b/node_modules/tunnel/package.json index 416d2590..0db39c9c 100644 --- a/node_modules/tunnel/package.json +++ b/node_modules/tunnel/package.json @@ -21,7 +21,7 @@ "_resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.4.tgz", "_shasum": "2d3785a158c174c9a16dc2c046ec5fc5f1742213", "_spec": "tunnel@0.0.4", - "_where": "C:\\Users\\damccorm\\Documents\\setup-node\\node_modules\\typed-rest-client", + "_where": "C:\\Users\\Administrator\\Documents\\setup-node\\node_modules\\typed-rest-client", "author": { "name": "Koichi Kobayashi", "email": "koichik@improvement.jp" diff --git a/node_modules/typed-rest-client/package.json b/node_modules/typed-rest-client/package.json index 2a2e1e86..27068e8f 100644 --- a/node_modules/typed-rest-client/package.json +++ b/node_modules/typed-rest-client/package.json @@ -21,7 +21,7 @@ "_resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.5.0.tgz", "_shasum": "c0dda6e775b942fd46a2d99f2160a94953206fc2", "_spec": "typed-rest-client@^1.4.0", - "_where": "C:\\Users\\damccorm\\Documents\\setup-node\\toolkit\\actions-tool-cache-0.0.0.tgz", + "_where": "C:\\Users\\Administrator\\Documents\\setup-node\\toolkit\\actions-tool-cache-0.0.0.tgz", "author": { "name": "Microsoft Corporation" }, diff --git a/node_modules/underscore/package.json b/node_modules/underscore/package.json index 01e59e35..162795a8 100644 --- a/node_modules/underscore/package.json +++ b/node_modules/underscore/package.json @@ -21,7 +21,7 @@ "_resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", "_shasum": "4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022", "_spec": "underscore@1.8.3", - "_where": "C:\\Users\\damccorm\\Documents\\setup-node\\node_modules\\typed-rest-client", + "_where": "C:\\Users\\Administrator\\Documents\\setup-node\\node_modules\\typed-rest-client", "author": { "name": "Jeremy Ashkenas", "email": "jeremy@documentcloud.org" diff --git a/node_modules/uuid/package.json b/node_modules/uuid/package.json index 0c784575..90634773 100644 --- a/node_modules/uuid/package.json +++ b/node_modules/uuid/package.json @@ -22,7 +22,7 @@ "_resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", "_shasum": "1b4af4955eb3077c501c23872fc6513811587131", "_spec": "uuid@^3.3.2", - "_where": "C:\\Users\\damccorm\\Documents\\setup-node\\toolkit\\actions-tool-cache-0.0.0.tgz", + "_where": "C:\\Users\\Administrator\\Documents\\setup-node\\toolkit\\actions-tool-cache-0.0.0.tgz", "bin": { "uuid": "./bin/uuid" }, diff --git a/package-lock.json b/package-lock.json index 3ec024e2..9de248a4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25,12 +25,13 @@ }, "@actions/tool-cache": { "version": "file:toolkit/actions-tool-cache-0.0.0.tgz", - "integrity": "sha512-NavDg5VFXDfbe9TpFuj+uOHacjg1bT3Wmo3DQuul3gsGRBEXyzhh2MWKnBZs/Zh7FE3prLmIqpbtymafNBFkIA==", + "integrity": "sha512-R08MGFekNLkf1ofh5wi8QVgmFyPgkKC+Cp8FRE1n6zOpHbUWv3QGa6eR6z+2ESuGCstOPtbq/tRgZsSusItm9Q==", "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" } @@ -770,42 +771,6 @@ "find-up": "^3.0.0", "istanbul-lib-instrument": "^3.3.0", "test-exclude": "^5.2.3" - }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - } } }, "babel-plugin-jest-hoist": { @@ -1707,13 +1672,12 @@ } }, "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dev": true, "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "locate-path": "^3.0.0" } }, "for-in": { @@ -1774,8 +1738,7 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "aproba": { "version": "1.2.0", @@ -1796,14 +1759,12 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, - "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -1818,20 +1779,17 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "core-util-is": { "version": "1.0.2", @@ -1948,8 +1906,7 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "ini": { "version": "1.3.5", @@ -1961,7 +1918,6 @@ "version": "1.0.0", "bundled": true, "dev": true, - "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -1976,7 +1932,6 @@ "version": "3.0.4", "bundled": true, "dev": true, - "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -1984,14 +1939,12 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "minipass": { "version": "2.3.5", "bundled": true, "dev": true, - "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -2010,7 +1963,6 @@ "version": "0.5.1", "bundled": true, "dev": true, - "optional": true, "requires": { "minimist": "0.0.8" } @@ -2091,8 +2043,7 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "object-assign": { "version": "4.1.1", @@ -2104,7 +2055,6 @@ "version": "1.4.0", "bundled": true, "dev": true, - "optional": true, "requires": { "wrappy": "1" } @@ -2190,8 +2140,7 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "safer-buffer": { "version": "2.1.2", @@ -2227,7 +2176,6 @@ "version": "1.0.2", "bundled": true, "dev": true, - "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -2247,7 +2195,6 @@ "version": "3.0.1", "bundled": true, "dev": true, - "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -2291,14 +2238,12 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true, - "optional": true + "dev": true } } }, @@ -2365,9 +2310,9 @@ "dev": true }, "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.0.tgz", + "integrity": "sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==", "dev": true }, "growly": { @@ -2484,16 +2429,17 @@ } }, "husky": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/husky/-/husky-2.5.0.tgz", - "integrity": "sha512-/aQIBaVMuzGi5X5BPliDPbHE+G+HDpWV7Zu28DiiXFMvHQcOeTsEnODWIGKyGBp7GM7rOgkxQdF+6AEo6xNtkw==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/husky/-/husky-2.4.1.tgz", + "integrity": "sha512-ZRwMWHr7QruR22dQ5l3rEGXQ7rAQYsJYqaeCd+NyOsIFczAtqaApZQP3P4HwLZjCtFbm3SUNYoKuoBXX3AYYfw==", "dev": true, "requires": { - "cosmiconfig": "^5.2.1", + "cosmiconfig": "^5.2.0", "execa": "^1.0.0", + "find-up": "^3.0.0", "get-stdin": "^7.0.0", "is-ci": "^2.0.0", - "pkg-dir": "^4.2.0", + "pkg-dir": "^4.1.0", "please-upgrade-node": "^3.1.1", "read-pkg": "^5.1.1", "run-node": "^1.0.0", @@ -2529,40 +2475,6 @@ "resolve-cwd": "^2.0.0" }, "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, "pkg-dir": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", @@ -3545,12 +3457,13 @@ } }, "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, "requires": { - "p-locate": "^4.1.0" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" } }, "lodash": { @@ -3715,9 +3628,9 @@ "dev": true }, "mixin-deep": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", "dev": true, "requires": { "for-in": "^1.0.2", @@ -4053,12 +3966,12 @@ } }, "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, "requires": { - "p-limit": "^2.2.0" + "p-limit": "^2.0.0" } }, "p-reduce": { @@ -4096,9 +4009,9 @@ "dev": true }, "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true }, "path-is-absolute": { @@ -4156,6 +4069,42 @@ "dev": true, "requires": { "find-up": "^4.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + } } }, "please-upgrade-node": { @@ -4275,40 +4224,6 @@ "read-pkg": "^3.0.0" }, "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, "read-pkg": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", @@ -4571,9 +4486,9 @@ "dev": true }, "set-value": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", "dev": true, "requires": { "extend-shallow": "^2.0.1", @@ -4608,6 +4523,11 @@ "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", @@ -5180,38 +5100,15 @@ "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=" }, "union-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", - "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", "dev": true, "requires": { "arr-union": "^3.1.0", "get-value": "^2.0.6", "is-extendable": "^0.1.1", - "set-value": "^0.4.3" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "set-value": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" - } - } + "set-value": "^2.0.1" } }, "unset-value": { @@ -5493,40 +5390,6 @@ "yargs-parser": "^11.1.1" }, "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, "require-main-filename": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", diff --git a/toolkit/actions-tool-cache-0.0.0.tgz b/toolkit/actions-tool-cache-0.0.0.tgz index d3a5220823040dba6fb18129a5a2e33a43654673..4b0e65efec4ced709b4fb69de905d0bd02b4571e 100644 GIT binary patch delta 94957 zcmV(#K;*y4od@Wh2atFJv$MOAdo6!2vM=H^_Qgvw7cE+{Br}WCz|G>UrEvYc5sCK^ ze0-f3Q2DHI*kriK^*_nynHkeLZeB~>cF(-!+`OE+dcLW(#kY`eZEapqUsvDgnP;Od z+C5$$)L^5`4ERqfZt(c(y-jVrROMvdIi)+-+_YJ0`=n=QN2|BN2Msr10Th3Ec6jPp zEj&nL&%?)!tV?6-c266yCBkmx`8MD3g$uVf@r}afjQZB?3)R>@*~Bm8y&liP?R7rh z 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