From f1046fbe802a9053f5c3e68b355ac74c759b9d5a Mon Sep 17 00:00:00 2001 From: Angelo Tata Date: Sat, 24 Nov 2018 00:01:11 +0000 Subject: [PATCH 1/7] Add command line parameters to ignore the local .bin folder and produce verbose output --- README.md | 11 ++++ index.js | 128 ++++++++++++++++++++++++++++++++++++---------- package-lock.json | 7 ++- package.json | 3 ++ rollup.config.js | 12 +++-- 5 files changed, 125 insertions(+), 36 deletions(-) diff --git a/README.md b/README.md index 28eaebd..2fc7615 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,17 @@ Add the following to your `package.json`: Where the `node` and `npm` engine properties specify a valid semver range for Node and npm version respectively. +> By default, if you have a `node` or `npm` binary installed locally to the project (thus ending up +in `./node_modules/.bin`), it will take precedence. If you wanto to check against a globally installed +version instead, you can pass the `--ignore-local-bin` parameter (`-i` for short). +> +> It's worth noting that, while you may not be directly depending on `node` or `npm` packages, you may +still have them as transitive dependencies - in any case, `ensure-node-env` will show which one is being considered +and where it comes from. + +By default, the script's output is minimal. If you want it to display more information, such as the exact +versions being compared, you can pass the `--verbose` parameter (`-v` for short). + ### Usage in libraries This script is designed to be used as a development-only preinstall check in the project root. For libraries that are published and consumed in other projects it is considered good enough to include it as a pretest check: diff --git a/index.js b/index.js index 8e4d288..a343958 100644 --- a/index.js +++ b/index.js @@ -21,6 +21,53 @@ import path from 'path'; import semver from 'semver'; import { execSync } from 'child_process'; +import { existsSync } from 'fs'; +import { EOL } from 'os'; + +import userInput from 'commander'; + +// This is a workaround for an issue in commander's argument parser. +// See https://github.com/tj/commander.js/issues/512 +const getNormalisedArgs = () => { + const args = process.argv; + + // Detect execution without a script (e.g. node -e ) + // and insert a second argument when appropriate. + // For more info about the defaults, see https://nodejs.org/docs/latest-v8.x/api/process.html#process_process_argv + if (!process.mainModule) { + const execPath = args.shift(); + args.unshift(execPath, module.filename); + } + + return args; +}; + +userInput + .option( + '-i, --ignore-local-bin', + 'Ignore any binaries in ./node_modules/.bin', + ) + .option('-v, --verbose', 'Prints information about all the binaries detected') + .parse(getNormalisedArgs()); + +if (!userInput.verbose) { + console.log = () => {}; +} + +const getVersion = ({ command, localBinFolder, global = true }) => { + const env = { PATH: process.env.PATH }; + + if (global) { + env.PATH = env.PATH.replace(`${localBinFolder}${path.delimiter}`, ''); + } else { + env.PATH = `${localBinFolder}${path.delimiter}${env.PATH}`; + } + + return execSync(command, { env }) + .toString() + .replace('v', '') + .trim(); +}; const checkVersion = (engineName, command) => { let pkg = null; @@ -30,60 +77,85 @@ const checkVersion = (engineName, command) => { // eslint-disable-next-line global-require, import/no-dynamic-require pkg = require(pkgJsonPath); } catch (e) { - console.log(`Unable to find ${pkgJsonPath}! 😱`); - console.log(''); - console.log( - 'Please ensure that this script is executed in the same directory.', + console.error(`Unable to find ${pkgJsonPath}! 😱${EOL}`); + console.error( + `Please ensure that this script is executed in the same directory.${EOL}`, ); - console.log(''); process.exit(1); } - let expected = null; - - try { - expected = pkg.engines[engineName]; - } catch (e) { + if (!pkg.engines || !pkg.engines[engineName]) { console.log( - `There is no engine named ${engineName} specified in package.json! 😱`, + `There is no engine named "${engineName}" specified in package.json! 😱${EOL}`, ); - console.log(''); process.exit(1); } - let version = null; + const expected = pkg.engines[engineName]; + + let globalVersion = null; + let localVersion = null; + let usedVersion = null; + let globalVersionValid = null; + let localVersionValid = null; try { - version = execSync(command) + const localBinFolder = execSync('npm bin') .toString() - .replace('v', '') .trim(); + + const hasLocalVersion = existsSync( + `${localBinFolder}${path.sep}${engineName}`, + ); + + globalVersion = getVersion({ command, localBinFolder }); + globalVersionValid = semver.satisfies(globalVersion, expected); + + console.log(`Expected ${engineName} version:\t${expected}`); + console.log( + `╰─ Global ${engineName} version:\t${globalVersion}\t${ + globalVersionValid ? '✅️' : '❌️' + }`, + ); + + if (hasLocalVersion) { + localVersion = getVersion({ command, localBinFolder, global: false }); + localVersionValid = semver.satisfies(localVersion, expected); + console.log( + `╰─ Local ${engineName} version:\t${localVersion}\t${ + localVersionValid ? '✅️' : '❌️' + } (from ${localBinFolder})`, + ); + } + + if (userInput.ignoreLocalBin) { + usedVersion = globalVersion; + } else { + usedVersion = localVersion || globalVersion; + } + + console.log(`╰─ (using: ${usedVersion})${EOL}`); } catch (e) { - console.log(`Unable to get ${engineName} version! 😱`); - console.log(''); + console.error(`Unable to get ${engineName} version! 😱${EOL}`); process.exit(1); } - if (!semver.satisfies(version, expected)) { + if (!semver.satisfies(usedVersion, expected)) { const guide = 'https://github.com/Skyscanner/ensure-node-env/blob/master/README.md#guide'; - console.log( - `Expected ${engineName} version to match ${expected}, but got ${version}. 😱`, + console.error( + `Expected ${engineName} version to match ${expected}, but got ${usedVersion}. 😱${EOL}`, ); - console.log(''); - console.log( - `Please follow Skyscanner's node environment guide (see ${guide}).`, + console.error( + `Please follow Skyscanner's node environment guide (see ${guide}).${EOL}`, ); - console.log(''); process.exit(1); } }; -console.log('Checking node & npm versions...'); -console.log(''); +console.info(`Checking node & npm versions...${EOL}`); checkVersion('node', 'node --version'); checkVersion('npm', 'npm -g --version'); -console.log('All good. 👍'); -console.log(''); +console.info(`${EOL}All good. 👍${EOL}`); diff --git a/package-lock.json b/package-lock.json index abbdb76..3c04cb9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -494,10 +494,9 @@ "dev": true }, "commander": { - "version": "2.18.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.18.0.tgz", - "integrity": "sha512-6CYPa+JP2ftfRU2qkDK+UTVeQYosOg/2GbcjIcKPHfinyOLPVGXu/ovN86RP49Re5ndJK1N0kuiidFFuepc4ZQ==", - "dev": true + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==" }, "concat-map": { "version": "0.0.1", diff --git a/package.json b/package.json index b8903e7..5de811e 100644 --- a/package.json +++ b/package.json @@ -38,5 +38,8 @@ "rollup-plugin-node-resolve": "^3.4.0", "rollup-plugin-terser": "^3.0.0", "semver": "^5.5.1" + }, + "dependencies": { + "commander": "^2.19.0" } } diff --git a/rollup.config.js b/rollup.config.js index 21e67d7..0f9dc44 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -2,6 +2,10 @@ import { terser } from 'rollup-plugin-terser'; import commonjs from 'rollup-plugin-commonjs'; import resolve from 'rollup-plugin-node-resolve'; +// 'events' and 'util' are used by the 3rd party `commander` package +const COMMON_IMPORTS = ['path', 'child_process', 'os', 'fs', 'events', 'util']; +const COMMON_PLUGINS = [resolve(), commonjs(), terser()]; + export default [ { input: 'index.js', @@ -9,8 +13,8 @@ export default [ file: 'dist/index.js', format: 'cjs', }, - external: ['path', 'child_process'], - plugins: [resolve(), commonjs(), terser()], + external: COMMON_IMPORTS, + plugins: COMMON_PLUGINS, }, { input: 'index.js', @@ -19,7 +23,7 @@ export default [ format: 'cjs', banner: '#!/usr/bin/env node', }, - external: ['path', 'child_process'], - plugins: [resolve(), commonjs(), terser()], + external: COMMON_IMPORTS, + plugins: COMMON_PLUGINS, }, ]; From e5055fb17c47c9ece4529cc0a8f6291ca35bb947 Mon Sep 17 00:00:00 2001 From: Angelo Tata Date: Wed, 28 Nov 2018 09:40:12 +0000 Subject: [PATCH 2/7] Replace usage of "console" with "logger", for clarity --- index.js | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/index.js b/index.js index a343958..e52d800 100644 --- a/index.js +++ b/index.js @@ -50,8 +50,10 @@ userInput .option('-v, --verbose', 'Prints information about all the binaries detected') .parse(getNormalisedArgs()); +const logger = console; + if (!userInput.verbose) { - console.log = () => {}; + logger.debug = () => {}; } const getVersion = ({ command, localBinFolder, global = true }) => { @@ -77,15 +79,15 @@ const checkVersion = (engineName, command) => { // eslint-disable-next-line global-require, import/no-dynamic-require pkg = require(pkgJsonPath); } catch (e) { - console.error(`Unable to find ${pkgJsonPath}! 😱${EOL}`); - console.error( + logger.error(`Unable to find ${pkgJsonPath}! 😱${EOL}`); + logger.error( `Please ensure that this script is executed in the same directory.${EOL}`, ); process.exit(1); } if (!pkg.engines || !pkg.engines[engineName]) { - console.log( + logger.error( `There is no engine named "${engineName}" specified in package.json! 😱${EOL}`, ); process.exit(1); @@ -111,8 +113,8 @@ const checkVersion = (engineName, command) => { globalVersion = getVersion({ command, localBinFolder }); globalVersionValid = semver.satisfies(globalVersion, expected); - console.log(`Expected ${engineName} version:\t${expected}`); - console.log( + logger.debug(`Expected ${engineName} version:\t${expected}`); + logger.debug( `╰─ Global ${engineName} version:\t${globalVersion}\t${ globalVersionValid ? '✅️' : '❌️' }`, @@ -121,7 +123,7 @@ const checkVersion = (engineName, command) => { if (hasLocalVersion) { localVersion = getVersion({ command, localBinFolder, global: false }); localVersionValid = semver.satisfies(localVersion, expected); - console.log( + logger.debug( `╰─ Local ${engineName} version:\t${localVersion}\t${ localVersionValid ? '✅️' : '❌️' } (from ${localBinFolder})`, @@ -134,28 +136,28 @@ const checkVersion = (engineName, command) => { usedVersion = localVersion || globalVersion; } - console.log(`╰─ (using: ${usedVersion})${EOL}`); + logger.debug(`╰─ (using: ${usedVersion})${EOL}`); } catch (e) { - console.error(`Unable to get ${engineName} version! 😱${EOL}`); + logger.error(`Unable to get ${engineName} version! 😱${EOL}`); process.exit(1); } if (!semver.satisfies(usedVersion, expected)) { const guide = 'https://github.com/Skyscanner/ensure-node-env/blob/master/README.md#guide'; - console.error( + logger.error( `Expected ${engineName} version to match ${expected}, but got ${usedVersion}. 😱${EOL}`, ); - console.error( + logger.error( `Please follow Skyscanner's node environment guide (see ${guide}).${EOL}`, ); process.exit(1); } }; -console.info(`Checking node & npm versions...${EOL}`); +logger.info(`Checking node & npm versions...${EOL}`); checkVersion('node', 'node --version'); checkVersion('npm', 'npm -g --version'); -console.info(`${EOL}All good. 👍${EOL}`); +logger.info(`${EOL}All good. 👍${EOL}`); From 020fcebb717b7401a902cfc38d76485f4d707e70 Mon Sep 17 00:00:00 2001 From: Angelo Tata Date: Wed, 28 Nov 2018 09:40:42 +0000 Subject: [PATCH 3/7] Suggest the usage of --verbose in case of version mismatches --- index.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/index.js b/index.js index e52d800..579c4ad 100644 --- a/index.js +++ b/index.js @@ -148,6 +148,13 @@ const checkVersion = (engineName, command) => { logger.error( `Expected ${engineName} version to match ${expected}, but got ${usedVersion}. 😱${EOL}`, ); + + if (!userInput.verbose) { + logger.error( + `(pass the --verbose flag to the script for a more detailed output)${EOL}`, + ); + } + logger.error( `Please follow Skyscanner's node environment guide (see ${guide}).${EOL}`, ); From 9a5ecde7e82829f2873db023b3e27ba682305f1e Mon Sep 17 00:00:00 2001 From: Angelo Tata Date: Thu, 29 Nov 2018 00:25:52 +0000 Subject: [PATCH 4/7] Update build artifacts --- dist/cli.js | 2 +- dist/index.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dist/cli.js b/dist/cli.js index ce48009..4170ce5 100644 --- a/dist/cli.js +++ b/dist/cli.js @@ -1,2 +1,2 @@ #!/usr/bin/env node -"use strict";function _interopDefault(e){return e&&"object"==typeof e&&"default"in e?e.default:e}var path=_interopDefault(require("path")),child_process=require("child_process");function createCommonjsModule(e,r){return e(r={exports:{}},r.exports),r.exports}var semver=createCommonjsModule(function(e,r){var t;r=e.exports=F,t="object"==typeof process&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?function(){var e=Array.prototype.slice.call(arguments,0);e.unshift("SEMVER"),console.log.apply(console,e)}:function(){},r.SEMVER_SPEC_VERSION="2.0.0";var n=256,s=Number.MAX_SAFE_INTEGER||9007199254740991,o=r.re=[],i=r.src=[],a=0,c=a++;i[c]="0|[1-9]\\d*";var p=a++;i[p]="[0-9]+";var u=a++;i[u]="\\d*[a-zA-Z-][a-zA-Z0-9-]*";var l=a++;i[l]="("+i[c]+")\\.("+i[c]+")\\.("+i[c]+")";var h=a++;i[h]="("+i[p]+")\\.("+i[p]+")\\.("+i[p]+")";var v=a++;i[v]="(?:"+i[c]+"|"+i[u]+")";var m=a++;i[m]="(?:"+i[p]+"|"+i[u]+")";var f=a++;i[f]="(?:-("+i[v]+"(?:\\."+i[v]+")*))";var g=a++;i[g]="(?:-?("+i[m]+"(?:\\."+i[m]+")*))";var w=a++;i[w]="[0-9A-Za-z-]+";var d=a++;i[d]="(?:\\+("+i[w]+"(?:\\."+i[w]+")*))";var y=a++,_="v?"+i[l]+i[f]+"?"+i[d]+"?";i[y]="^"+_+"$";var E="[v=\\s]*"+i[h]+i[g]+"?"+i[d]+"?",j=a++;i[j]="^"+E+"$";var b=a++;i[b]="((?:<|>)?=?)";var $=a++;i[$]=i[p]+"|x|X|\\*";var k=a++;i[k]=i[c]+"|x|X|\\*";var S=a++;i[S]="[v=\\s]*("+i[k]+")(?:\\.("+i[k]+")(?:\\.("+i[k]+")(?:"+i[f]+")?"+i[d]+"?)?)?";var x=a++;i[x]="[v=\\s]*("+i[$]+")(?:\\.("+i[$]+")(?:\\.("+i[$]+")(?:"+i[g]+")?"+i[d]+"?)?)?";var R=a++;i[R]="^"+i[b]+"\\s*"+i[S]+"$";var I=a++;i[I]="^"+i[b]+"\\s*"+i[x]+"$";var T=a++;i[T]="(?:^|[^\\d])(\\d{1,16})(?:\\.(\\d{1,16}))?(?:\\.(\\d{1,16}))?(?:$|[^\\d])";var V=a++;i[V]="(?:~>?)";var C=a++;i[C]="(\\s*)"+i[V]+"\\s+",o[C]=new RegExp(i[C],"g");var A=a++;i[A]="^"+i[V]+i[S]+"$";var M=a++;i[M]="^"+i[V]+i[x]+"$";var q=a++;i[q]="(?:\\^)";var N=a++;i[N]="(\\s*)"+i[q]+"\\s+",o[N]=new RegExp(i[N],"g");var D=a++;i[D]="^"+i[q]+i[S]+"$";var P=a++;i[P]="^"+i[q]+i[x]+"$";var O=a++;i[O]="^"+i[b]+"\\s*("+E+")$|^$";var U=a++;i[U]="^"+i[b]+"\\s*("+_+")$|^$";var X=a++;i[X]="(\\s*)"+i[b]+"\\s*("+E+"|"+i[S]+")",o[X]=new RegExp(i[X],"g");var z=a++;i[z]="^\\s*("+i[S]+")\\s+-\\s+("+i[S]+")\\s*$";var G=a++;i[G]="^\\s*("+i[x]+")\\s+-\\s+("+i[x]+")\\s*$";var L=a++;i[L]="(<|>)?=?\\s*\\*";for(var Z=0;Z<35;Z++)t(Z,i[Z]),o[Z]||(o[Z]=new RegExp(i[Z]));function B(e,r){if(e instanceof F)return e;if("string"!=typeof e)return null;if(e.length>n)return null;if(!(r?o[j]:o[y]).test(e))return null;try{return new F(e,r)}catch(e){return null}}function F(e,r){if(e instanceof F){if(e.loose===r)return e;e=e.version}else if("string"!=typeof e)throw new TypeError("Invalid Version: "+e);if(e.length>n)throw new TypeError("version is longer than "+n+" characters");if(!(this instanceof F))return new F(e,r);t("SemVer",e,r),this.loose=r;var i=e.trim().match(r?o[j]:o[y]);if(!i)throw new TypeError("Invalid Version: "+e);if(this.raw=e,this.major=+i[1],this.minor=+i[2],this.patch=+i[3],this.major>s||this.major<0)throw new TypeError("Invalid major version");if(this.minor>s||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>s||this.patch<0)throw new TypeError("Invalid patch version");i[4]?this.prerelease=i[4].split(".").map(function(e){if(/^[0-9]+$/.test(e)){var r=+e;if(r>=0&&r=0;)"number"==typeof this.prerelease[t]&&(this.prerelease[t]++,t=-2);-1===t&&this.prerelease.push(0)}r&&(this.prerelease[0]===r?isNaN(this.prerelease[1])&&(this.prerelease=[r,0]):this.prerelease=[r,0]);break;default:throw new Error("invalid increment argument: "+e)}return this.format(),this.raw=this.version,this},r.inc=function(e,r,t,n){"string"==typeof t&&(n=t,t=void 0);try{return new F(e,t).inc(r,n).version}catch(e){return null}},r.diff=function(e,r){if(Y(e,r))return null;var t=B(e),n=B(r);if(t.prerelease.length||n.prerelease.length){for(var s in t)if(("major"===s||"minor"===s||"patch"===s)&&t[s]!==n[s])return"pre"+s;return"prerelease"}for(var s in t)if(("major"===s||"minor"===s||"patch"===s)&&t[s]!==n[s])return s},r.compareIdentifiers=J;var H=/^[0-9]+$/;function J(e,r){var t=H.test(e),n=H.test(r);return t&&n&&(e=+e,r=+r),t&&!n?-1:n&&!t?1:er?1:0}function K(e,r,t){return new F(e,t).compare(new F(r,t))}function Q(e,r,t){return K(e,r,t)>0}function W(e,r,t){return K(e,r,t)<0}function Y(e,r,t){return 0===K(e,r,t)}function ee(e,r,t){return 0!==K(e,r,t)}function re(e,r,t){return K(e,r,t)>=0}function te(e,r,t){return K(e,r,t)<=0}function ne(e,r,t,n){var s;switch(r){case"===":"object"==typeof e&&(e=e.version),"object"==typeof t&&(t=t.version),s=e===t;break;case"!==":"object"==typeof e&&(e=e.version),"object"==typeof t&&(t=t.version),s=e!==t;break;case"":case"=":case"==":s=Y(e,t,n);break;case"!=":s=ee(e,t,n);break;case">":s=Q(e,t,n);break;case">=":s=re(e,t,n);break;case"<":s=W(e,t,n);break;case"<=":s=te(e,t,n);break;default:throw new TypeError("Invalid operator: "+r)}return s}function se(e,r){if(e instanceof se){if(e.loose===r)return e;e=e.value}if(!(this instanceof se))return new se(e,r);t("comparator",e,r),this.loose=r,this.parse(e),this.semver===oe?this.value="":this.value=this.operator+this.semver.version,t("comp",this)}r.rcompareIdentifiers=function(e,r){return J(r,e)},r.major=function(e,r){return new F(e,r).major},r.minor=function(e,r){return new F(e,r).minor},r.patch=function(e,r){return new F(e,r).patch},r.compare=K,r.compareLoose=function(e,r){return K(e,r,!0)},r.rcompare=function(e,r,t){return K(r,e,t)},r.sort=function(e,t){return e.sort(function(e,n){return r.compare(e,n,t)})},r.rsort=function(e,t){return e.sort(function(e,n){return r.rcompare(e,n,t)})},r.gt=Q,r.lt=W,r.eq=Y,r.neq=ee,r.gte=re,r.lte=te,r.cmp=ne,r.Comparator=se;var oe={};function ie(e,r){if(e instanceof ie)return e.loose===r?e:new ie(e.raw,r);if(e instanceof se)return new ie(e.value,r);if(!(this instanceof ie))return new ie(e,r);if(this.loose=r,this.raw=e,this.set=e.split(/\s*\|\|\s*/).map(function(e){return this.parseRange(e.trim())},this).filter(function(e){return e.length}),!this.set.length)throw new TypeError("Invalid SemVer Range: "+e);this.format()}function ae(e){return!e||"x"===e.toLowerCase()||"*"===e}function ce(e,r,t,n,s,o,i,a,c,p,u,l,h){return((r=ae(t)?"":ae(n)?">="+t+".0.0":ae(s)?">="+t+"."+n+".0":">="+r)+" "+(a=ae(c)?"":ae(p)?"<"+(+c+1)+".0.0":ae(u)?"<"+c+"."+(+p+1)+".0":l?"<="+c+"."+p+"."+u+"-"+l:"<="+a)).trim()}function pe(e,r){for(var n=0;n0){var s=e[n].semver;if(s.major===r.major&&s.minor===r.minor&&s.patch===r.patch)return!0}return!1}return!0}function ue(e,r,t){try{r=new ie(r,t)}catch(e){return!1}return r.test(e)}function le(e,r,t,n){var s,o,i,a,c;switch(e=new F(e,n),r=new ie(r,n),t){case">":s=Q,o=te,i=W,a=">",c=">=";break;case"<":s=W,o=re,i=Q,a="<",c="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(ue(e,r,n))return!1;for(var p=0;p=0.0.0")),l=l||e,h=h||e,s(e.semver,l.semver,n)?l=e:i(e.semver,h.semver,n)&&(h=e)}),l.operator===a||l.operator===c)return!1;if((!h.operator||h.operator===a)&&o(e,h.semver))return!1;if(h.operator===c&&i(e,h.semver))return!1}return!0}se.prototype.parse=function(e){var r=this.loose?o[O]:o[U],t=e.match(r);if(!t)throw new TypeError("Invalid comparator: "+e);this.operator=t[1],"="===this.operator&&(this.operator=""),t[2]?this.semver=new F(t[2],this.loose):this.semver=oe},se.prototype.toString=function(){return this.value},se.prototype.test=function(e){return t("Comparator.test",e,this.loose),this.semver===oe||("string"==typeof e&&(e=new F(e,this.loose)),ne(e,this.operator,this.semver,this.loose))},se.prototype.intersects=function(e,r){if(!(e instanceof se))throw new TypeError("a Comparator is required");var t;if(""===this.operator)return t=new ie(e.value,r),ue(this.value,t,r);if(""===e.operator)return t=new ie(this.value,r),ue(e.semver,t,r);var n=!(">="!==this.operator&&">"!==this.operator||">="!==e.operator&&">"!==e.operator),s=!("<="!==this.operator&&"<"!==this.operator||"<="!==e.operator&&"<"!==e.operator),o=this.semver.version===e.semver.version,i=!(">="!==this.operator&&"<="!==this.operator||">="!==e.operator&&"<="!==e.operator),a=ne(this.semver,"<",e.semver,r)&&(">="===this.operator||">"===this.operator)&&("<="===e.operator||"<"===e.operator),c=ne(this.semver,">",e.semver,r)&&("<="===this.operator||"<"===this.operator)&&(">="===e.operator||">"===e.operator);return n||s||o&&i||a||c},r.Range=ie,ie.prototype.format=function(){return this.range=this.set.map(function(e){return e.join(" ").trim()}).join("||").trim(),this.range},ie.prototype.toString=function(){return this.range},ie.prototype.parseRange=function(e){var r=this.loose;e=e.trim(),t("range",e,r);var n=r?o[G]:o[z];e=e.replace(n,ce),t("hyphen replace",e),e=e.replace(o[X],"$1$2$3"),t("comparator trim",e,o[X]),e=(e=(e=e.replace(o[C],"$1~")).replace(o[N],"$1^")).split(/\s+/).join(" ");var s=r?o[O]:o[U],i=e.split(" ").map(function(e){return function(e,r){return t("comp",e),e=function(e,r){return e.trim().split(/\s+/).map(function(e){return function(e,r){t("caret",e,r);var n=r?o[P]:o[D];return e.replace(n,function(r,n,s,o,i){var a;return t("caret",e,r,n,s,o,i),ae(n)?a="":ae(s)?a=">="+n+".0.0 <"+(+n+1)+".0.0":ae(o)?a="0"===n?">="+n+"."+s+".0 <"+n+"."+(+s+1)+".0":">="+n+"."+s+".0 <"+(+n+1)+".0.0":i?(t("replaceCaret pr",i),"-"!==i.charAt(0)&&(i="-"+i),a="0"===n?"0"===s?">="+n+"."+s+"."+o+i+" <"+n+"."+s+"."+(+o+1):">="+n+"."+s+"."+o+i+" <"+n+"."+(+s+1)+".0":">="+n+"."+s+"."+o+i+" <"+(+n+1)+".0.0"):(t("no pr"),a="0"===n?"0"===s?">="+n+"."+s+"."+o+" <"+n+"."+s+"."+(+o+1):">="+n+"."+s+"."+o+" <"+n+"."+(+s+1)+".0":">="+n+"."+s+"."+o+" <"+(+n+1)+".0.0"),t("caret return",a),a})}(e,r)}).join(" ")}(e,r),t("caret",e),e=function(e,r){return e.trim().split(/\s+/).map(function(e){return function(e,r){var n=r?o[M]:o[A];return e.replace(n,function(r,n,s,o,i){var a;return t("tilde",e,r,n,s,o,i),ae(n)?a="":ae(s)?a=">="+n+".0.0 <"+(+n+1)+".0.0":ae(o)?a=">="+n+"."+s+".0 <"+n+"."+(+s+1)+".0":i?(t("replaceTilde pr",i),"-"!==i.charAt(0)&&(i="-"+i),a=">="+n+"."+s+"."+o+i+" <"+n+"."+(+s+1)+".0"):a=">="+n+"."+s+"."+o+" <"+n+"."+(+s+1)+".0",t("tilde return",a),a})}(e,r)}).join(" ")}(e,r),t("tildes",e),e=function(e,r){return t("replaceXRanges",e,r),e.split(/\s+/).map(function(e){return function(e,r){e=e.trim();var n=r?o[I]:o[R];return e.replace(n,function(r,n,s,o,i,a){t("xRange",e,r,n,s,o,i,a);var c=ae(s),p=c||ae(o),u=p||ae(i),l=u;return"="===n&&l&&(n=""),c?r=">"===n||"<"===n?"<0.0.0":"*":n&&l?(p&&(o=0),u&&(i=0),">"===n?(n=">=",p?(s=+s+1,o=0,i=0):u&&(o=+o+1,i=0)):"<="===n&&(n="<",p?s=+s+1:o=+o+1),r=n+s+"."+o+"."+i):p?r=">="+s+".0.0 <"+(+s+1)+".0.0":u&&(r=">="+s+"."+o+".0 <"+s+"."+(+o+1)+".0"),t("xRange return",r),r})}(e,r)}).join(" ")}(e,r),t("xrange",e),e=function(e,r){return t("replaceStars",e,r),e.trim().replace(o[L],"")}(e,r),t("stars",e),e}(e,r)}).join(" ").split(/\s+/);return this.loose&&(i=i.filter(function(e){return!!e.match(s)})),i=i.map(function(e){return new se(e,r)})},ie.prototype.intersects=function(e,r){if(!(e instanceof ie))throw new TypeError("a Range is required");return this.set.some(function(t){return t.every(function(t){return e.set.some(function(e){return e.every(function(e){return t.intersects(e,r)})})})})},r.toComparators=function(e,r){return new ie(e,r).set.map(function(e){return e.map(function(e){return e.value}).join(" ").trim().split(" ")})},ie.prototype.test=function(e){if(!e)return!1;"string"==typeof e&&(e=new F(e,this.loose));for(var r=0;r",t)},r.outside=le,r.prerelease=function(e,r){var t=B(e,r);return t&&t.prerelease.length?t.prerelease:null},r.intersects=function(e,r,t){return e=new ie(e,t),r=new ie(r,t),e.intersects(r)},r.coerce=function(e){if(e instanceof F)return e;if("string"!=typeof e)return null;var r=e.match(o[T]);return null==r?null:B((r[1]||"0")+"."+(r[2]||"0")+"."+(r[3]||"0"))}}),semver_1=semver.SEMVER_SPEC_VERSION,semver_2=semver.re,semver_3=semver.src,semver_4=semver.parse,semver_5=semver.valid,semver_6=semver.clean,semver_7=semver.SemVer,semver_8=semver.inc,semver_9=semver.diff,semver_10=semver.compareIdentifiers,semver_11=semver.rcompareIdentifiers,semver_12=semver.major,semver_13=semver.minor,semver_14=semver.patch,semver_15=semver.compare,semver_16=semver.compareLoose,semver_17=semver.rcompare,semver_18=semver.sort,semver_19=semver.rsort,semver_20=semver.gt,semver_21=semver.lt,semver_22=semver.eq,semver_23=semver.neq,semver_24=semver.gte,semver_25=semver.lte,semver_26=semver.cmp,semver_27=semver.Comparator,semver_28=semver.Range,semver_29=semver.toComparators,semver_30=semver.satisfies,semver_31=semver.maxSatisfying,semver_32=semver.minSatisfying,semver_33=semver.validRange,semver_34=semver.ltr,semver_35=semver.gtr,semver_36=semver.outside,semver_37=semver.prerelease,semver_38=semver.intersects,semver_39=semver.coerce;const checkVersion=(e,r)=>{let t=null;const n=path.join(process.cwd(),"package.json");try{t=require(n)}catch(e){console.log(`Unable to find ${n}! 😱`),console.log(""),console.log("Please ensure that this script is executed in the same directory."),console.log(""),process.exit(1)}let s=null;try{s=t.engines[e]}catch(r){console.log(`There is no engine named ${e} specified in package.json! 😱`),console.log(""),process.exit(1)}let o=null;try{o=child_process.execSync(r).toString().replace("v","").trim()}catch(r){console.log(`Unable to get ${e} version! 😱`),console.log(""),process.exit(1)}if(!semver.satisfies(o,s)){const r="https://github.com/Skyscanner/ensure-node-env/blob/master/README.md#guide";console.log(`Expected ${e} version to match ${s}, but got ${o}. 😱`),console.log(""),console.log(`Please follow Skyscanner's node environment guide (see ${r}).`),console.log(""),process.exit(1)}};console.log("Checking node & npm versions..."),console.log(""),checkVersion("node","node --version"),checkVersion("npm","npm -g --version"),console.log("All good. 👍"),console.log(""); +"use strict";function _interopDefault(e){return e&&"object"==typeof e&&"default"in e?e.default:e}var os=require("os"),events=_interopDefault(require("events")),child_process=require("child_process"),child_process__default=_interopDefault(child_process),path=_interopDefault(require("path")),fs=require("fs"),fs__default=_interopDefault(fs),util=_interopDefault(require("util"));function createCommonjsModule(e,r){return e(r={exports:{}},r.exports),r.exports}var semver=createCommonjsModule(function(e,r){var t;r=e.exports=W,t="object"==typeof process&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?function(){var e=Array.prototype.slice.call(arguments,0);e.unshift("SEMVER"),console.log.apply(console,e)}:function(){},r.SEMVER_SPEC_VERSION="2.0.0";var n=256,s=Number.MAX_SAFE_INTEGER||9007199254740991,o=r.re=[],i=r.src=[],a=0,c=a++;i[c]="0|[1-9]\\d*";var p=a++;i[p]="[0-9]+";var u=a++;i[u]="\\d*[a-zA-Z-][a-zA-Z0-9-]*";var h=a++;i[h]="("+i[c]+")\\.("+i[c]+")\\.("+i[c]+")";var l=a++;i[l]="("+i[p]+")\\.("+i[p]+")\\.("+i[p]+")";var m=a++;i[m]="(?:"+i[c]+"|"+i[u]+")";var f=a++;i[f]="(?:"+i[p]+"|"+i[u]+")";var v=a++;i[v]="(?:-("+i[m]+"(?:\\."+i[m]+")*))";var g=a++;i[g]="(?:-?("+i[f]+"(?:\\."+i[f]+")*))";var d=a++;i[d]="[0-9A-Za-z-]+";var _=a++;i[_]="(?:\\+("+i[d]+"(?:\\."+i[d]+")*))";var y=a++,w="v?"+i[h]+i[v]+"?"+i[_]+"?";i[y]="^"+w+"$";var b="[v=\\s]*"+i[l]+i[g]+"?"+i[_]+"?",E=a++;i[E]="^"+b+"$";var x=a++;i[x]="((?:<|>)?=?)";var $=a++;i[$]=i[p]+"|x|X|\\*";var j=a++;i[j]=i[c]+"|x|X|\\*";var k=a++;i[k]="[v=\\s]*("+i[j]+")(?:\\.("+i[j]+")(?:\\.("+i[j]+")(?:"+i[v]+")?"+i[_]+"?)?)?";var S=a++;i[S]="[v=\\s]*("+i[$]+")(?:\\.("+i[$]+")(?:\\.("+i[$]+")(?:"+i[g]+")?"+i[_]+"?)?)?";var O=a++;i[O]="^"+i[x]+"\\s*"+i[k]+"$";var A=a++;i[A]="^"+i[x]+"\\s*"+i[S]+"$";var C=a++;i[C]="(?:^|[^\\d])(\\d{1,16})(?:\\.(\\d{1,16}))?(?:\\.(\\d{1,16}))?(?:$|[^\\d])";var L=a++;i[L]="(?:~>?)";var I=a++;i[I]="(\\s*)"+i[L]+"\\s+",o[I]=new RegExp(i[I],"g");var R=a++;i[R]="^"+i[L]+i[k]+"$";var q=a++;i[q]="^"+i[L]+i[S]+"$";var T=a++;i[T]="(?:\\^)";var N=a++;i[N]="(\\s*)"+i[T]+"\\s+",o[N]=new RegExp(i[N],"g");var V=a++;i[V]="^"+i[T]+i[k]+"$";var M=a++;i[M]="^"+i[T]+i[S]+"$";var H=a++;i[H]="^"+i[x]+"\\s*("+b+")$|^$";var D=a++;i[D]="^"+i[x]+"\\s*("+w+")$|^$";var P=a++;i[P]="(\\s*)"+i[x]+"\\s*("+b+"|"+i[k]+")",o[P]=new RegExp(i[P],"g");var U=a++;i[U]="^\\s*("+i[k]+")\\s+-\\s+("+i[k]+")\\s*$";var F=a++;i[F]="^\\s*("+i[S]+")\\s+-\\s+("+i[S]+")\\s*$";var G=a++;i[G]="(<|>)?=?\\s*\\*";for(var B=0;B<35;B++)t(B,i[B]),o[B]||(o[B]=new RegExp(i[B]));function z(e,r){if(e instanceof W)return e;if("string"!=typeof e)return null;if(e.length>n)return null;if(!(r?o[E]:o[y]).test(e))return null;try{return new W(e,r)}catch(e){return null}}function W(e,r){if(e instanceof W){if(e.loose===r)return e;e=e.version}else if("string"!=typeof e)throw new TypeError("Invalid Version: "+e);if(e.length>n)throw new TypeError("version is longer than "+n+" characters");if(!(this instanceof W))return new W(e,r);t("SemVer",e,r),this.loose=r;var i=e.trim().match(r?o[E]:o[y]);if(!i)throw new TypeError("Invalid Version: "+e);if(this.raw=e,this.major=+i[1],this.minor=+i[2],this.patch=+i[3],this.major>s||this.major<0)throw new TypeError("Invalid major version");if(this.minor>s||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>s||this.patch<0)throw new TypeError("Invalid patch version");i[4]?this.prerelease=i[4].split(".").map(function(e){if(/^[0-9]+$/.test(e)){var r=+e;if(r>=0&&r=0;)"number"==typeof this.prerelease[t]&&(this.prerelease[t]++,t=-2);-1===t&&this.prerelease.push(0)}r&&(this.prerelease[0]===r?isNaN(this.prerelease[1])&&(this.prerelease=[r,0]):this.prerelease=[r,0]);break;default:throw new Error("invalid increment argument: "+e)}return this.format(),this.raw=this.version,this},r.inc=function(e,r,t,n){"string"==typeof t&&(n=t,t=void 0);try{return new W(e,t).inc(r,n).version}catch(e){return null}},r.diff=function(e,r){if(Y(e,r))return null;var t=z(e),n=z(r);if(t.prerelease.length||n.prerelease.length){for(var s in t)if(("major"===s||"minor"===s||"patch"===s)&&t[s]!==n[s])return"pre"+s;return"prerelease"}for(var s in t)if(("major"===s||"minor"===s||"patch"===s)&&t[s]!==n[s])return s},r.compareIdentifiers=Z;var X=/^[0-9]+$/;function Z(e,r){var t=X.test(e),n=X.test(r);return t&&n&&(e=+e,r=+r),t&&!n?-1:n&&!t?1:er?1:0}function J(e,r,t){return new W(e,t).compare(new W(r,t))}function K(e,r,t){return J(e,r,t)>0}function Q(e,r,t){return J(e,r,t)<0}function Y(e,r,t){return 0===J(e,r,t)}function ee(e,r,t){return 0!==J(e,r,t)}function re(e,r,t){return J(e,r,t)>=0}function te(e,r,t){return J(e,r,t)<=0}function ne(e,r,t,n){var s;switch(r){case"===":"object"==typeof e&&(e=e.version),"object"==typeof t&&(t=t.version),s=e===t;break;case"!==":"object"==typeof e&&(e=e.version),"object"==typeof t&&(t=t.version),s=e!==t;break;case"":case"=":case"==":s=Y(e,t,n);break;case"!=":s=ee(e,t,n);break;case">":s=K(e,t,n);break;case">=":s=re(e,t,n);break;case"<":s=Q(e,t,n);break;case"<=":s=te(e,t,n);break;default:throw new TypeError("Invalid operator: "+r)}return s}function se(e,r){if(e instanceof se){if(e.loose===r)return e;e=e.value}if(!(this instanceof se))return new se(e,r);t("comparator",e,r),this.loose=r,this.parse(e),this.semver===oe?this.value="":this.value=this.operator+this.semver.version,t("comp",this)}r.rcompareIdentifiers=function(e,r){return Z(r,e)},r.major=function(e,r){return new W(e,r).major},r.minor=function(e,r){return new W(e,r).minor},r.patch=function(e,r){return new W(e,r).patch},r.compare=J,r.compareLoose=function(e,r){return J(e,r,!0)},r.rcompare=function(e,r,t){return J(r,e,t)},r.sort=function(e,t){return e.sort(function(e,n){return r.compare(e,n,t)})},r.rsort=function(e,t){return e.sort(function(e,n){return r.rcompare(e,n,t)})},r.gt=K,r.lt=Q,r.eq=Y,r.neq=ee,r.gte=re,r.lte=te,r.cmp=ne,r.Comparator=se;var oe={};function ie(e,r){if(e instanceof ie)return e.loose===r?e:new ie(e.raw,r);if(e instanceof se)return new ie(e.value,r);if(!(this instanceof ie))return new ie(e,r);if(this.loose=r,this.raw=e,this.set=e.split(/\s*\|\|\s*/).map(function(e){return this.parseRange(e.trim())},this).filter(function(e){return e.length}),!this.set.length)throw new TypeError("Invalid SemVer Range: "+e);this.format()}function ae(e){return!e||"x"===e.toLowerCase()||"*"===e}function ce(e,r,t,n,s,o,i,a,c,p,u,h,l){return((r=ae(t)?"":ae(n)?">="+t+".0.0":ae(s)?">="+t+"."+n+".0":">="+r)+" "+(a=ae(c)?"":ae(p)?"<"+(+c+1)+".0.0":ae(u)?"<"+c+"."+(+p+1)+".0":h?"<="+c+"."+p+"."+u+"-"+h:"<="+a)).trim()}function pe(e,r){for(var n=0;n0){var s=e[n].semver;if(s.major===r.major&&s.minor===r.minor&&s.patch===r.patch)return!0}return!1}return!0}function ue(e,r,t){try{r=new ie(r,t)}catch(e){return!1}return r.test(e)}function he(e,r,t,n){var s,o,i,a,c;switch(e=new W(e,n),r=new ie(r,n),t){case">":s=K,o=te,i=Q,a=">",c=">=";break;case"<":s=Q,o=re,i=K,a="<",c="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(ue(e,r,n))return!1;for(var p=0;p=0.0.0")),h=h||e,l=l||e,s(e.semver,h.semver,n)?h=e:i(e.semver,l.semver,n)&&(l=e)}),h.operator===a||h.operator===c)return!1;if((!l.operator||l.operator===a)&&o(e,l.semver))return!1;if(l.operator===c&&i(e,l.semver))return!1}return!0}se.prototype.parse=function(e){var r=this.loose?o[H]:o[D],t=e.match(r);if(!t)throw new TypeError("Invalid comparator: "+e);this.operator=t[1],"="===this.operator&&(this.operator=""),t[2]?this.semver=new W(t[2],this.loose):this.semver=oe},se.prototype.toString=function(){return this.value},se.prototype.test=function(e){return t("Comparator.test",e,this.loose),this.semver===oe||("string"==typeof e&&(e=new W(e,this.loose)),ne(e,this.operator,this.semver,this.loose))},se.prototype.intersects=function(e,r){if(!(e instanceof se))throw new TypeError("a Comparator is required");var t;if(""===this.operator)return t=new ie(e.value,r),ue(this.value,t,r);if(""===e.operator)return t=new ie(this.value,r),ue(e.semver,t,r);var n=!(">="!==this.operator&&">"!==this.operator||">="!==e.operator&&">"!==e.operator),s=!("<="!==this.operator&&"<"!==this.operator||"<="!==e.operator&&"<"!==e.operator),o=this.semver.version===e.semver.version,i=!(">="!==this.operator&&"<="!==this.operator||">="!==e.operator&&"<="!==e.operator),a=ne(this.semver,"<",e.semver,r)&&(">="===this.operator||">"===this.operator)&&("<="===e.operator||"<"===e.operator),c=ne(this.semver,">",e.semver,r)&&("<="===this.operator||"<"===this.operator)&&(">="===e.operator||">"===e.operator);return n||s||o&&i||a||c},r.Range=ie,ie.prototype.format=function(){return this.range=this.set.map(function(e){return e.join(" ").trim()}).join("||").trim(),this.range},ie.prototype.toString=function(){return this.range},ie.prototype.parseRange=function(e){var r=this.loose;e=e.trim(),t("range",e,r);var n=r?o[F]:o[U];e=e.replace(n,ce),t("hyphen replace",e),e=e.replace(o[P],"$1$2$3"),t("comparator trim",e,o[P]),e=(e=(e=e.replace(o[I],"$1~")).replace(o[N],"$1^")).split(/\s+/).join(" ");var s=r?o[H]:o[D],i=e.split(" ").map(function(e){return function(e,r){return t("comp",e),e=function(e,r){return e.trim().split(/\s+/).map(function(e){return function(e,r){t("caret",e,r);var n=r?o[M]:o[V];return e.replace(n,function(r,n,s,o,i){var a;return t("caret",e,r,n,s,o,i),ae(n)?a="":ae(s)?a=">="+n+".0.0 <"+(+n+1)+".0.0":ae(o)?a="0"===n?">="+n+"."+s+".0 <"+n+"."+(+s+1)+".0":">="+n+"."+s+".0 <"+(+n+1)+".0.0":i?(t("replaceCaret pr",i),"-"!==i.charAt(0)&&(i="-"+i),a="0"===n?"0"===s?">="+n+"."+s+"."+o+i+" <"+n+"."+s+"."+(+o+1):">="+n+"."+s+"."+o+i+" <"+n+"."+(+s+1)+".0":">="+n+"."+s+"."+o+i+" <"+(+n+1)+".0.0"):(t("no pr"),a="0"===n?"0"===s?">="+n+"."+s+"."+o+" <"+n+"."+s+"."+(+o+1):">="+n+"."+s+"."+o+" <"+n+"."+(+s+1)+".0":">="+n+"."+s+"."+o+" <"+(+n+1)+".0.0"),t("caret return",a),a})}(e,r)}).join(" ")}(e,r),t("caret",e),e=function(e,r){return e.trim().split(/\s+/).map(function(e){return function(e,r){var n=r?o[q]:o[R];return e.replace(n,function(r,n,s,o,i){var a;return t("tilde",e,r,n,s,o,i),ae(n)?a="":ae(s)?a=">="+n+".0.0 <"+(+n+1)+".0.0":ae(o)?a=">="+n+"."+s+".0 <"+n+"."+(+s+1)+".0":i?(t("replaceTilde pr",i),"-"!==i.charAt(0)&&(i="-"+i),a=">="+n+"."+s+"."+o+i+" <"+n+"."+(+s+1)+".0"):a=">="+n+"."+s+"."+o+" <"+n+"."+(+s+1)+".0",t("tilde return",a),a})}(e,r)}).join(" ")}(e,r),t("tildes",e),e=function(e,r){return t("replaceXRanges",e,r),e.split(/\s+/).map(function(e){return function(e,r){e=e.trim();var n=r?o[A]:o[O];return e.replace(n,function(r,n,s,o,i,a){t("xRange",e,r,n,s,o,i,a);var c=ae(s),p=c||ae(o),u=p||ae(i),h=u;return"="===n&&h&&(n=""),c?r=">"===n||"<"===n?"<0.0.0":"*":n&&h?(p&&(o=0),u&&(i=0),">"===n?(n=">=",p?(s=+s+1,o=0,i=0):u&&(o=+o+1,i=0)):"<="===n&&(n="<",p?s=+s+1:o=+o+1),r=n+s+"."+o+"."+i):p?r=">="+s+".0.0 <"+(+s+1)+".0.0":u&&(r=">="+s+"."+o+".0 <"+s+"."+(+o+1)+".0"),t("xRange return",r),r})}(e,r)}).join(" ")}(e,r),t("xrange",e),e=function(e,r){return t("replaceStars",e,r),e.trim().replace(o[G],"")}(e,r),t("stars",e),e}(e,r)}).join(" ").split(/\s+/);return this.loose&&(i=i.filter(function(e){return!!e.match(s)})),i=i.map(function(e){return new se(e,r)})},ie.prototype.intersects=function(e,r){if(!(e instanceof ie))throw new TypeError("a Range is required");return this.set.some(function(t){return t.every(function(t){return e.set.some(function(e){return e.every(function(e){return t.intersects(e,r)})})})})},r.toComparators=function(e,r){return new ie(e,r).set.map(function(e){return e.map(function(e){return e.value}).join(" ").trim().split(" ")})},ie.prototype.test=function(e){if(!e)return!1;"string"==typeof e&&(e=new W(e,this.loose));for(var r=0;r",t)},r.outside=he,r.prerelease=function(e,r){var t=z(e,r);return t&&t.prerelease.length?t.prerelease:null},r.intersects=function(e,r,t){return e=new ie(e,t),r=new ie(r,t),e.intersects(r)},r.coerce=function(e){if(e instanceof W)return e;if("string"!=typeof e)return null;var r=e.match(o[C]);return null==r?null:z((r[1]||"0")+"."+(r[2]||"0")+"."+(r[3]||"0"))}}),semver_1=semver.SEMVER_SPEC_VERSION,semver_2=semver.re,semver_3=semver.src,semver_4=semver.parse,semver_5=semver.valid,semver_6=semver.clean,semver_7=semver.SemVer,semver_8=semver.inc,semver_9=semver.diff,semver_10=semver.compareIdentifiers,semver_11=semver.rcompareIdentifiers,semver_12=semver.major,semver_13=semver.minor,semver_14=semver.patch,semver_15=semver.compare,semver_16=semver.compareLoose,semver_17=semver.rcompare,semver_18=semver.sort,semver_19=semver.rsort,semver_20=semver.gt,semver_21=semver.lt,semver_22=semver.eq,semver_23=semver.neq,semver_24=semver.gte,semver_25=semver.lte,semver_26=semver.cmp,semver_27=semver.Comparator,semver_28=semver.Range,semver_29=semver.toComparators,semver_30=semver.satisfies,semver_31=semver.maxSatisfying,semver_32=semver.minSatisfying,semver_33=semver.validRange,semver_34=semver.ltr,semver_35=semver.gtr,semver_36=semver.outside,semver_37=semver.prerelease,semver_38=semver.intersects,semver_39=semver.coerce,commander=createCommonjsModule(function(e,r){var t=events.EventEmitter,n=child_process__default.spawn,s=path.dirname,o=path.basename;function i(e,r){this.flags=e,this.required=e.indexOf("<")>=0,this.optional=e.indexOf("[")>=0,this.bool=-1===e.indexOf("-no-"),(e=e.split(/[ ,|]+/)).length>1&&!/^[[<]/.test(e[1])&&(this.short=e.shift()),this.long=e.shift(),this.description=r||""}function a(e){this.commands=[],this.options=[],this._execs={},this._allowUnknownOption=!1,this._args=[],this._name=e||""}function c(e,r){var t=Math.max(0,r-e.length);return e+Array(t+1).join(" ")}function p(e,r){r=r||[];for(var t=0;t":"["+r+"]"}function h(e){try{if(fs__default.statSync(e).isFile())return!0}catch(e){return!1}}util.inherits(a,t),(r=e.exports=new a).Command=a,r.Option=i,i.prototype.name=function(){return this.long.replace("--","").replace("no-","")},i.prototype.attributeName=function(){return this.name().split("-").reduce(function(e,r){return e+r[0].toUpperCase()+r.slice(1)})},i.prototype.is=function(e){return this.short===e||this.long===e},a.prototype.command=function(e,r,t){"object"==typeof r&&null!==r&&(t=r,r=null),t=t||{};var n=e.split(/ +/),s=new a(n.shift());return r&&(s.description(r),this.executables=!0,this._execs[s._name]=!0,t.isDefault&&(this.defaultExecutable=s._name)),s._noHelp=!!t.noHelp,this.commands.push(s),s.parseExpectedArgs(n),s.parent=this,r?this:s},a.prototype.arguments=function(e){return this.parseExpectedArgs(e.split(/ +/))},a.prototype.addImplicitHelpCommand=function(){this.command("help [cmd]","display help for [cmd]")},a.prototype.parseExpectedArgs=function(e){if(e.length){var r=this;return e.forEach(function(e){var t={required:!1,name:"",variadic:!1};switch(e[0]){case"<":t.required=!0,t.name=e.slice(1,-1);break;case"[":t.name=e.slice(1,-1)}t.name.length>3&&"..."===t.name.slice(-3)&&(t.variadic=!0,t.name=t.name.slice(0,-3)),t.name&&r._args.push(t)}),this}},a.prototype.action=function(e){var r=this,t=function(t,n){t=t||[],n=n||[];var s=r.parseOptions(n);p(r,s.unknown),s.unknown.length>0&&r.unknownOption(s.unknown[0]),s.args.length&&(t=s.args.concat(t)),r._args.forEach(function(e,n){e.required&&null==t[n]?r.missingArgument(e.name):e.variadic&&(n!==r._args.length-1&&r.variadicArgNotLast(e.name),t[n]=t.splice(n))}),r._args.length?t[r._args.length]=r:t.push(r),e.apply(r,t)},n=this.parent||this,s=n===this?"*":this._name;return n.on("command:"+s,t),this._alias&&n.on("command:"+this._alias,t),this},a.prototype.option=function(e,r,t,n){var s=this,o=new i(e,r),a=o.name(),c=o.attributeName();if("function"!=typeof t)if(t instanceof RegExp){var p=t;t=function(e,r){var t=p.exec(e);return t?t[0]:r}}else n=t,t=null;return(!o.bool||o.optional||o.required)&&(o.bool||(n=!0),void 0!==n&&(s[c]=n,o.defaultValue=n)),this.options.push(o),this.on("option:"+a,function(e){null!==e&&t&&(e=t(e,void 0===s[c]?n:s[c])),"boolean"==typeof s[c]||void 0===s[c]?s[c]=null==e?!!o.bool&&(n||!0):e:null!==e&&(s[c]=e)}),this},a.prototype.allowUnknownOption=function(e){return this._allowUnknownOption=0===arguments.length||e,this},a.prototype.parse=function(e){this.executables&&this.addImplicitHelpCommand(),this.rawArgs=e,this._name=this._name||o(e[1],".js"),this.executables&&e.length<3&&!this.defaultExecutable&&e.push("--help");var r=this.parseOptions(this.normalize(e.slice(2))),t=this.args=r.args,n=this.parseArgs(this.args,r.unknown),s=n.args[0],i=null;return s&&(i=this.commands.filter(function(e){return e.alias()===s})[0]),this._execs[s]&&"function"!=typeof this._execs[s]?this.executeSubCommand(e,t,r.unknown):i?(t[0]=i._name,this.executeSubCommand(e,t,r.unknown)):this.defaultExecutable?(t.unshift(this.defaultExecutable),this.executeSubCommand(e,t,r.unknown)):n},a.prototype.executeSubCommand=function(e,r,t){(r=r.concat(t)).length||this.help(),"help"===r[0]&&1===r.length&&this.help(),"help"===r[0]&&(r[0]=r[1],r[1]="--help");var i,a=e[1],c=o(a,path.extname(a))+"-"+r[0],p=fs__default.lstatSync(a).isSymbolicLink()?fs__default.readlinkSync(a):a;p!==a&&"/"!==p.charAt(0)&&(p=path.join(s(a),p)),i=s(p);var u,l=path.join(i,c),m=!1;h(l+".js")?(c=l+".js",m=!0):h(l+".ts")?(c=l+".ts",m=!0):h(l)&&(c=l),r=r.slice(1),"win32"!==process.platform?m?(r.unshift(c),r=(process.execArgv||[]).concat(r),u=n(process.argv[0],r,{stdio:"inherit",customFds:[0,1,2]})):u=n(c,r,{stdio:"inherit",customFds:[0,1,2]}):(r.unshift(c),u=n(process.execPath,r,{stdio:"inherit"}));["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach(function(e){process.on(e,function(){!1===u.killed&&null===u.exitCode&&u.kill(e)})}),u.on("close",process.exit.bind(process)),u.on("error",function(e){"ENOENT"===e.code?console.error("error: %s(1) does not exist, try --help",c):"EACCES"===e.code&&console.error("error: %s(1) not executable. try chmod or run with root",c),process.exit(1)}),this.runningCommand=u},a.prototype.normalize=function(e){for(var r,t,n,s=[],o=0,i=e.length;o0&&(t=this.optionFor(e[o-1])),"--"===r){s=s.concat(e.slice(o));break}t&&t.required?s.push(r):r.length>1&&"-"===r[0]&&"-"!==r[1]?r.slice(1).split("").forEach(function(e){s.push("-"+e)}):/^--/.test(r)&&~(n=r.indexOf("="))?s.push(r.slice(0,n),r.slice(n+1)):s.push(r)}return s},a.prototype.parseArgs=function(e,r){var t;return e.length?(t=e[0],this.listeners("command:"+t).length?this.emit("command:"+e.shift(),e,r):this.emit("command:*",e)):(p(this,r),r.length>0&&this.unknownOption(r[0]),0===this.commands.length&&0===this._args.filter(function(e){return e.required}).length&&this.emit("command:*")),this},a.prototype.optionFor=function(e){for(var r=0,t=this.options.length;r1&&"-"===n[0]?(i.push(n),a+1e&&(e=this.largestArgLength()),this.commands&&this.commands.length&&this.largestCommandLength()>e&&(e=this.largestCommandLength()),e},a.prototype.optionHelp=function(){var e=this.padWidth();return this.options.map(function(r){return c(r.flags,e)+" "+r.description+(r.bool&&void 0!==r.defaultValue?" (default: "+JSON.stringify(r.defaultValue)+")":"")}).concat([c("-h, --help",e)+" output usage information"]).join("\n")},a.prototype.commandHelp=function(){if(!this.commands.length)return"";var e=this.prepareCommands(),r=this.padWidth();return["Commands:",e.map(function(e){var t=e[1]?" "+e[1]:"";return(t?c(e[0],r):e[0])+t}).join("\n").replace(/^/gm," "),""].join("\n")},a.prototype.helpInformation=function(){var e=[];if(this._description){e=[this._description,""];var r=this._argsDescription;if(r&&this._args.length){var t=this.padWidth();e.push("Arguments:"),e.push(""),this._args.forEach(function(n){e.push(" "+c(n.name,t)+" "+r[n.name])}),e.push("")}}var n=this._name;this._alias&&(n=n+"|"+this._alias);var s=["Usage: "+n+" "+this.usage(),""],o=[],i=this.commandHelp();i&&(o=[i]);var a=["Options:",""+this.optionHelp().replace(/^/gm," "),""];return s.concat(e).concat(a).concat(o).join("\n")},a.prototype.outputHelp=function(e){e||(e=function(e){return e}),process.stdout.write(e(this.helpInformation())),this.emit("--help")},a.prototype.help=function(e){this.outputHelp(e),process.exit()}}),commander_1=commander.Command,commander_2=commander.Option;const getNormalisedArgs=()=>{const e=process.argv;if(!process.mainModule){const r=e.shift();e.unshift(r,module.filename)}return e};commander.option("-i, --ignore-local-bin","Ignore any binaries in ./node_modules/.bin").option("-v, --verbose","Prints information about all the binaries detected").parse(getNormalisedArgs());const logger=console;commander.verbose||(logger.debug=(()=>{}));const getVersion=({command:e,localBinFolder:r,global:t=!0})=>{const n={PATH:process.env.PATH};return n.PATH=t?n.PATH.replace(`${r}${path.delimiter}`,""):`${r}${path.delimiter}${n.PATH}`,child_process.execSync(e,{env:n}).toString().replace("v","").trim()},checkVersion=(e,r)=>{let t=null;const n=path.join(process.cwd(),"package.json");try{t=require(n)}catch(e){logger.error(`Unable to find ${n}! 😱${os.EOL}`),logger.error(`Please ensure that this script is executed in the same directory.${os.EOL}`),process.exit(1)}t.engines&&t.engines[e]||(logger.error(`There is no engine named "${e}" specified in package.json! 😱${os.EOL}`),process.exit(1));const s=t.engines[e];let o=null,i=null,a=null,c=null,p=null;try{const t=child_process.execSync("npm bin").toString().trim(),n=fs.existsSync(`${t}${path.sep}${e}`);o=getVersion({command:r,localBinFolder:t}),c=semver.satisfies(o,s),logger.debug(`Expected ${e} version:\t${s}`),logger.debug(`╰─ Global ${e} version:\t${o}\t${c?"✅️":"❌️"}`),n&&(i=getVersion({command:r,localBinFolder:t,global:!1}),p=semver.satisfies(i,s),logger.debug(`╰─ Local ${e} version:\t${i}\t${p?"✅️":"❌️"} (from ${t})`)),a=commander.ignoreLocalBin?o:i||o,logger.debug(`╰─ (using: ${a})${os.EOL}`)}catch(r){logger.error(`Unable to get ${e} version! 😱${os.EOL}`),process.exit(1)}if(!semver.satisfies(a,s)){const r="https://github.com/Skyscanner/ensure-node-env/blob/master/README.md#guide";logger.error(`Expected ${e} version to match ${s}, but got ${a}. 😱${os.EOL}`),commander.verbose||logger.error(`(pass the --verbose flag to the script for a more detailed output)${os.EOL}`),logger.error(`Please follow Skyscanner's node environment guide (see ${r}).${os.EOL}`),process.exit(1)}};logger.info(`Checking node & npm versions...${os.EOL}`),checkVersion("node","node --version"),checkVersion("npm","npm -g --version"),logger.info(`${os.EOL}All good. 👍${os.EOL}`); diff --git a/dist/index.js b/dist/index.js index 4c0613a..5f34af1 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1 +1 @@ -"use strict";function _interopDefault(e){return e&&"object"==typeof e&&"default"in e?e.default:e}var path=_interopDefault(require("path")),child_process=require("child_process");function createCommonjsModule(e,r){return e(r={exports:{}},r.exports),r.exports}var semver=createCommonjsModule(function(e,r){var t;r=e.exports=F,t="object"==typeof process&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?function(){var e=Array.prototype.slice.call(arguments,0);e.unshift("SEMVER"),console.log.apply(console,e)}:function(){},r.SEMVER_SPEC_VERSION="2.0.0";var n=256,s=Number.MAX_SAFE_INTEGER||9007199254740991,o=r.re=[],i=r.src=[],a=0,c=a++;i[c]="0|[1-9]\\d*";var p=a++;i[p]="[0-9]+";var u=a++;i[u]="\\d*[a-zA-Z-][a-zA-Z0-9-]*";var l=a++;i[l]="("+i[c]+")\\.("+i[c]+")\\.("+i[c]+")";var h=a++;i[h]="("+i[p]+")\\.("+i[p]+")\\.("+i[p]+")";var v=a++;i[v]="(?:"+i[c]+"|"+i[u]+")";var m=a++;i[m]="(?:"+i[p]+"|"+i[u]+")";var f=a++;i[f]="(?:-("+i[v]+"(?:\\."+i[v]+")*))";var g=a++;i[g]="(?:-?("+i[m]+"(?:\\."+i[m]+")*))";var w=a++;i[w]="[0-9A-Za-z-]+";var d=a++;i[d]="(?:\\+("+i[w]+"(?:\\."+i[w]+")*))";var y=a++,_="v?"+i[l]+i[f]+"?"+i[d]+"?";i[y]="^"+_+"$";var E="[v=\\s]*"+i[h]+i[g]+"?"+i[d]+"?",j=a++;i[j]="^"+E+"$";var b=a++;i[b]="((?:<|>)?=?)";var $=a++;i[$]=i[p]+"|x|X|\\*";var k=a++;i[k]=i[c]+"|x|X|\\*";var S=a++;i[S]="[v=\\s]*("+i[k]+")(?:\\.("+i[k]+")(?:\\.("+i[k]+")(?:"+i[f]+")?"+i[d]+"?)?)?";var x=a++;i[x]="[v=\\s]*("+i[$]+")(?:\\.("+i[$]+")(?:\\.("+i[$]+")(?:"+i[g]+")?"+i[d]+"?)?)?";var R=a++;i[R]="^"+i[b]+"\\s*"+i[S]+"$";var I=a++;i[I]="^"+i[b]+"\\s*"+i[x]+"$";var T=a++;i[T]="(?:^|[^\\d])(\\d{1,16})(?:\\.(\\d{1,16}))?(?:\\.(\\d{1,16}))?(?:$|[^\\d])";var V=a++;i[V]="(?:~>?)";var C=a++;i[C]="(\\s*)"+i[V]+"\\s+",o[C]=new RegExp(i[C],"g");var A=a++;i[A]="^"+i[V]+i[S]+"$";var M=a++;i[M]="^"+i[V]+i[x]+"$";var q=a++;i[q]="(?:\\^)";var N=a++;i[N]="(\\s*)"+i[q]+"\\s+",o[N]=new RegExp(i[N],"g");var D=a++;i[D]="^"+i[q]+i[S]+"$";var P=a++;i[P]="^"+i[q]+i[x]+"$";var O=a++;i[O]="^"+i[b]+"\\s*("+E+")$|^$";var U=a++;i[U]="^"+i[b]+"\\s*("+_+")$|^$";var X=a++;i[X]="(\\s*)"+i[b]+"\\s*("+E+"|"+i[S]+")",o[X]=new RegExp(i[X],"g");var z=a++;i[z]="^\\s*("+i[S]+")\\s+-\\s+("+i[S]+")\\s*$";var G=a++;i[G]="^\\s*("+i[x]+")\\s+-\\s+("+i[x]+")\\s*$";var L=a++;i[L]="(<|>)?=?\\s*\\*";for(var Z=0;Z<35;Z++)t(Z,i[Z]),o[Z]||(o[Z]=new RegExp(i[Z]));function B(e,r){if(e instanceof F)return e;if("string"!=typeof e)return null;if(e.length>n)return null;if(!(r?o[j]:o[y]).test(e))return null;try{return new F(e,r)}catch(e){return null}}function F(e,r){if(e instanceof F){if(e.loose===r)return e;e=e.version}else if("string"!=typeof e)throw new TypeError("Invalid Version: "+e);if(e.length>n)throw new TypeError("version is longer than "+n+" characters");if(!(this instanceof F))return new F(e,r);t("SemVer",e,r),this.loose=r;var i=e.trim().match(r?o[j]:o[y]);if(!i)throw new TypeError("Invalid Version: "+e);if(this.raw=e,this.major=+i[1],this.minor=+i[2],this.patch=+i[3],this.major>s||this.major<0)throw new TypeError("Invalid major version");if(this.minor>s||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>s||this.patch<0)throw new TypeError("Invalid patch version");i[4]?this.prerelease=i[4].split(".").map(function(e){if(/^[0-9]+$/.test(e)){var r=+e;if(r>=0&&r=0;)"number"==typeof this.prerelease[t]&&(this.prerelease[t]++,t=-2);-1===t&&this.prerelease.push(0)}r&&(this.prerelease[0]===r?isNaN(this.prerelease[1])&&(this.prerelease=[r,0]):this.prerelease=[r,0]);break;default:throw new Error("invalid increment argument: "+e)}return this.format(),this.raw=this.version,this},r.inc=function(e,r,t,n){"string"==typeof t&&(n=t,t=void 0);try{return new F(e,t).inc(r,n).version}catch(e){return null}},r.diff=function(e,r){if(Y(e,r))return null;var t=B(e),n=B(r);if(t.prerelease.length||n.prerelease.length){for(var s in t)if(("major"===s||"minor"===s||"patch"===s)&&t[s]!==n[s])return"pre"+s;return"prerelease"}for(var s in t)if(("major"===s||"minor"===s||"patch"===s)&&t[s]!==n[s])return s},r.compareIdentifiers=J;var H=/^[0-9]+$/;function J(e,r){var t=H.test(e),n=H.test(r);return t&&n&&(e=+e,r=+r),t&&!n?-1:n&&!t?1:er?1:0}function K(e,r,t){return new F(e,t).compare(new F(r,t))}function Q(e,r,t){return K(e,r,t)>0}function W(e,r,t){return K(e,r,t)<0}function Y(e,r,t){return 0===K(e,r,t)}function ee(e,r,t){return 0!==K(e,r,t)}function re(e,r,t){return K(e,r,t)>=0}function te(e,r,t){return K(e,r,t)<=0}function ne(e,r,t,n){var s;switch(r){case"===":"object"==typeof e&&(e=e.version),"object"==typeof t&&(t=t.version),s=e===t;break;case"!==":"object"==typeof e&&(e=e.version),"object"==typeof t&&(t=t.version),s=e!==t;break;case"":case"=":case"==":s=Y(e,t,n);break;case"!=":s=ee(e,t,n);break;case">":s=Q(e,t,n);break;case">=":s=re(e,t,n);break;case"<":s=W(e,t,n);break;case"<=":s=te(e,t,n);break;default:throw new TypeError("Invalid operator: "+r)}return s}function se(e,r){if(e instanceof se){if(e.loose===r)return e;e=e.value}if(!(this instanceof se))return new se(e,r);t("comparator",e,r),this.loose=r,this.parse(e),this.semver===oe?this.value="":this.value=this.operator+this.semver.version,t("comp",this)}r.rcompareIdentifiers=function(e,r){return J(r,e)},r.major=function(e,r){return new F(e,r).major},r.minor=function(e,r){return new F(e,r).minor},r.patch=function(e,r){return new F(e,r).patch},r.compare=K,r.compareLoose=function(e,r){return K(e,r,!0)},r.rcompare=function(e,r,t){return K(r,e,t)},r.sort=function(e,t){return e.sort(function(e,n){return r.compare(e,n,t)})},r.rsort=function(e,t){return e.sort(function(e,n){return r.rcompare(e,n,t)})},r.gt=Q,r.lt=W,r.eq=Y,r.neq=ee,r.gte=re,r.lte=te,r.cmp=ne,r.Comparator=se;var oe={};function ie(e,r){if(e instanceof ie)return e.loose===r?e:new ie(e.raw,r);if(e instanceof se)return new ie(e.value,r);if(!(this instanceof ie))return new ie(e,r);if(this.loose=r,this.raw=e,this.set=e.split(/\s*\|\|\s*/).map(function(e){return this.parseRange(e.trim())},this).filter(function(e){return e.length}),!this.set.length)throw new TypeError("Invalid SemVer Range: "+e);this.format()}function ae(e){return!e||"x"===e.toLowerCase()||"*"===e}function ce(e,r,t,n,s,o,i,a,c,p,u,l,h){return((r=ae(t)?"":ae(n)?">="+t+".0.0":ae(s)?">="+t+"."+n+".0":">="+r)+" "+(a=ae(c)?"":ae(p)?"<"+(+c+1)+".0.0":ae(u)?"<"+c+"."+(+p+1)+".0":l?"<="+c+"."+p+"."+u+"-"+l:"<="+a)).trim()}function pe(e,r){for(var n=0;n0){var s=e[n].semver;if(s.major===r.major&&s.minor===r.minor&&s.patch===r.patch)return!0}return!1}return!0}function ue(e,r,t){try{r=new ie(r,t)}catch(e){return!1}return r.test(e)}function le(e,r,t,n){var s,o,i,a,c;switch(e=new F(e,n),r=new ie(r,n),t){case">":s=Q,o=te,i=W,a=">",c=">=";break;case"<":s=W,o=re,i=Q,a="<",c="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(ue(e,r,n))return!1;for(var p=0;p=0.0.0")),l=l||e,h=h||e,s(e.semver,l.semver,n)?l=e:i(e.semver,h.semver,n)&&(h=e)}),l.operator===a||l.operator===c)return!1;if((!h.operator||h.operator===a)&&o(e,h.semver))return!1;if(h.operator===c&&i(e,h.semver))return!1}return!0}se.prototype.parse=function(e){var r=this.loose?o[O]:o[U],t=e.match(r);if(!t)throw new TypeError("Invalid comparator: "+e);this.operator=t[1],"="===this.operator&&(this.operator=""),t[2]?this.semver=new F(t[2],this.loose):this.semver=oe},se.prototype.toString=function(){return this.value},se.prototype.test=function(e){return t("Comparator.test",e,this.loose),this.semver===oe||("string"==typeof e&&(e=new F(e,this.loose)),ne(e,this.operator,this.semver,this.loose))},se.prototype.intersects=function(e,r){if(!(e instanceof se))throw new TypeError("a Comparator is required");var t;if(""===this.operator)return t=new ie(e.value,r),ue(this.value,t,r);if(""===e.operator)return t=new ie(this.value,r),ue(e.semver,t,r);var n=!(">="!==this.operator&&">"!==this.operator||">="!==e.operator&&">"!==e.operator),s=!("<="!==this.operator&&"<"!==this.operator||"<="!==e.operator&&"<"!==e.operator),o=this.semver.version===e.semver.version,i=!(">="!==this.operator&&"<="!==this.operator||">="!==e.operator&&"<="!==e.operator),a=ne(this.semver,"<",e.semver,r)&&(">="===this.operator||">"===this.operator)&&("<="===e.operator||"<"===e.operator),c=ne(this.semver,">",e.semver,r)&&("<="===this.operator||"<"===this.operator)&&(">="===e.operator||">"===e.operator);return n||s||o&&i||a||c},r.Range=ie,ie.prototype.format=function(){return this.range=this.set.map(function(e){return e.join(" ").trim()}).join("||").trim(),this.range},ie.prototype.toString=function(){return this.range},ie.prototype.parseRange=function(e){var r=this.loose;e=e.trim(),t("range",e,r);var n=r?o[G]:o[z];e=e.replace(n,ce),t("hyphen replace",e),e=e.replace(o[X],"$1$2$3"),t("comparator trim",e,o[X]),e=(e=(e=e.replace(o[C],"$1~")).replace(o[N],"$1^")).split(/\s+/).join(" ");var s=r?o[O]:o[U],i=e.split(" ").map(function(e){return function(e,r){return t("comp",e),e=function(e,r){return e.trim().split(/\s+/).map(function(e){return function(e,r){t("caret",e,r);var n=r?o[P]:o[D];return e.replace(n,function(r,n,s,o,i){var a;return t("caret",e,r,n,s,o,i),ae(n)?a="":ae(s)?a=">="+n+".0.0 <"+(+n+1)+".0.0":ae(o)?a="0"===n?">="+n+"."+s+".0 <"+n+"."+(+s+1)+".0":">="+n+"."+s+".0 <"+(+n+1)+".0.0":i?(t("replaceCaret pr",i),"-"!==i.charAt(0)&&(i="-"+i),a="0"===n?"0"===s?">="+n+"."+s+"."+o+i+" <"+n+"."+s+"."+(+o+1):">="+n+"."+s+"."+o+i+" <"+n+"."+(+s+1)+".0":">="+n+"."+s+"."+o+i+" <"+(+n+1)+".0.0"):(t("no pr"),a="0"===n?"0"===s?">="+n+"."+s+"."+o+" <"+n+"."+s+"."+(+o+1):">="+n+"."+s+"."+o+" <"+n+"."+(+s+1)+".0":">="+n+"."+s+"."+o+" <"+(+n+1)+".0.0"),t("caret return",a),a})}(e,r)}).join(" ")}(e,r),t("caret",e),e=function(e,r){return e.trim().split(/\s+/).map(function(e){return function(e,r){var n=r?o[M]:o[A];return e.replace(n,function(r,n,s,o,i){var a;return t("tilde",e,r,n,s,o,i),ae(n)?a="":ae(s)?a=">="+n+".0.0 <"+(+n+1)+".0.0":ae(o)?a=">="+n+"."+s+".0 <"+n+"."+(+s+1)+".0":i?(t("replaceTilde pr",i),"-"!==i.charAt(0)&&(i="-"+i),a=">="+n+"."+s+"."+o+i+" <"+n+"."+(+s+1)+".0"):a=">="+n+"."+s+"."+o+" <"+n+"."+(+s+1)+".0",t("tilde return",a),a})}(e,r)}).join(" ")}(e,r),t("tildes",e),e=function(e,r){return t("replaceXRanges",e,r),e.split(/\s+/).map(function(e){return function(e,r){e=e.trim();var n=r?o[I]:o[R];return e.replace(n,function(r,n,s,o,i,a){t("xRange",e,r,n,s,o,i,a);var c=ae(s),p=c||ae(o),u=p||ae(i),l=u;return"="===n&&l&&(n=""),c?r=">"===n||"<"===n?"<0.0.0":"*":n&&l?(p&&(o=0),u&&(i=0),">"===n?(n=">=",p?(s=+s+1,o=0,i=0):u&&(o=+o+1,i=0)):"<="===n&&(n="<",p?s=+s+1:o=+o+1),r=n+s+"."+o+"."+i):p?r=">="+s+".0.0 <"+(+s+1)+".0.0":u&&(r=">="+s+"."+o+".0 <"+s+"."+(+o+1)+".0"),t("xRange return",r),r})}(e,r)}).join(" ")}(e,r),t("xrange",e),e=function(e,r){return t("replaceStars",e,r),e.trim().replace(o[L],"")}(e,r),t("stars",e),e}(e,r)}).join(" ").split(/\s+/);return this.loose&&(i=i.filter(function(e){return!!e.match(s)})),i=i.map(function(e){return new se(e,r)})},ie.prototype.intersects=function(e,r){if(!(e instanceof ie))throw new TypeError("a Range is required");return this.set.some(function(t){return t.every(function(t){return e.set.some(function(e){return e.every(function(e){return t.intersects(e,r)})})})})},r.toComparators=function(e,r){return new ie(e,r).set.map(function(e){return e.map(function(e){return e.value}).join(" ").trim().split(" ")})},ie.prototype.test=function(e){if(!e)return!1;"string"==typeof e&&(e=new F(e,this.loose));for(var r=0;r",t)},r.outside=le,r.prerelease=function(e,r){var t=B(e,r);return t&&t.prerelease.length?t.prerelease:null},r.intersects=function(e,r,t){return e=new ie(e,t),r=new ie(r,t),e.intersects(r)},r.coerce=function(e){if(e instanceof F)return e;if("string"!=typeof e)return null;var r=e.match(o[T]);return null==r?null:B((r[1]||"0")+"."+(r[2]||"0")+"."+(r[3]||"0"))}}),semver_1=semver.SEMVER_SPEC_VERSION,semver_2=semver.re,semver_3=semver.src,semver_4=semver.parse,semver_5=semver.valid,semver_6=semver.clean,semver_7=semver.SemVer,semver_8=semver.inc,semver_9=semver.diff,semver_10=semver.compareIdentifiers,semver_11=semver.rcompareIdentifiers,semver_12=semver.major,semver_13=semver.minor,semver_14=semver.patch,semver_15=semver.compare,semver_16=semver.compareLoose,semver_17=semver.rcompare,semver_18=semver.sort,semver_19=semver.rsort,semver_20=semver.gt,semver_21=semver.lt,semver_22=semver.eq,semver_23=semver.neq,semver_24=semver.gte,semver_25=semver.lte,semver_26=semver.cmp,semver_27=semver.Comparator,semver_28=semver.Range,semver_29=semver.toComparators,semver_30=semver.satisfies,semver_31=semver.maxSatisfying,semver_32=semver.minSatisfying,semver_33=semver.validRange,semver_34=semver.ltr,semver_35=semver.gtr,semver_36=semver.outside,semver_37=semver.prerelease,semver_38=semver.intersects,semver_39=semver.coerce;const checkVersion=(e,r)=>{let t=null;const n=path.join(process.cwd(),"package.json");try{t=require(n)}catch(e){console.log(`Unable to find ${n}! 😱`),console.log(""),console.log("Please ensure that this script is executed in the same directory."),console.log(""),process.exit(1)}let s=null;try{s=t.engines[e]}catch(r){console.log(`There is no engine named ${e} specified in package.json! 😱`),console.log(""),process.exit(1)}let o=null;try{o=child_process.execSync(r).toString().replace("v","").trim()}catch(r){console.log(`Unable to get ${e} version! 😱`),console.log(""),process.exit(1)}if(!semver.satisfies(o,s)){const r="https://github.com/Skyscanner/ensure-node-env/blob/master/README.md#guide";console.log(`Expected ${e} version to match ${s}, but got ${o}. 😱`),console.log(""),console.log(`Please follow Skyscanner's node environment guide (see ${r}).`),console.log(""),process.exit(1)}};console.log("Checking node & npm versions..."),console.log(""),checkVersion("node","node --version"),checkVersion("npm","npm -g --version"),console.log("All good. 👍"),console.log(""); +"use strict";function _interopDefault(e){return e&&"object"==typeof e&&"default"in e?e.default:e}var os=require("os"),events=_interopDefault(require("events")),child_process=require("child_process"),child_process__default=_interopDefault(child_process),path=_interopDefault(require("path")),fs=require("fs"),fs__default=_interopDefault(fs),util=_interopDefault(require("util"));function createCommonjsModule(e,r){return e(r={exports:{}},r.exports),r.exports}var semver=createCommonjsModule(function(e,r){var t;r=e.exports=W,t="object"==typeof process&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?function(){var e=Array.prototype.slice.call(arguments,0);e.unshift("SEMVER"),console.log.apply(console,e)}:function(){},r.SEMVER_SPEC_VERSION="2.0.0";var n=256,s=Number.MAX_SAFE_INTEGER||9007199254740991,o=r.re=[],i=r.src=[],a=0,c=a++;i[c]="0|[1-9]\\d*";var p=a++;i[p]="[0-9]+";var u=a++;i[u]="\\d*[a-zA-Z-][a-zA-Z0-9-]*";var h=a++;i[h]="("+i[c]+")\\.("+i[c]+")\\.("+i[c]+")";var l=a++;i[l]="("+i[p]+")\\.("+i[p]+")\\.("+i[p]+")";var m=a++;i[m]="(?:"+i[c]+"|"+i[u]+")";var f=a++;i[f]="(?:"+i[p]+"|"+i[u]+")";var v=a++;i[v]="(?:-("+i[m]+"(?:\\."+i[m]+")*))";var g=a++;i[g]="(?:-?("+i[f]+"(?:\\."+i[f]+")*))";var d=a++;i[d]="[0-9A-Za-z-]+";var _=a++;i[_]="(?:\\+("+i[d]+"(?:\\."+i[d]+")*))";var y=a++,w="v?"+i[h]+i[v]+"?"+i[_]+"?";i[y]="^"+w+"$";var b="[v=\\s]*"+i[l]+i[g]+"?"+i[_]+"?",E=a++;i[E]="^"+b+"$";var x=a++;i[x]="((?:<|>)?=?)";var $=a++;i[$]=i[p]+"|x|X|\\*";var j=a++;i[j]=i[c]+"|x|X|\\*";var k=a++;i[k]="[v=\\s]*("+i[j]+")(?:\\.("+i[j]+")(?:\\.("+i[j]+")(?:"+i[v]+")?"+i[_]+"?)?)?";var S=a++;i[S]="[v=\\s]*("+i[$]+")(?:\\.("+i[$]+")(?:\\.("+i[$]+")(?:"+i[g]+")?"+i[_]+"?)?)?";var O=a++;i[O]="^"+i[x]+"\\s*"+i[k]+"$";var A=a++;i[A]="^"+i[x]+"\\s*"+i[S]+"$";var C=a++;i[C]="(?:^|[^\\d])(\\d{1,16})(?:\\.(\\d{1,16}))?(?:\\.(\\d{1,16}))?(?:$|[^\\d])";var L=a++;i[L]="(?:~>?)";var I=a++;i[I]="(\\s*)"+i[L]+"\\s+",o[I]=new RegExp(i[I],"g");var R=a++;i[R]="^"+i[L]+i[k]+"$";var q=a++;i[q]="^"+i[L]+i[S]+"$";var T=a++;i[T]="(?:\\^)";var N=a++;i[N]="(\\s*)"+i[T]+"\\s+",o[N]=new RegExp(i[N],"g");var V=a++;i[V]="^"+i[T]+i[k]+"$";var M=a++;i[M]="^"+i[T]+i[S]+"$";var H=a++;i[H]="^"+i[x]+"\\s*("+b+")$|^$";var D=a++;i[D]="^"+i[x]+"\\s*("+w+")$|^$";var P=a++;i[P]="(\\s*)"+i[x]+"\\s*("+b+"|"+i[k]+")",o[P]=new RegExp(i[P],"g");var U=a++;i[U]="^\\s*("+i[k]+")\\s+-\\s+("+i[k]+")\\s*$";var F=a++;i[F]="^\\s*("+i[S]+")\\s+-\\s+("+i[S]+")\\s*$";var G=a++;i[G]="(<|>)?=?\\s*\\*";for(var B=0;B<35;B++)t(B,i[B]),o[B]||(o[B]=new RegExp(i[B]));function z(e,r){if(e instanceof W)return e;if("string"!=typeof e)return null;if(e.length>n)return null;if(!(r?o[E]:o[y]).test(e))return null;try{return new W(e,r)}catch(e){return null}}function W(e,r){if(e instanceof W){if(e.loose===r)return e;e=e.version}else if("string"!=typeof e)throw new TypeError("Invalid Version: "+e);if(e.length>n)throw new TypeError("version is longer than "+n+" characters");if(!(this instanceof W))return new W(e,r);t("SemVer",e,r),this.loose=r;var i=e.trim().match(r?o[E]:o[y]);if(!i)throw new TypeError("Invalid Version: "+e);if(this.raw=e,this.major=+i[1],this.minor=+i[2],this.patch=+i[3],this.major>s||this.major<0)throw new TypeError("Invalid major version");if(this.minor>s||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>s||this.patch<0)throw new TypeError("Invalid patch version");i[4]?this.prerelease=i[4].split(".").map(function(e){if(/^[0-9]+$/.test(e)){var r=+e;if(r>=0&&r=0;)"number"==typeof this.prerelease[t]&&(this.prerelease[t]++,t=-2);-1===t&&this.prerelease.push(0)}r&&(this.prerelease[0]===r?isNaN(this.prerelease[1])&&(this.prerelease=[r,0]):this.prerelease=[r,0]);break;default:throw new Error("invalid increment argument: "+e)}return this.format(),this.raw=this.version,this},r.inc=function(e,r,t,n){"string"==typeof t&&(n=t,t=void 0);try{return new W(e,t).inc(r,n).version}catch(e){return null}},r.diff=function(e,r){if(Y(e,r))return null;var t=z(e),n=z(r);if(t.prerelease.length||n.prerelease.length){for(var s in t)if(("major"===s||"minor"===s||"patch"===s)&&t[s]!==n[s])return"pre"+s;return"prerelease"}for(var s in t)if(("major"===s||"minor"===s||"patch"===s)&&t[s]!==n[s])return s},r.compareIdentifiers=Z;var X=/^[0-9]+$/;function Z(e,r){var t=X.test(e),n=X.test(r);return t&&n&&(e=+e,r=+r),t&&!n?-1:n&&!t?1:er?1:0}function J(e,r,t){return new W(e,t).compare(new W(r,t))}function K(e,r,t){return J(e,r,t)>0}function Q(e,r,t){return J(e,r,t)<0}function Y(e,r,t){return 0===J(e,r,t)}function ee(e,r,t){return 0!==J(e,r,t)}function re(e,r,t){return J(e,r,t)>=0}function te(e,r,t){return J(e,r,t)<=0}function ne(e,r,t,n){var s;switch(r){case"===":"object"==typeof e&&(e=e.version),"object"==typeof t&&(t=t.version),s=e===t;break;case"!==":"object"==typeof e&&(e=e.version),"object"==typeof t&&(t=t.version),s=e!==t;break;case"":case"=":case"==":s=Y(e,t,n);break;case"!=":s=ee(e,t,n);break;case">":s=K(e,t,n);break;case">=":s=re(e,t,n);break;case"<":s=Q(e,t,n);break;case"<=":s=te(e,t,n);break;default:throw new TypeError("Invalid operator: "+r)}return s}function se(e,r){if(e instanceof se){if(e.loose===r)return e;e=e.value}if(!(this instanceof se))return new se(e,r);t("comparator",e,r),this.loose=r,this.parse(e),this.semver===oe?this.value="":this.value=this.operator+this.semver.version,t("comp",this)}r.rcompareIdentifiers=function(e,r){return Z(r,e)},r.major=function(e,r){return new W(e,r).major},r.minor=function(e,r){return new W(e,r).minor},r.patch=function(e,r){return new W(e,r).patch},r.compare=J,r.compareLoose=function(e,r){return J(e,r,!0)},r.rcompare=function(e,r,t){return J(r,e,t)},r.sort=function(e,t){return e.sort(function(e,n){return r.compare(e,n,t)})},r.rsort=function(e,t){return e.sort(function(e,n){return r.rcompare(e,n,t)})},r.gt=K,r.lt=Q,r.eq=Y,r.neq=ee,r.gte=re,r.lte=te,r.cmp=ne,r.Comparator=se;var oe={};function ie(e,r){if(e instanceof ie)return e.loose===r?e:new ie(e.raw,r);if(e instanceof se)return new ie(e.value,r);if(!(this instanceof ie))return new ie(e,r);if(this.loose=r,this.raw=e,this.set=e.split(/\s*\|\|\s*/).map(function(e){return this.parseRange(e.trim())},this).filter(function(e){return e.length}),!this.set.length)throw new TypeError("Invalid SemVer Range: "+e);this.format()}function ae(e){return!e||"x"===e.toLowerCase()||"*"===e}function ce(e,r,t,n,s,o,i,a,c,p,u,h,l){return((r=ae(t)?"":ae(n)?">="+t+".0.0":ae(s)?">="+t+"."+n+".0":">="+r)+" "+(a=ae(c)?"":ae(p)?"<"+(+c+1)+".0.0":ae(u)?"<"+c+"."+(+p+1)+".0":h?"<="+c+"."+p+"."+u+"-"+h:"<="+a)).trim()}function pe(e,r){for(var n=0;n0){var s=e[n].semver;if(s.major===r.major&&s.minor===r.minor&&s.patch===r.patch)return!0}return!1}return!0}function ue(e,r,t){try{r=new ie(r,t)}catch(e){return!1}return r.test(e)}function he(e,r,t,n){var s,o,i,a,c;switch(e=new W(e,n),r=new ie(r,n),t){case">":s=K,o=te,i=Q,a=">",c=">=";break;case"<":s=Q,o=re,i=K,a="<",c="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(ue(e,r,n))return!1;for(var p=0;p=0.0.0")),h=h||e,l=l||e,s(e.semver,h.semver,n)?h=e:i(e.semver,l.semver,n)&&(l=e)}),h.operator===a||h.operator===c)return!1;if((!l.operator||l.operator===a)&&o(e,l.semver))return!1;if(l.operator===c&&i(e,l.semver))return!1}return!0}se.prototype.parse=function(e){var r=this.loose?o[H]:o[D],t=e.match(r);if(!t)throw new TypeError("Invalid comparator: "+e);this.operator=t[1],"="===this.operator&&(this.operator=""),t[2]?this.semver=new W(t[2],this.loose):this.semver=oe},se.prototype.toString=function(){return this.value},se.prototype.test=function(e){return t("Comparator.test",e,this.loose),this.semver===oe||("string"==typeof e&&(e=new W(e,this.loose)),ne(e,this.operator,this.semver,this.loose))},se.prototype.intersects=function(e,r){if(!(e instanceof se))throw new TypeError("a Comparator is required");var t;if(""===this.operator)return t=new ie(e.value,r),ue(this.value,t,r);if(""===e.operator)return t=new ie(this.value,r),ue(e.semver,t,r);var n=!(">="!==this.operator&&">"!==this.operator||">="!==e.operator&&">"!==e.operator),s=!("<="!==this.operator&&"<"!==this.operator||"<="!==e.operator&&"<"!==e.operator),o=this.semver.version===e.semver.version,i=!(">="!==this.operator&&"<="!==this.operator||">="!==e.operator&&"<="!==e.operator),a=ne(this.semver,"<",e.semver,r)&&(">="===this.operator||">"===this.operator)&&("<="===e.operator||"<"===e.operator),c=ne(this.semver,">",e.semver,r)&&("<="===this.operator||"<"===this.operator)&&(">="===e.operator||">"===e.operator);return n||s||o&&i||a||c},r.Range=ie,ie.prototype.format=function(){return this.range=this.set.map(function(e){return e.join(" ").trim()}).join("||").trim(),this.range},ie.prototype.toString=function(){return this.range},ie.prototype.parseRange=function(e){var r=this.loose;e=e.trim(),t("range",e,r);var n=r?o[F]:o[U];e=e.replace(n,ce),t("hyphen replace",e),e=e.replace(o[P],"$1$2$3"),t("comparator trim",e,o[P]),e=(e=(e=e.replace(o[I],"$1~")).replace(o[N],"$1^")).split(/\s+/).join(" ");var s=r?o[H]:o[D],i=e.split(" ").map(function(e){return function(e,r){return t("comp",e),e=function(e,r){return e.trim().split(/\s+/).map(function(e){return function(e,r){t("caret",e,r);var n=r?o[M]:o[V];return e.replace(n,function(r,n,s,o,i){var a;return t("caret",e,r,n,s,o,i),ae(n)?a="":ae(s)?a=">="+n+".0.0 <"+(+n+1)+".0.0":ae(o)?a="0"===n?">="+n+"."+s+".0 <"+n+"."+(+s+1)+".0":">="+n+"."+s+".0 <"+(+n+1)+".0.0":i?(t("replaceCaret pr",i),"-"!==i.charAt(0)&&(i="-"+i),a="0"===n?"0"===s?">="+n+"."+s+"."+o+i+" <"+n+"."+s+"."+(+o+1):">="+n+"."+s+"."+o+i+" <"+n+"."+(+s+1)+".0":">="+n+"."+s+"."+o+i+" <"+(+n+1)+".0.0"):(t("no pr"),a="0"===n?"0"===s?">="+n+"."+s+"."+o+" <"+n+"."+s+"."+(+o+1):">="+n+"."+s+"."+o+" <"+n+"."+(+s+1)+".0":">="+n+"."+s+"."+o+" <"+(+n+1)+".0.0"),t("caret return",a),a})}(e,r)}).join(" ")}(e,r),t("caret",e),e=function(e,r){return e.trim().split(/\s+/).map(function(e){return function(e,r){var n=r?o[q]:o[R];return e.replace(n,function(r,n,s,o,i){var a;return t("tilde",e,r,n,s,o,i),ae(n)?a="":ae(s)?a=">="+n+".0.0 <"+(+n+1)+".0.0":ae(o)?a=">="+n+"."+s+".0 <"+n+"."+(+s+1)+".0":i?(t("replaceTilde pr",i),"-"!==i.charAt(0)&&(i="-"+i),a=">="+n+"."+s+"."+o+i+" <"+n+"."+(+s+1)+".0"):a=">="+n+"."+s+"."+o+" <"+n+"."+(+s+1)+".0",t("tilde return",a),a})}(e,r)}).join(" ")}(e,r),t("tildes",e),e=function(e,r){return t("replaceXRanges",e,r),e.split(/\s+/).map(function(e){return function(e,r){e=e.trim();var n=r?o[A]:o[O];return e.replace(n,function(r,n,s,o,i,a){t("xRange",e,r,n,s,o,i,a);var c=ae(s),p=c||ae(o),u=p||ae(i),h=u;return"="===n&&h&&(n=""),c?r=">"===n||"<"===n?"<0.0.0":"*":n&&h?(p&&(o=0),u&&(i=0),">"===n?(n=">=",p?(s=+s+1,o=0,i=0):u&&(o=+o+1,i=0)):"<="===n&&(n="<",p?s=+s+1:o=+o+1),r=n+s+"."+o+"."+i):p?r=">="+s+".0.0 <"+(+s+1)+".0.0":u&&(r=">="+s+"."+o+".0 <"+s+"."+(+o+1)+".0"),t("xRange return",r),r})}(e,r)}).join(" ")}(e,r),t("xrange",e),e=function(e,r){return t("replaceStars",e,r),e.trim().replace(o[G],"")}(e,r),t("stars",e),e}(e,r)}).join(" ").split(/\s+/);return this.loose&&(i=i.filter(function(e){return!!e.match(s)})),i=i.map(function(e){return new se(e,r)})},ie.prototype.intersects=function(e,r){if(!(e instanceof ie))throw new TypeError("a Range is required");return this.set.some(function(t){return t.every(function(t){return e.set.some(function(e){return e.every(function(e){return t.intersects(e,r)})})})})},r.toComparators=function(e,r){return new ie(e,r).set.map(function(e){return e.map(function(e){return e.value}).join(" ").trim().split(" ")})},ie.prototype.test=function(e){if(!e)return!1;"string"==typeof e&&(e=new W(e,this.loose));for(var r=0;r",t)},r.outside=he,r.prerelease=function(e,r){var t=z(e,r);return t&&t.prerelease.length?t.prerelease:null},r.intersects=function(e,r,t){return e=new ie(e,t),r=new ie(r,t),e.intersects(r)},r.coerce=function(e){if(e instanceof W)return e;if("string"!=typeof e)return null;var r=e.match(o[C]);return null==r?null:z((r[1]||"0")+"."+(r[2]||"0")+"."+(r[3]||"0"))}}),semver_1=semver.SEMVER_SPEC_VERSION,semver_2=semver.re,semver_3=semver.src,semver_4=semver.parse,semver_5=semver.valid,semver_6=semver.clean,semver_7=semver.SemVer,semver_8=semver.inc,semver_9=semver.diff,semver_10=semver.compareIdentifiers,semver_11=semver.rcompareIdentifiers,semver_12=semver.major,semver_13=semver.minor,semver_14=semver.patch,semver_15=semver.compare,semver_16=semver.compareLoose,semver_17=semver.rcompare,semver_18=semver.sort,semver_19=semver.rsort,semver_20=semver.gt,semver_21=semver.lt,semver_22=semver.eq,semver_23=semver.neq,semver_24=semver.gte,semver_25=semver.lte,semver_26=semver.cmp,semver_27=semver.Comparator,semver_28=semver.Range,semver_29=semver.toComparators,semver_30=semver.satisfies,semver_31=semver.maxSatisfying,semver_32=semver.minSatisfying,semver_33=semver.validRange,semver_34=semver.ltr,semver_35=semver.gtr,semver_36=semver.outside,semver_37=semver.prerelease,semver_38=semver.intersects,semver_39=semver.coerce,commander=createCommonjsModule(function(e,r){var t=events.EventEmitter,n=child_process__default.spawn,s=path.dirname,o=path.basename;function i(e,r){this.flags=e,this.required=e.indexOf("<")>=0,this.optional=e.indexOf("[")>=0,this.bool=-1===e.indexOf("-no-"),(e=e.split(/[ ,|]+/)).length>1&&!/^[[<]/.test(e[1])&&(this.short=e.shift()),this.long=e.shift(),this.description=r||""}function a(e){this.commands=[],this.options=[],this._execs={},this._allowUnknownOption=!1,this._args=[],this._name=e||""}function c(e,r){var t=Math.max(0,r-e.length);return e+Array(t+1).join(" ")}function p(e,r){r=r||[];for(var t=0;t":"["+r+"]"}function h(e){try{if(fs__default.statSync(e).isFile())return!0}catch(e){return!1}}util.inherits(a,t),(r=e.exports=new a).Command=a,r.Option=i,i.prototype.name=function(){return this.long.replace("--","").replace("no-","")},i.prototype.attributeName=function(){return this.name().split("-").reduce(function(e,r){return e+r[0].toUpperCase()+r.slice(1)})},i.prototype.is=function(e){return this.short===e||this.long===e},a.prototype.command=function(e,r,t){"object"==typeof r&&null!==r&&(t=r,r=null),t=t||{};var n=e.split(/ +/),s=new a(n.shift());return r&&(s.description(r),this.executables=!0,this._execs[s._name]=!0,t.isDefault&&(this.defaultExecutable=s._name)),s._noHelp=!!t.noHelp,this.commands.push(s),s.parseExpectedArgs(n),s.parent=this,r?this:s},a.prototype.arguments=function(e){return this.parseExpectedArgs(e.split(/ +/))},a.prototype.addImplicitHelpCommand=function(){this.command("help [cmd]","display help for [cmd]")},a.prototype.parseExpectedArgs=function(e){if(e.length){var r=this;return e.forEach(function(e){var t={required:!1,name:"",variadic:!1};switch(e[0]){case"<":t.required=!0,t.name=e.slice(1,-1);break;case"[":t.name=e.slice(1,-1)}t.name.length>3&&"..."===t.name.slice(-3)&&(t.variadic=!0,t.name=t.name.slice(0,-3)),t.name&&r._args.push(t)}),this}},a.prototype.action=function(e){var r=this,t=function(t,n){t=t||[],n=n||[];var s=r.parseOptions(n);p(r,s.unknown),s.unknown.length>0&&r.unknownOption(s.unknown[0]),s.args.length&&(t=s.args.concat(t)),r._args.forEach(function(e,n){e.required&&null==t[n]?r.missingArgument(e.name):e.variadic&&(n!==r._args.length-1&&r.variadicArgNotLast(e.name),t[n]=t.splice(n))}),r._args.length?t[r._args.length]=r:t.push(r),e.apply(r,t)},n=this.parent||this,s=n===this?"*":this._name;return n.on("command:"+s,t),this._alias&&n.on("command:"+this._alias,t),this},a.prototype.option=function(e,r,t,n){var s=this,o=new i(e,r),a=o.name(),c=o.attributeName();if("function"!=typeof t)if(t instanceof RegExp){var p=t;t=function(e,r){var t=p.exec(e);return t?t[0]:r}}else n=t,t=null;return(!o.bool||o.optional||o.required)&&(o.bool||(n=!0),void 0!==n&&(s[c]=n,o.defaultValue=n)),this.options.push(o),this.on("option:"+a,function(e){null!==e&&t&&(e=t(e,void 0===s[c]?n:s[c])),"boolean"==typeof s[c]||void 0===s[c]?s[c]=null==e?!!o.bool&&(n||!0):e:null!==e&&(s[c]=e)}),this},a.prototype.allowUnknownOption=function(e){return this._allowUnknownOption=0===arguments.length||e,this},a.prototype.parse=function(e){this.executables&&this.addImplicitHelpCommand(),this.rawArgs=e,this._name=this._name||o(e[1],".js"),this.executables&&e.length<3&&!this.defaultExecutable&&e.push("--help");var r=this.parseOptions(this.normalize(e.slice(2))),t=this.args=r.args,n=this.parseArgs(this.args,r.unknown),s=n.args[0],i=null;return s&&(i=this.commands.filter(function(e){return e.alias()===s})[0]),this._execs[s]&&"function"!=typeof this._execs[s]?this.executeSubCommand(e,t,r.unknown):i?(t[0]=i._name,this.executeSubCommand(e,t,r.unknown)):this.defaultExecutable?(t.unshift(this.defaultExecutable),this.executeSubCommand(e,t,r.unknown)):n},a.prototype.executeSubCommand=function(e,r,t){(r=r.concat(t)).length||this.help(),"help"===r[0]&&1===r.length&&this.help(),"help"===r[0]&&(r[0]=r[1],r[1]="--help");var i,a=e[1],c=o(a,path.extname(a))+"-"+r[0],p=fs__default.lstatSync(a).isSymbolicLink()?fs__default.readlinkSync(a):a;p!==a&&"/"!==p.charAt(0)&&(p=path.join(s(a),p)),i=s(p);var u,l=path.join(i,c),m=!1;h(l+".js")?(c=l+".js",m=!0):h(l+".ts")?(c=l+".ts",m=!0):h(l)&&(c=l),r=r.slice(1),"win32"!==process.platform?m?(r.unshift(c),r=(process.execArgv||[]).concat(r),u=n(process.argv[0],r,{stdio:"inherit",customFds:[0,1,2]})):u=n(c,r,{stdio:"inherit",customFds:[0,1,2]}):(r.unshift(c),u=n(process.execPath,r,{stdio:"inherit"}));["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach(function(e){process.on(e,function(){!1===u.killed&&null===u.exitCode&&u.kill(e)})}),u.on("close",process.exit.bind(process)),u.on("error",function(e){"ENOENT"===e.code?console.error("error: %s(1) does not exist, try --help",c):"EACCES"===e.code&&console.error("error: %s(1) not executable. try chmod or run with root",c),process.exit(1)}),this.runningCommand=u},a.prototype.normalize=function(e){for(var r,t,n,s=[],o=0,i=e.length;o0&&(t=this.optionFor(e[o-1])),"--"===r){s=s.concat(e.slice(o));break}t&&t.required?s.push(r):r.length>1&&"-"===r[0]&&"-"!==r[1]?r.slice(1).split("").forEach(function(e){s.push("-"+e)}):/^--/.test(r)&&~(n=r.indexOf("="))?s.push(r.slice(0,n),r.slice(n+1)):s.push(r)}return s},a.prototype.parseArgs=function(e,r){var t;return e.length?(t=e[0],this.listeners("command:"+t).length?this.emit("command:"+e.shift(),e,r):this.emit("command:*",e)):(p(this,r),r.length>0&&this.unknownOption(r[0]),0===this.commands.length&&0===this._args.filter(function(e){return e.required}).length&&this.emit("command:*")),this},a.prototype.optionFor=function(e){for(var r=0,t=this.options.length;r1&&"-"===n[0]?(i.push(n),a+1e&&(e=this.largestArgLength()),this.commands&&this.commands.length&&this.largestCommandLength()>e&&(e=this.largestCommandLength()),e},a.prototype.optionHelp=function(){var e=this.padWidth();return this.options.map(function(r){return c(r.flags,e)+" "+r.description+(r.bool&&void 0!==r.defaultValue?" (default: "+JSON.stringify(r.defaultValue)+")":"")}).concat([c("-h, --help",e)+" output usage information"]).join("\n")},a.prototype.commandHelp=function(){if(!this.commands.length)return"";var e=this.prepareCommands(),r=this.padWidth();return["Commands:",e.map(function(e){var t=e[1]?" "+e[1]:"";return(t?c(e[0],r):e[0])+t}).join("\n").replace(/^/gm," "),""].join("\n")},a.prototype.helpInformation=function(){var e=[];if(this._description){e=[this._description,""];var r=this._argsDescription;if(r&&this._args.length){var t=this.padWidth();e.push("Arguments:"),e.push(""),this._args.forEach(function(n){e.push(" "+c(n.name,t)+" "+r[n.name])}),e.push("")}}var n=this._name;this._alias&&(n=n+"|"+this._alias);var s=["Usage: "+n+" "+this.usage(),""],o=[],i=this.commandHelp();i&&(o=[i]);var a=["Options:",""+this.optionHelp().replace(/^/gm," "),""];return s.concat(e).concat(a).concat(o).join("\n")},a.prototype.outputHelp=function(e){e||(e=function(e){return e}),process.stdout.write(e(this.helpInformation())),this.emit("--help")},a.prototype.help=function(e){this.outputHelp(e),process.exit()}}),commander_1=commander.Command,commander_2=commander.Option;const getNormalisedArgs=()=>{const e=process.argv;if(!process.mainModule){const r=e.shift();e.unshift(r,module.filename)}return e};commander.option("-i, --ignore-local-bin","Ignore any binaries in ./node_modules/.bin").option("-v, --verbose","Prints information about all the binaries detected").parse(getNormalisedArgs());const logger=console;commander.verbose||(logger.debug=(()=>{}));const getVersion=({command:e,localBinFolder:r,global:t=!0})=>{const n={PATH:process.env.PATH};return n.PATH=t?n.PATH.replace(`${r}${path.delimiter}`,""):`${r}${path.delimiter}${n.PATH}`,child_process.execSync(e,{env:n}).toString().replace("v","").trim()},checkVersion=(e,r)=>{let t=null;const n=path.join(process.cwd(),"package.json");try{t=require(n)}catch(e){logger.error(`Unable to find ${n}! 😱${os.EOL}`),logger.error(`Please ensure that this script is executed in the same directory.${os.EOL}`),process.exit(1)}t.engines&&t.engines[e]||(logger.error(`There is no engine named "${e}" specified in package.json! 😱${os.EOL}`),process.exit(1));const s=t.engines[e];let o=null,i=null,a=null,c=null,p=null;try{const t=child_process.execSync("npm bin").toString().trim(),n=fs.existsSync(`${t}${path.sep}${e}`);o=getVersion({command:r,localBinFolder:t}),c=semver.satisfies(o,s),logger.debug(`Expected ${e} version:\t${s}`),logger.debug(`╰─ Global ${e} version:\t${o}\t${c?"✅️":"❌️"}`),n&&(i=getVersion({command:r,localBinFolder:t,global:!1}),p=semver.satisfies(i,s),logger.debug(`╰─ Local ${e} version:\t${i}\t${p?"✅️":"❌️"} (from ${t})`)),a=commander.ignoreLocalBin?o:i||o,logger.debug(`╰─ (using: ${a})${os.EOL}`)}catch(r){logger.error(`Unable to get ${e} version! 😱${os.EOL}`),process.exit(1)}if(!semver.satisfies(a,s)){const r="https://github.com/Skyscanner/ensure-node-env/blob/master/README.md#guide";logger.error(`Expected ${e} version to match ${s}, but got ${a}. 😱${os.EOL}`),commander.verbose||logger.error(`(pass the --verbose flag to the script for a more detailed output)${os.EOL}`),logger.error(`Please follow Skyscanner's node environment guide (see ${r}).${os.EOL}`),process.exit(1)}};logger.info(`Checking node & npm versions...${os.EOL}`),checkVersion("node","node --version"),checkVersion("npm","npm -g --version"),logger.info(`${os.EOL}All good. 👍${os.EOL}`); From f7ee89a4642d2ca9cb84922a27956787b094035d Mon Sep 17 00:00:00 2001 From: Matthew Davidson Date: Thu, 29 Nov 2018 17:04:29 +0000 Subject: [PATCH 5/7] [squash] Ditch commander and process argv directly --- dist/cli.js | 2 +- dist/index.js | 2 +- index.js | 37 ++++++++----------------------------- package-lock.json | 6 +++--- package.json | 5 ++--- rollup.config.js | 3 +-- 6 files changed, 16 insertions(+), 39 deletions(-) diff --git a/dist/cli.js b/dist/cli.js index 4170ce5..fa2fd1b 100644 --- a/dist/cli.js +++ b/dist/cli.js @@ -1,2 +1,2 @@ #!/usr/bin/env node -"use strict";function _interopDefault(e){return e&&"object"==typeof e&&"default"in e?e.default:e}var os=require("os"),events=_interopDefault(require("events")),child_process=require("child_process"),child_process__default=_interopDefault(child_process),path=_interopDefault(require("path")),fs=require("fs"),fs__default=_interopDefault(fs),util=_interopDefault(require("util"));function createCommonjsModule(e,r){return e(r={exports:{}},r.exports),r.exports}var semver=createCommonjsModule(function(e,r){var t;r=e.exports=W,t="object"==typeof process&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?function(){var e=Array.prototype.slice.call(arguments,0);e.unshift("SEMVER"),console.log.apply(console,e)}:function(){},r.SEMVER_SPEC_VERSION="2.0.0";var n=256,s=Number.MAX_SAFE_INTEGER||9007199254740991,o=r.re=[],i=r.src=[],a=0,c=a++;i[c]="0|[1-9]\\d*";var p=a++;i[p]="[0-9]+";var u=a++;i[u]="\\d*[a-zA-Z-][a-zA-Z0-9-]*";var h=a++;i[h]="("+i[c]+")\\.("+i[c]+")\\.("+i[c]+")";var l=a++;i[l]="("+i[p]+")\\.("+i[p]+")\\.("+i[p]+")";var m=a++;i[m]="(?:"+i[c]+"|"+i[u]+")";var f=a++;i[f]="(?:"+i[p]+"|"+i[u]+")";var v=a++;i[v]="(?:-("+i[m]+"(?:\\."+i[m]+")*))";var g=a++;i[g]="(?:-?("+i[f]+"(?:\\."+i[f]+")*))";var d=a++;i[d]="[0-9A-Za-z-]+";var _=a++;i[_]="(?:\\+("+i[d]+"(?:\\."+i[d]+")*))";var y=a++,w="v?"+i[h]+i[v]+"?"+i[_]+"?";i[y]="^"+w+"$";var b="[v=\\s]*"+i[l]+i[g]+"?"+i[_]+"?",E=a++;i[E]="^"+b+"$";var x=a++;i[x]="((?:<|>)?=?)";var $=a++;i[$]=i[p]+"|x|X|\\*";var j=a++;i[j]=i[c]+"|x|X|\\*";var k=a++;i[k]="[v=\\s]*("+i[j]+")(?:\\.("+i[j]+")(?:\\.("+i[j]+")(?:"+i[v]+")?"+i[_]+"?)?)?";var S=a++;i[S]="[v=\\s]*("+i[$]+")(?:\\.("+i[$]+")(?:\\.("+i[$]+")(?:"+i[g]+")?"+i[_]+"?)?)?";var O=a++;i[O]="^"+i[x]+"\\s*"+i[k]+"$";var A=a++;i[A]="^"+i[x]+"\\s*"+i[S]+"$";var C=a++;i[C]="(?:^|[^\\d])(\\d{1,16})(?:\\.(\\d{1,16}))?(?:\\.(\\d{1,16}))?(?:$|[^\\d])";var L=a++;i[L]="(?:~>?)";var I=a++;i[I]="(\\s*)"+i[L]+"\\s+",o[I]=new RegExp(i[I],"g");var R=a++;i[R]="^"+i[L]+i[k]+"$";var q=a++;i[q]="^"+i[L]+i[S]+"$";var T=a++;i[T]="(?:\\^)";var N=a++;i[N]="(\\s*)"+i[T]+"\\s+",o[N]=new RegExp(i[N],"g");var V=a++;i[V]="^"+i[T]+i[k]+"$";var M=a++;i[M]="^"+i[T]+i[S]+"$";var H=a++;i[H]="^"+i[x]+"\\s*("+b+")$|^$";var D=a++;i[D]="^"+i[x]+"\\s*("+w+")$|^$";var P=a++;i[P]="(\\s*)"+i[x]+"\\s*("+b+"|"+i[k]+")",o[P]=new RegExp(i[P],"g");var U=a++;i[U]="^\\s*("+i[k]+")\\s+-\\s+("+i[k]+")\\s*$";var F=a++;i[F]="^\\s*("+i[S]+")\\s+-\\s+("+i[S]+")\\s*$";var G=a++;i[G]="(<|>)?=?\\s*\\*";for(var B=0;B<35;B++)t(B,i[B]),o[B]||(o[B]=new RegExp(i[B]));function z(e,r){if(e instanceof W)return e;if("string"!=typeof e)return null;if(e.length>n)return null;if(!(r?o[E]:o[y]).test(e))return null;try{return new W(e,r)}catch(e){return null}}function W(e,r){if(e instanceof W){if(e.loose===r)return e;e=e.version}else if("string"!=typeof e)throw new TypeError("Invalid Version: "+e);if(e.length>n)throw new TypeError("version is longer than "+n+" characters");if(!(this instanceof W))return new W(e,r);t("SemVer",e,r),this.loose=r;var i=e.trim().match(r?o[E]:o[y]);if(!i)throw new TypeError("Invalid Version: "+e);if(this.raw=e,this.major=+i[1],this.minor=+i[2],this.patch=+i[3],this.major>s||this.major<0)throw new TypeError("Invalid major version");if(this.minor>s||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>s||this.patch<0)throw new TypeError("Invalid patch version");i[4]?this.prerelease=i[4].split(".").map(function(e){if(/^[0-9]+$/.test(e)){var r=+e;if(r>=0&&r=0;)"number"==typeof this.prerelease[t]&&(this.prerelease[t]++,t=-2);-1===t&&this.prerelease.push(0)}r&&(this.prerelease[0]===r?isNaN(this.prerelease[1])&&(this.prerelease=[r,0]):this.prerelease=[r,0]);break;default:throw new Error("invalid increment argument: "+e)}return this.format(),this.raw=this.version,this},r.inc=function(e,r,t,n){"string"==typeof t&&(n=t,t=void 0);try{return new W(e,t).inc(r,n).version}catch(e){return null}},r.diff=function(e,r){if(Y(e,r))return null;var t=z(e),n=z(r);if(t.prerelease.length||n.prerelease.length){for(var s in t)if(("major"===s||"minor"===s||"patch"===s)&&t[s]!==n[s])return"pre"+s;return"prerelease"}for(var s in t)if(("major"===s||"minor"===s||"patch"===s)&&t[s]!==n[s])return s},r.compareIdentifiers=Z;var X=/^[0-9]+$/;function Z(e,r){var t=X.test(e),n=X.test(r);return t&&n&&(e=+e,r=+r),t&&!n?-1:n&&!t?1:er?1:0}function J(e,r,t){return new W(e,t).compare(new W(r,t))}function K(e,r,t){return J(e,r,t)>0}function Q(e,r,t){return J(e,r,t)<0}function Y(e,r,t){return 0===J(e,r,t)}function ee(e,r,t){return 0!==J(e,r,t)}function re(e,r,t){return J(e,r,t)>=0}function te(e,r,t){return J(e,r,t)<=0}function ne(e,r,t,n){var s;switch(r){case"===":"object"==typeof e&&(e=e.version),"object"==typeof t&&(t=t.version),s=e===t;break;case"!==":"object"==typeof e&&(e=e.version),"object"==typeof t&&(t=t.version),s=e!==t;break;case"":case"=":case"==":s=Y(e,t,n);break;case"!=":s=ee(e,t,n);break;case">":s=K(e,t,n);break;case">=":s=re(e,t,n);break;case"<":s=Q(e,t,n);break;case"<=":s=te(e,t,n);break;default:throw new TypeError("Invalid operator: "+r)}return s}function se(e,r){if(e instanceof se){if(e.loose===r)return e;e=e.value}if(!(this instanceof se))return new se(e,r);t("comparator",e,r),this.loose=r,this.parse(e),this.semver===oe?this.value="":this.value=this.operator+this.semver.version,t("comp",this)}r.rcompareIdentifiers=function(e,r){return Z(r,e)},r.major=function(e,r){return new W(e,r).major},r.minor=function(e,r){return new W(e,r).minor},r.patch=function(e,r){return new W(e,r).patch},r.compare=J,r.compareLoose=function(e,r){return J(e,r,!0)},r.rcompare=function(e,r,t){return J(r,e,t)},r.sort=function(e,t){return e.sort(function(e,n){return r.compare(e,n,t)})},r.rsort=function(e,t){return e.sort(function(e,n){return r.rcompare(e,n,t)})},r.gt=K,r.lt=Q,r.eq=Y,r.neq=ee,r.gte=re,r.lte=te,r.cmp=ne,r.Comparator=se;var oe={};function ie(e,r){if(e instanceof ie)return e.loose===r?e:new ie(e.raw,r);if(e instanceof se)return new ie(e.value,r);if(!(this instanceof ie))return new ie(e,r);if(this.loose=r,this.raw=e,this.set=e.split(/\s*\|\|\s*/).map(function(e){return this.parseRange(e.trim())},this).filter(function(e){return e.length}),!this.set.length)throw new TypeError("Invalid SemVer Range: "+e);this.format()}function ae(e){return!e||"x"===e.toLowerCase()||"*"===e}function ce(e,r,t,n,s,o,i,a,c,p,u,h,l){return((r=ae(t)?"":ae(n)?">="+t+".0.0":ae(s)?">="+t+"."+n+".0":">="+r)+" "+(a=ae(c)?"":ae(p)?"<"+(+c+1)+".0.0":ae(u)?"<"+c+"."+(+p+1)+".0":h?"<="+c+"."+p+"."+u+"-"+h:"<="+a)).trim()}function pe(e,r){for(var n=0;n0){var s=e[n].semver;if(s.major===r.major&&s.minor===r.minor&&s.patch===r.patch)return!0}return!1}return!0}function ue(e,r,t){try{r=new ie(r,t)}catch(e){return!1}return r.test(e)}function he(e,r,t,n){var s,o,i,a,c;switch(e=new W(e,n),r=new ie(r,n),t){case">":s=K,o=te,i=Q,a=">",c=">=";break;case"<":s=Q,o=re,i=K,a="<",c="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(ue(e,r,n))return!1;for(var p=0;p=0.0.0")),h=h||e,l=l||e,s(e.semver,h.semver,n)?h=e:i(e.semver,l.semver,n)&&(l=e)}),h.operator===a||h.operator===c)return!1;if((!l.operator||l.operator===a)&&o(e,l.semver))return!1;if(l.operator===c&&i(e,l.semver))return!1}return!0}se.prototype.parse=function(e){var r=this.loose?o[H]:o[D],t=e.match(r);if(!t)throw new TypeError("Invalid comparator: "+e);this.operator=t[1],"="===this.operator&&(this.operator=""),t[2]?this.semver=new W(t[2],this.loose):this.semver=oe},se.prototype.toString=function(){return this.value},se.prototype.test=function(e){return t("Comparator.test",e,this.loose),this.semver===oe||("string"==typeof e&&(e=new W(e,this.loose)),ne(e,this.operator,this.semver,this.loose))},se.prototype.intersects=function(e,r){if(!(e instanceof se))throw new TypeError("a Comparator is required");var t;if(""===this.operator)return t=new ie(e.value,r),ue(this.value,t,r);if(""===e.operator)return t=new ie(this.value,r),ue(e.semver,t,r);var n=!(">="!==this.operator&&">"!==this.operator||">="!==e.operator&&">"!==e.operator),s=!("<="!==this.operator&&"<"!==this.operator||"<="!==e.operator&&"<"!==e.operator),o=this.semver.version===e.semver.version,i=!(">="!==this.operator&&"<="!==this.operator||">="!==e.operator&&"<="!==e.operator),a=ne(this.semver,"<",e.semver,r)&&(">="===this.operator||">"===this.operator)&&("<="===e.operator||"<"===e.operator),c=ne(this.semver,">",e.semver,r)&&("<="===this.operator||"<"===this.operator)&&(">="===e.operator||">"===e.operator);return n||s||o&&i||a||c},r.Range=ie,ie.prototype.format=function(){return this.range=this.set.map(function(e){return e.join(" ").trim()}).join("||").trim(),this.range},ie.prototype.toString=function(){return this.range},ie.prototype.parseRange=function(e){var r=this.loose;e=e.trim(),t("range",e,r);var n=r?o[F]:o[U];e=e.replace(n,ce),t("hyphen replace",e),e=e.replace(o[P],"$1$2$3"),t("comparator trim",e,o[P]),e=(e=(e=e.replace(o[I],"$1~")).replace(o[N],"$1^")).split(/\s+/).join(" ");var s=r?o[H]:o[D],i=e.split(" ").map(function(e){return function(e,r){return t("comp",e),e=function(e,r){return e.trim().split(/\s+/).map(function(e){return function(e,r){t("caret",e,r);var n=r?o[M]:o[V];return e.replace(n,function(r,n,s,o,i){var a;return t("caret",e,r,n,s,o,i),ae(n)?a="":ae(s)?a=">="+n+".0.0 <"+(+n+1)+".0.0":ae(o)?a="0"===n?">="+n+"."+s+".0 <"+n+"."+(+s+1)+".0":">="+n+"."+s+".0 <"+(+n+1)+".0.0":i?(t("replaceCaret pr",i),"-"!==i.charAt(0)&&(i="-"+i),a="0"===n?"0"===s?">="+n+"."+s+"."+o+i+" <"+n+"."+s+"."+(+o+1):">="+n+"."+s+"."+o+i+" <"+n+"."+(+s+1)+".0":">="+n+"."+s+"."+o+i+" <"+(+n+1)+".0.0"):(t("no pr"),a="0"===n?"0"===s?">="+n+"."+s+"."+o+" <"+n+"."+s+"."+(+o+1):">="+n+"."+s+"."+o+" <"+n+"."+(+s+1)+".0":">="+n+"."+s+"."+o+" <"+(+n+1)+".0.0"),t("caret return",a),a})}(e,r)}).join(" ")}(e,r),t("caret",e),e=function(e,r){return e.trim().split(/\s+/).map(function(e){return function(e,r){var n=r?o[q]:o[R];return e.replace(n,function(r,n,s,o,i){var a;return t("tilde",e,r,n,s,o,i),ae(n)?a="":ae(s)?a=">="+n+".0.0 <"+(+n+1)+".0.0":ae(o)?a=">="+n+"."+s+".0 <"+n+"."+(+s+1)+".0":i?(t("replaceTilde pr",i),"-"!==i.charAt(0)&&(i="-"+i),a=">="+n+"."+s+"."+o+i+" <"+n+"."+(+s+1)+".0"):a=">="+n+"."+s+"."+o+" <"+n+"."+(+s+1)+".0",t("tilde return",a),a})}(e,r)}).join(" ")}(e,r),t("tildes",e),e=function(e,r){return t("replaceXRanges",e,r),e.split(/\s+/).map(function(e){return function(e,r){e=e.trim();var n=r?o[A]:o[O];return e.replace(n,function(r,n,s,o,i,a){t("xRange",e,r,n,s,o,i,a);var c=ae(s),p=c||ae(o),u=p||ae(i),h=u;return"="===n&&h&&(n=""),c?r=">"===n||"<"===n?"<0.0.0":"*":n&&h?(p&&(o=0),u&&(i=0),">"===n?(n=">=",p?(s=+s+1,o=0,i=0):u&&(o=+o+1,i=0)):"<="===n&&(n="<",p?s=+s+1:o=+o+1),r=n+s+"."+o+"."+i):p?r=">="+s+".0.0 <"+(+s+1)+".0.0":u&&(r=">="+s+"."+o+".0 <"+s+"."+(+o+1)+".0"),t("xRange return",r),r})}(e,r)}).join(" ")}(e,r),t("xrange",e),e=function(e,r){return t("replaceStars",e,r),e.trim().replace(o[G],"")}(e,r),t("stars",e),e}(e,r)}).join(" ").split(/\s+/);return this.loose&&(i=i.filter(function(e){return!!e.match(s)})),i=i.map(function(e){return new se(e,r)})},ie.prototype.intersects=function(e,r){if(!(e instanceof ie))throw new TypeError("a Range is required");return this.set.some(function(t){return t.every(function(t){return e.set.some(function(e){return e.every(function(e){return t.intersects(e,r)})})})})},r.toComparators=function(e,r){return new ie(e,r).set.map(function(e){return e.map(function(e){return e.value}).join(" ").trim().split(" ")})},ie.prototype.test=function(e){if(!e)return!1;"string"==typeof e&&(e=new W(e,this.loose));for(var r=0;r",t)},r.outside=he,r.prerelease=function(e,r){var t=z(e,r);return t&&t.prerelease.length?t.prerelease:null},r.intersects=function(e,r,t){return e=new ie(e,t),r=new ie(r,t),e.intersects(r)},r.coerce=function(e){if(e instanceof W)return e;if("string"!=typeof e)return null;var r=e.match(o[C]);return null==r?null:z((r[1]||"0")+"."+(r[2]||"0")+"."+(r[3]||"0"))}}),semver_1=semver.SEMVER_SPEC_VERSION,semver_2=semver.re,semver_3=semver.src,semver_4=semver.parse,semver_5=semver.valid,semver_6=semver.clean,semver_7=semver.SemVer,semver_8=semver.inc,semver_9=semver.diff,semver_10=semver.compareIdentifiers,semver_11=semver.rcompareIdentifiers,semver_12=semver.major,semver_13=semver.minor,semver_14=semver.patch,semver_15=semver.compare,semver_16=semver.compareLoose,semver_17=semver.rcompare,semver_18=semver.sort,semver_19=semver.rsort,semver_20=semver.gt,semver_21=semver.lt,semver_22=semver.eq,semver_23=semver.neq,semver_24=semver.gte,semver_25=semver.lte,semver_26=semver.cmp,semver_27=semver.Comparator,semver_28=semver.Range,semver_29=semver.toComparators,semver_30=semver.satisfies,semver_31=semver.maxSatisfying,semver_32=semver.minSatisfying,semver_33=semver.validRange,semver_34=semver.ltr,semver_35=semver.gtr,semver_36=semver.outside,semver_37=semver.prerelease,semver_38=semver.intersects,semver_39=semver.coerce,commander=createCommonjsModule(function(e,r){var t=events.EventEmitter,n=child_process__default.spawn,s=path.dirname,o=path.basename;function i(e,r){this.flags=e,this.required=e.indexOf("<")>=0,this.optional=e.indexOf("[")>=0,this.bool=-1===e.indexOf("-no-"),(e=e.split(/[ ,|]+/)).length>1&&!/^[[<]/.test(e[1])&&(this.short=e.shift()),this.long=e.shift(),this.description=r||""}function a(e){this.commands=[],this.options=[],this._execs={},this._allowUnknownOption=!1,this._args=[],this._name=e||""}function c(e,r){var t=Math.max(0,r-e.length);return e+Array(t+1).join(" ")}function p(e,r){r=r||[];for(var t=0;t":"["+r+"]"}function h(e){try{if(fs__default.statSync(e).isFile())return!0}catch(e){return!1}}util.inherits(a,t),(r=e.exports=new a).Command=a,r.Option=i,i.prototype.name=function(){return this.long.replace("--","").replace("no-","")},i.prototype.attributeName=function(){return this.name().split("-").reduce(function(e,r){return e+r[0].toUpperCase()+r.slice(1)})},i.prototype.is=function(e){return this.short===e||this.long===e},a.prototype.command=function(e,r,t){"object"==typeof r&&null!==r&&(t=r,r=null),t=t||{};var n=e.split(/ +/),s=new a(n.shift());return r&&(s.description(r),this.executables=!0,this._execs[s._name]=!0,t.isDefault&&(this.defaultExecutable=s._name)),s._noHelp=!!t.noHelp,this.commands.push(s),s.parseExpectedArgs(n),s.parent=this,r?this:s},a.prototype.arguments=function(e){return this.parseExpectedArgs(e.split(/ +/))},a.prototype.addImplicitHelpCommand=function(){this.command("help [cmd]","display help for [cmd]")},a.prototype.parseExpectedArgs=function(e){if(e.length){var r=this;return e.forEach(function(e){var t={required:!1,name:"",variadic:!1};switch(e[0]){case"<":t.required=!0,t.name=e.slice(1,-1);break;case"[":t.name=e.slice(1,-1)}t.name.length>3&&"..."===t.name.slice(-3)&&(t.variadic=!0,t.name=t.name.slice(0,-3)),t.name&&r._args.push(t)}),this}},a.prototype.action=function(e){var r=this,t=function(t,n){t=t||[],n=n||[];var s=r.parseOptions(n);p(r,s.unknown),s.unknown.length>0&&r.unknownOption(s.unknown[0]),s.args.length&&(t=s.args.concat(t)),r._args.forEach(function(e,n){e.required&&null==t[n]?r.missingArgument(e.name):e.variadic&&(n!==r._args.length-1&&r.variadicArgNotLast(e.name),t[n]=t.splice(n))}),r._args.length?t[r._args.length]=r:t.push(r),e.apply(r,t)},n=this.parent||this,s=n===this?"*":this._name;return n.on("command:"+s,t),this._alias&&n.on("command:"+this._alias,t),this},a.prototype.option=function(e,r,t,n){var s=this,o=new i(e,r),a=o.name(),c=o.attributeName();if("function"!=typeof t)if(t instanceof RegExp){var p=t;t=function(e,r){var t=p.exec(e);return t?t[0]:r}}else n=t,t=null;return(!o.bool||o.optional||o.required)&&(o.bool||(n=!0),void 0!==n&&(s[c]=n,o.defaultValue=n)),this.options.push(o),this.on("option:"+a,function(e){null!==e&&t&&(e=t(e,void 0===s[c]?n:s[c])),"boolean"==typeof s[c]||void 0===s[c]?s[c]=null==e?!!o.bool&&(n||!0):e:null!==e&&(s[c]=e)}),this},a.prototype.allowUnknownOption=function(e){return this._allowUnknownOption=0===arguments.length||e,this},a.prototype.parse=function(e){this.executables&&this.addImplicitHelpCommand(),this.rawArgs=e,this._name=this._name||o(e[1],".js"),this.executables&&e.length<3&&!this.defaultExecutable&&e.push("--help");var r=this.parseOptions(this.normalize(e.slice(2))),t=this.args=r.args,n=this.parseArgs(this.args,r.unknown),s=n.args[0],i=null;return s&&(i=this.commands.filter(function(e){return e.alias()===s})[0]),this._execs[s]&&"function"!=typeof this._execs[s]?this.executeSubCommand(e,t,r.unknown):i?(t[0]=i._name,this.executeSubCommand(e,t,r.unknown)):this.defaultExecutable?(t.unshift(this.defaultExecutable),this.executeSubCommand(e,t,r.unknown)):n},a.prototype.executeSubCommand=function(e,r,t){(r=r.concat(t)).length||this.help(),"help"===r[0]&&1===r.length&&this.help(),"help"===r[0]&&(r[0]=r[1],r[1]="--help");var i,a=e[1],c=o(a,path.extname(a))+"-"+r[0],p=fs__default.lstatSync(a).isSymbolicLink()?fs__default.readlinkSync(a):a;p!==a&&"/"!==p.charAt(0)&&(p=path.join(s(a),p)),i=s(p);var u,l=path.join(i,c),m=!1;h(l+".js")?(c=l+".js",m=!0):h(l+".ts")?(c=l+".ts",m=!0):h(l)&&(c=l),r=r.slice(1),"win32"!==process.platform?m?(r.unshift(c),r=(process.execArgv||[]).concat(r),u=n(process.argv[0],r,{stdio:"inherit",customFds:[0,1,2]})):u=n(c,r,{stdio:"inherit",customFds:[0,1,2]}):(r.unshift(c),u=n(process.execPath,r,{stdio:"inherit"}));["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach(function(e){process.on(e,function(){!1===u.killed&&null===u.exitCode&&u.kill(e)})}),u.on("close",process.exit.bind(process)),u.on("error",function(e){"ENOENT"===e.code?console.error("error: %s(1) does not exist, try --help",c):"EACCES"===e.code&&console.error("error: %s(1) not executable. try chmod or run with root",c),process.exit(1)}),this.runningCommand=u},a.prototype.normalize=function(e){for(var r,t,n,s=[],o=0,i=e.length;o0&&(t=this.optionFor(e[o-1])),"--"===r){s=s.concat(e.slice(o));break}t&&t.required?s.push(r):r.length>1&&"-"===r[0]&&"-"!==r[1]?r.slice(1).split("").forEach(function(e){s.push("-"+e)}):/^--/.test(r)&&~(n=r.indexOf("="))?s.push(r.slice(0,n),r.slice(n+1)):s.push(r)}return s},a.prototype.parseArgs=function(e,r){var t;return e.length?(t=e[0],this.listeners("command:"+t).length?this.emit("command:"+e.shift(),e,r):this.emit("command:*",e)):(p(this,r),r.length>0&&this.unknownOption(r[0]),0===this.commands.length&&0===this._args.filter(function(e){return e.required}).length&&this.emit("command:*")),this},a.prototype.optionFor=function(e){for(var r=0,t=this.options.length;r1&&"-"===n[0]?(i.push(n),a+1e&&(e=this.largestArgLength()),this.commands&&this.commands.length&&this.largestCommandLength()>e&&(e=this.largestCommandLength()),e},a.prototype.optionHelp=function(){var e=this.padWidth();return this.options.map(function(r){return c(r.flags,e)+" "+r.description+(r.bool&&void 0!==r.defaultValue?" (default: "+JSON.stringify(r.defaultValue)+")":"")}).concat([c("-h, --help",e)+" output usage information"]).join("\n")},a.prototype.commandHelp=function(){if(!this.commands.length)return"";var e=this.prepareCommands(),r=this.padWidth();return["Commands:",e.map(function(e){var t=e[1]?" "+e[1]:"";return(t?c(e[0],r):e[0])+t}).join("\n").replace(/^/gm," "),""].join("\n")},a.prototype.helpInformation=function(){var e=[];if(this._description){e=[this._description,""];var r=this._argsDescription;if(r&&this._args.length){var t=this.padWidth();e.push("Arguments:"),e.push(""),this._args.forEach(function(n){e.push(" "+c(n.name,t)+" "+r[n.name])}),e.push("")}}var n=this._name;this._alias&&(n=n+"|"+this._alias);var s=["Usage: "+n+" "+this.usage(),""],o=[],i=this.commandHelp();i&&(o=[i]);var a=["Options:",""+this.optionHelp().replace(/^/gm," "),""];return s.concat(e).concat(a).concat(o).join("\n")},a.prototype.outputHelp=function(e){e||(e=function(e){return e}),process.stdout.write(e(this.helpInformation())),this.emit("--help")},a.prototype.help=function(e){this.outputHelp(e),process.exit()}}),commander_1=commander.Command,commander_2=commander.Option;const getNormalisedArgs=()=>{const e=process.argv;if(!process.mainModule){const r=e.shift();e.unshift(r,module.filename)}return e};commander.option("-i, --ignore-local-bin","Ignore any binaries in ./node_modules/.bin").option("-v, --verbose","Prints information about all the binaries detected").parse(getNormalisedArgs());const logger=console;commander.verbose||(logger.debug=(()=>{}));const getVersion=({command:e,localBinFolder:r,global:t=!0})=>{const n={PATH:process.env.PATH};return n.PATH=t?n.PATH.replace(`${r}${path.delimiter}`,""):`${r}${path.delimiter}${n.PATH}`,child_process.execSync(e,{env:n}).toString().replace("v","").trim()},checkVersion=(e,r)=>{let t=null;const n=path.join(process.cwd(),"package.json");try{t=require(n)}catch(e){logger.error(`Unable to find ${n}! 😱${os.EOL}`),logger.error(`Please ensure that this script is executed in the same directory.${os.EOL}`),process.exit(1)}t.engines&&t.engines[e]||(logger.error(`There is no engine named "${e}" specified in package.json! 😱${os.EOL}`),process.exit(1));const s=t.engines[e];let o=null,i=null,a=null,c=null,p=null;try{const t=child_process.execSync("npm bin").toString().trim(),n=fs.existsSync(`${t}${path.sep}${e}`);o=getVersion({command:r,localBinFolder:t}),c=semver.satisfies(o,s),logger.debug(`Expected ${e} version:\t${s}`),logger.debug(`╰─ Global ${e} version:\t${o}\t${c?"✅️":"❌️"}`),n&&(i=getVersion({command:r,localBinFolder:t,global:!1}),p=semver.satisfies(i,s),logger.debug(`╰─ Local ${e} version:\t${i}\t${p?"✅️":"❌️"} (from ${t})`)),a=commander.ignoreLocalBin?o:i||o,logger.debug(`╰─ (using: ${a})${os.EOL}`)}catch(r){logger.error(`Unable to get ${e} version! 😱${os.EOL}`),process.exit(1)}if(!semver.satisfies(a,s)){const r="https://github.com/Skyscanner/ensure-node-env/blob/master/README.md#guide";logger.error(`Expected ${e} version to match ${s}, but got ${a}. 😱${os.EOL}`),commander.verbose||logger.error(`(pass the --verbose flag to the script for a more detailed output)${os.EOL}`),logger.error(`Please follow Skyscanner's node environment guide (see ${r}).${os.EOL}`),process.exit(1)}};logger.info(`Checking node & npm versions...${os.EOL}`),checkVersion("node","node --version"),checkVersion("npm","npm -g --version"),logger.info(`${os.EOL}All good. 👍${os.EOL}`); +"use strict";function _interopDefault(e){return e&&"object"==typeof e&&"default"in e?e.default:e}var path=_interopDefault(require("path")),child_process=require("child_process"),fs=require("fs"),os=require("os");function createCommonjsModule(e,r){return e(r={exports:{}},r.exports),r.exports}var semver=createCommonjsModule(function(e,r){var t;r=e.exports=z,t="object"==typeof process&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?function(){var e=Array.prototype.slice.call(arguments,0);e.unshift("SEMVER"),console.log.apply(console,e)}:function(){},r.SEMVER_SPEC_VERSION="2.0.0";var n=256,s=Number.MAX_SAFE_INTEGER||9007199254740991,o=r.re=[],i=r.src=[],a=0,c=a++;i[c]="0|[1-9]\\d*";var p=a++;i[p]="[0-9]+";var u=a++;i[u]="\\d*[a-zA-Z-][a-zA-Z0-9-]*";var l=a++;i[l]="("+i[c]+")\\.("+i[c]+")\\.("+i[c]+")";var v=a++;i[v]="("+i[p]+")\\.("+i[p]+")\\.("+i[p]+")";var h=a++;i[h]="(?:"+i[c]+"|"+i[u]+")";var m=a++;i[m]="(?:"+i[p]+"|"+i[u]+")";var f=a++;i[f]="(?:-("+i[h]+"(?:\\."+i[h]+")*))";var g=a++;i[g]="(?:-?("+i[m]+"(?:\\."+i[m]+")*))";var d=a++;i[d]="[0-9A-Za-z-]+";var w=a++;i[w]="(?:\\+("+i[d]+"(?:\\."+i[d]+")*))";var y=a++,$="v?"+i[l]+i[f]+"?"+i[w]+"?";i[y]="^"+$+"$";var _="[v=\\s]*"+i[v]+i[g]+"?"+i[w]+"?",E=a++;i[E]="^"+_+"$";var b=a++;i[b]="((?:<|>)?=?)";var j=a++;i[j]=i[p]+"|x|X|\\*";var x=a++;i[x]=i[c]+"|x|X|\\*";var S=a++;i[S]="[v=\\s]*("+i[x]+")(?:\\.("+i[x]+")(?:\\.("+i[x]+")(?:"+i[f]+")?"+i[w]+"?)?)?";var k=a++;i[k]="[v=\\s]*("+i[j]+")(?:\\.("+i[j]+")(?:\\.("+i[j]+")(?:"+i[g]+")?"+i[w]+"?)?)?";var R=a++;i[R]="^"+i[b]+"\\s*"+i[S]+"$";var T=a++;i[T]="^"+i[b]+"\\s*"+i[k]+"$";var O=a++;i[O]="(?:^|[^\\d])(\\d{1,16})(?:\\.(\\d{1,16}))?(?:\\.(\\d{1,16}))?(?:$|[^\\d])";var V=a++;i[V]="(?:~>?)";var L=a++;i[L]="(\\s*)"+i[V]+"\\s+",o[L]=new RegExp(i[L],"g");var A=a++;i[A]="^"+i[V]+i[S]+"$";var I=a++;i[I]="^"+i[V]+i[k]+"$";var C=a++;i[C]="(?:\\^)";var q=a++;i[q]="(\\s*)"+i[C]+"\\s+",o[q]=new RegExp(i[q],"g");var P=a++;i[P]="^"+i[C]+i[S]+"$";var M=a++;i[M]="^"+i[C]+i[k]+"$";var N=a++;i[N]="^"+i[b]+"\\s*("+_+")$|^$";var B=a++;i[B]="^"+i[b]+"\\s*("+$+")$|^$";var D=a++;i[D]="(\\s*)"+i[b]+"\\s*("+_+"|"+i[S]+")",o[D]=new RegExp(i[D],"g");var H=a++;i[H]="^\\s*("+i[S]+")\\s+-\\s+("+i[S]+")\\s*$";var F=a++;i[F]="^\\s*("+i[k]+")\\s+-\\s+("+i[k]+")\\s*$";var G=a++;i[G]="(<|>)?=?\\s*\\*";for(var U=0;U<35;U++)t(U,i[U]),o[U]||(o[U]=new RegExp(i[U]));function X(e,r){if(e instanceof z)return e;if("string"!=typeof e)return null;if(e.length>n)return null;if(!(r?o[E]:o[y]).test(e))return null;try{return new z(e,r)}catch(e){return null}}function z(e,r){if(e instanceof z){if(e.loose===r)return e;e=e.version}else if("string"!=typeof e)throw new TypeError("Invalid Version: "+e);if(e.length>n)throw new TypeError("version is longer than "+n+" characters");if(!(this instanceof z))return new z(e,r);t("SemVer",e,r),this.loose=r;var i=e.trim().match(r?o[E]:o[y]);if(!i)throw new TypeError("Invalid Version: "+e);if(this.raw=e,this.major=+i[1],this.minor=+i[2],this.patch=+i[3],this.major>s||this.major<0)throw new TypeError("Invalid major version");if(this.minor>s||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>s||this.patch<0)throw new TypeError("Invalid patch version");i[4]?this.prerelease=i[4].split(".").map(function(e){if(/^[0-9]+$/.test(e)){var r=+e;if(r>=0&&r=0;)"number"==typeof this.prerelease[t]&&(this.prerelease[t]++,t=-2);-1===t&&this.prerelease.push(0)}r&&(this.prerelease[0]===r?isNaN(this.prerelease[1])&&(this.prerelease=[r,0]):this.prerelease=[r,0]);break;default:throw new Error("invalid increment argument: "+e)}return this.format(),this.raw=this.version,this},r.inc=function(e,r,t,n){"string"==typeof t&&(n=t,t=void 0);try{return new z(e,t).inc(r,n).version}catch(e){return null}},r.diff=function(e,r){if(Y(e,r))return null;var t=X(e),n=X(r);if(t.prerelease.length||n.prerelease.length){for(var s in t)if(("major"===s||"minor"===s||"patch"===s)&&t[s]!==n[s])return"pre"+s;return"prerelease"}for(var s in t)if(("major"===s||"minor"===s||"patch"===s)&&t[s]!==n[s])return s},r.compareIdentifiers=J;var Z=/^[0-9]+$/;function J(e,r){var t=Z.test(e),n=Z.test(r);return t&&n&&(e=+e,r=+r),t&&!n?-1:n&&!t?1:er?1:0}function K(e,r,t){return new z(e,t).compare(new z(r,t))}function Q(e,r,t){return K(e,r,t)>0}function W(e,r,t){return K(e,r,t)<0}function Y(e,r,t){return 0===K(e,r,t)}function ee(e,r,t){return 0!==K(e,r,t)}function re(e,r,t){return K(e,r,t)>=0}function te(e,r,t){return K(e,r,t)<=0}function ne(e,r,t,n){var s;switch(r){case"===":"object"==typeof e&&(e=e.version),"object"==typeof t&&(t=t.version),s=e===t;break;case"!==":"object"==typeof e&&(e=e.version),"object"==typeof t&&(t=t.version),s=e!==t;break;case"":case"=":case"==":s=Y(e,t,n);break;case"!=":s=ee(e,t,n);break;case">":s=Q(e,t,n);break;case">=":s=re(e,t,n);break;case"<":s=W(e,t,n);break;case"<=":s=te(e,t,n);break;default:throw new TypeError("Invalid operator: "+r)}return s}function se(e,r){if(e instanceof se){if(e.loose===r)return e;e=e.value}if(!(this instanceof se))return new se(e,r);t("comparator",e,r),this.loose=r,this.parse(e),this.semver===oe?this.value="":this.value=this.operator+this.semver.version,t("comp",this)}r.rcompareIdentifiers=function(e,r){return J(r,e)},r.major=function(e,r){return new z(e,r).major},r.minor=function(e,r){return new z(e,r).minor},r.patch=function(e,r){return new z(e,r).patch},r.compare=K,r.compareLoose=function(e,r){return K(e,r,!0)},r.rcompare=function(e,r,t){return K(r,e,t)},r.sort=function(e,t){return e.sort(function(e,n){return r.compare(e,n,t)})},r.rsort=function(e,t){return e.sort(function(e,n){return r.rcompare(e,n,t)})},r.gt=Q,r.lt=W,r.eq=Y,r.neq=ee,r.gte=re,r.lte=te,r.cmp=ne,r.Comparator=se;var oe={};function ie(e,r){if(e instanceof ie)return e.loose===r?e:new ie(e.raw,r);if(e instanceof se)return new ie(e.value,r);if(!(this instanceof ie))return new ie(e,r);if(this.loose=r,this.raw=e,this.set=e.split(/\s*\|\|\s*/).map(function(e){return this.parseRange(e.trim())},this).filter(function(e){return e.length}),!this.set.length)throw new TypeError("Invalid SemVer Range: "+e);this.format()}function ae(e){return!e||"x"===e.toLowerCase()||"*"===e}function ce(e,r,t,n,s,o,i,a,c,p,u,l,v){return((r=ae(t)?"":ae(n)?">="+t+".0.0":ae(s)?">="+t+"."+n+".0":">="+r)+" "+(a=ae(c)?"":ae(p)?"<"+(+c+1)+".0.0":ae(u)?"<"+c+"."+(+p+1)+".0":l?"<="+c+"."+p+"."+u+"-"+l:"<="+a)).trim()}function pe(e,r){for(var n=0;n0){var s=e[n].semver;if(s.major===r.major&&s.minor===r.minor&&s.patch===r.patch)return!0}return!1}return!0}function ue(e,r,t){try{r=new ie(r,t)}catch(e){return!1}return r.test(e)}function le(e,r,t,n){var s,o,i,a,c;switch(e=new z(e,n),r=new ie(r,n),t){case">":s=Q,o=te,i=W,a=">",c=">=";break;case"<":s=W,o=re,i=Q,a="<",c="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(ue(e,r,n))return!1;for(var p=0;p=0.0.0")),l=l||e,v=v||e,s(e.semver,l.semver,n)?l=e:i(e.semver,v.semver,n)&&(v=e)}),l.operator===a||l.operator===c)return!1;if((!v.operator||v.operator===a)&&o(e,v.semver))return!1;if(v.operator===c&&i(e,v.semver))return!1}return!0}se.prototype.parse=function(e){var r=this.loose?o[N]:o[B],t=e.match(r);if(!t)throw new TypeError("Invalid comparator: "+e);this.operator=t[1],"="===this.operator&&(this.operator=""),t[2]?this.semver=new z(t[2],this.loose):this.semver=oe},se.prototype.toString=function(){return this.value},se.prototype.test=function(e){return t("Comparator.test",e,this.loose),this.semver===oe||("string"==typeof e&&(e=new z(e,this.loose)),ne(e,this.operator,this.semver,this.loose))},se.prototype.intersects=function(e,r){if(!(e instanceof se))throw new TypeError("a Comparator is required");var t;if(""===this.operator)return t=new ie(e.value,r),ue(this.value,t,r);if(""===e.operator)return t=new ie(this.value,r),ue(e.semver,t,r);var n=!(">="!==this.operator&&">"!==this.operator||">="!==e.operator&&">"!==e.operator),s=!("<="!==this.operator&&"<"!==this.operator||"<="!==e.operator&&"<"!==e.operator),o=this.semver.version===e.semver.version,i=!(">="!==this.operator&&"<="!==this.operator||">="!==e.operator&&"<="!==e.operator),a=ne(this.semver,"<",e.semver,r)&&(">="===this.operator||">"===this.operator)&&("<="===e.operator||"<"===e.operator),c=ne(this.semver,">",e.semver,r)&&("<="===this.operator||"<"===this.operator)&&(">="===e.operator||">"===e.operator);return n||s||o&&i||a||c},r.Range=ie,ie.prototype.format=function(){return this.range=this.set.map(function(e){return e.join(" ").trim()}).join("||").trim(),this.range},ie.prototype.toString=function(){return this.range},ie.prototype.parseRange=function(e){var r=this.loose;e=e.trim(),t("range",e,r);var n=r?o[F]:o[H];e=e.replace(n,ce),t("hyphen replace",e),e=e.replace(o[D],"$1$2$3"),t("comparator trim",e,o[D]),e=(e=(e=e.replace(o[L],"$1~")).replace(o[q],"$1^")).split(/\s+/).join(" ");var s=r?o[N]:o[B],i=e.split(" ").map(function(e){return function(e,r){return t("comp",e),e=function(e,r){return e.trim().split(/\s+/).map(function(e){return function(e,r){t("caret",e,r);var n=r?o[M]:o[P];return e.replace(n,function(r,n,s,o,i){var a;return t("caret",e,r,n,s,o,i),ae(n)?a="":ae(s)?a=">="+n+".0.0 <"+(+n+1)+".0.0":ae(o)?a="0"===n?">="+n+"."+s+".0 <"+n+"."+(+s+1)+".0":">="+n+"."+s+".0 <"+(+n+1)+".0.0":i?(t("replaceCaret pr",i),"-"!==i.charAt(0)&&(i="-"+i),a="0"===n?"0"===s?">="+n+"."+s+"."+o+i+" <"+n+"."+s+"."+(+o+1):">="+n+"."+s+"."+o+i+" <"+n+"."+(+s+1)+".0":">="+n+"."+s+"."+o+i+" <"+(+n+1)+".0.0"):(t("no pr"),a="0"===n?"0"===s?">="+n+"."+s+"."+o+" <"+n+"."+s+"."+(+o+1):">="+n+"."+s+"."+o+" <"+n+"."+(+s+1)+".0":">="+n+"."+s+"."+o+" <"+(+n+1)+".0.0"),t("caret return",a),a})}(e,r)}).join(" ")}(e,r),t("caret",e),e=function(e,r){return e.trim().split(/\s+/).map(function(e){return function(e,r){var n=r?o[I]:o[A];return e.replace(n,function(r,n,s,o,i){var a;return t("tilde",e,r,n,s,o,i),ae(n)?a="":ae(s)?a=">="+n+".0.0 <"+(+n+1)+".0.0":ae(o)?a=">="+n+"."+s+".0 <"+n+"."+(+s+1)+".0":i?(t("replaceTilde pr",i),"-"!==i.charAt(0)&&(i="-"+i),a=">="+n+"."+s+"."+o+i+" <"+n+"."+(+s+1)+".0"):a=">="+n+"."+s+"."+o+" <"+n+"."+(+s+1)+".0",t("tilde return",a),a})}(e,r)}).join(" ")}(e,r),t("tildes",e),e=function(e,r){return t("replaceXRanges",e,r),e.split(/\s+/).map(function(e){return function(e,r){e=e.trim();var n=r?o[T]:o[R];return e.replace(n,function(r,n,s,o,i,a){t("xRange",e,r,n,s,o,i,a);var c=ae(s),p=c||ae(o),u=p||ae(i),l=u;return"="===n&&l&&(n=""),c?r=">"===n||"<"===n?"<0.0.0":"*":n&&l?(p&&(o=0),u&&(i=0),">"===n?(n=">=",p?(s=+s+1,o=0,i=0):u&&(o=+o+1,i=0)):"<="===n&&(n="<",p?s=+s+1:o=+o+1),r=n+s+"."+o+"."+i):p?r=">="+s+".0.0 <"+(+s+1)+".0.0":u&&(r=">="+s+"."+o+".0 <"+s+"."+(+o+1)+".0"),t("xRange return",r),r})}(e,r)}).join(" ")}(e,r),t("xrange",e),e=function(e,r){return t("replaceStars",e,r),e.trim().replace(o[G],"")}(e,r),t("stars",e),e}(e,r)}).join(" ").split(/\s+/);return this.loose&&(i=i.filter(function(e){return!!e.match(s)})),i=i.map(function(e){return new se(e,r)})},ie.prototype.intersects=function(e,r){if(!(e instanceof ie))throw new TypeError("a Range is required");return this.set.some(function(t){return t.every(function(t){return e.set.some(function(e){return e.every(function(e){return t.intersects(e,r)})})})})},r.toComparators=function(e,r){return new ie(e,r).set.map(function(e){return e.map(function(e){return e.value}).join(" ").trim().split(" ")})},ie.prototype.test=function(e){if(!e)return!1;"string"==typeof e&&(e=new z(e,this.loose));for(var r=0;r",t)},r.outside=le,r.prerelease=function(e,r){var t=X(e,r);return t&&t.prerelease.length?t.prerelease:null},r.intersects=function(e,r,t){return e=new ie(e,t),r=new ie(r,t),e.intersects(r)},r.coerce=function(e){if(e instanceof z)return e;if("string"!=typeof e)return null;var r=e.match(o[O]);return null==r?null:X((r[1]||"0")+"."+(r[2]||"0")+"."+(r[3]||"0"))}}),semver_1=semver.SEMVER_SPEC_VERSION,semver_2=semver.re,semver_3=semver.src,semver_4=semver.parse,semver_5=semver.valid,semver_6=semver.clean,semver_7=semver.SemVer,semver_8=semver.inc,semver_9=semver.diff,semver_10=semver.compareIdentifiers,semver_11=semver.rcompareIdentifiers,semver_12=semver.major,semver_13=semver.minor,semver_14=semver.patch,semver_15=semver.compare,semver_16=semver.compareLoose,semver_17=semver.rcompare,semver_18=semver.sort,semver_19=semver.rsort,semver_20=semver.gt,semver_21=semver.lt,semver_22=semver.eq,semver_23=semver.neq,semver_24=semver.gte,semver_25=semver.lte,semver_26=semver.cmp,semver_27=semver.Comparator,semver_28=semver.Range,semver_29=semver.toComparators,semver_30=semver.satisfies,semver_31=semver.maxSatisfying,semver_32=semver.minSatisfying,semver_33=semver.validRange,semver_34=semver.ltr,semver_35=semver.gtr,semver_36=semver.outside,semver_37=semver.prerelease,semver_38=semver.intersects,semver_39=semver.coerce;const{argv:argv}=process,verbose=-1!==argv.indexOf("-v")||-1!==argv.indexOf("--verbose"),ignoreLocalBin=-1!==argv.indexOf("-i")||-1!==argv.indexOf("--ignore-local-bin"),logger=console;verbose||(logger.debug=(()=>{}));const getVersion=({command:e,localBinFolder:r,global:t=!0})=>{const n={PATH:process.env.PATH};return n.PATH=t?n.PATH.replace(`${r}${path.delimiter}`,""):`${r}${path.delimiter}${n.PATH}`,child_process.execSync(e,{env:n}).toString().replace("v","").trim()},checkVersion=(e,r)=>{let t=null;const n=path.join(process.cwd(),"package.json");try{t=require(n)}catch(e){logger.error(`Unable to find ${n}! 😱${os.EOL}`),logger.error(`Please ensure that this script is executed in the same directory.${os.EOL}`),process.exit(1)}t.engines&&t.engines[e]||(logger.error(`There is no engine named "${e}" specified in package.json! 😱${os.EOL}`),process.exit(1));const s=t.engines[e];let o=null,i=null,a=null,c=null,p=null;try{const t=child_process.execSync("npm bin").toString().trim(),n=fs.existsSync(`${t}${path.sep}${e}`);o=getVersion({command:r,localBinFolder:t}),c=semver.satisfies(o,s),logger.debug(`Expected ${e} version:\t${s}`),logger.debug(`╰─ Global ${e} version:\t${o}\t${c?"✅️":"❌️"}`),n&&(i=getVersion({command:r,localBinFolder:t,global:!1}),p=semver.satisfies(i,s),logger.debug(`╰─ Local ${e} version:\t${i}\t${p?"✅️":"❌️"} (from ${t})`)),a=ignoreLocalBin?o:i||o,logger.debug(`╰─ (using: ${a})${os.EOL}`)}catch(r){logger.error(`Unable to get ${e} version! 😱${os.EOL}`),process.exit(1)}if(!semver.satisfies(a,s)){const r="https://github.com/Skyscanner/ensure-node-env/blob/master/README.md#guide";logger.error(`Expected ${e} version to match ${s}, but got ${a}. 😱${os.EOL}`),verbose||logger.error(`(pass the --verbose flag to the script for a more detailed output)${os.EOL}`),logger.error(`Please follow Skyscanner's node environment guide (see ${r}).${os.EOL}`),process.exit(1)}};logger.info(`Checking node & npm versions...${os.EOL}`),checkVersion("node","node --version"),checkVersion("npm","npm -g --version"),logger.info(`All good. 👍${os.EOL}`); diff --git a/dist/index.js b/dist/index.js index 5f34af1..79cef09 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1 +1 @@ -"use strict";function _interopDefault(e){return e&&"object"==typeof e&&"default"in e?e.default:e}var os=require("os"),events=_interopDefault(require("events")),child_process=require("child_process"),child_process__default=_interopDefault(child_process),path=_interopDefault(require("path")),fs=require("fs"),fs__default=_interopDefault(fs),util=_interopDefault(require("util"));function createCommonjsModule(e,r){return e(r={exports:{}},r.exports),r.exports}var semver=createCommonjsModule(function(e,r){var t;r=e.exports=W,t="object"==typeof process&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?function(){var e=Array.prototype.slice.call(arguments,0);e.unshift("SEMVER"),console.log.apply(console,e)}:function(){},r.SEMVER_SPEC_VERSION="2.0.0";var n=256,s=Number.MAX_SAFE_INTEGER||9007199254740991,o=r.re=[],i=r.src=[],a=0,c=a++;i[c]="0|[1-9]\\d*";var p=a++;i[p]="[0-9]+";var u=a++;i[u]="\\d*[a-zA-Z-][a-zA-Z0-9-]*";var h=a++;i[h]="("+i[c]+")\\.("+i[c]+")\\.("+i[c]+")";var l=a++;i[l]="("+i[p]+")\\.("+i[p]+")\\.("+i[p]+")";var m=a++;i[m]="(?:"+i[c]+"|"+i[u]+")";var f=a++;i[f]="(?:"+i[p]+"|"+i[u]+")";var v=a++;i[v]="(?:-("+i[m]+"(?:\\."+i[m]+")*))";var g=a++;i[g]="(?:-?("+i[f]+"(?:\\."+i[f]+")*))";var d=a++;i[d]="[0-9A-Za-z-]+";var _=a++;i[_]="(?:\\+("+i[d]+"(?:\\."+i[d]+")*))";var y=a++,w="v?"+i[h]+i[v]+"?"+i[_]+"?";i[y]="^"+w+"$";var b="[v=\\s]*"+i[l]+i[g]+"?"+i[_]+"?",E=a++;i[E]="^"+b+"$";var x=a++;i[x]="((?:<|>)?=?)";var $=a++;i[$]=i[p]+"|x|X|\\*";var j=a++;i[j]=i[c]+"|x|X|\\*";var k=a++;i[k]="[v=\\s]*("+i[j]+")(?:\\.("+i[j]+")(?:\\.("+i[j]+")(?:"+i[v]+")?"+i[_]+"?)?)?";var S=a++;i[S]="[v=\\s]*("+i[$]+")(?:\\.("+i[$]+")(?:\\.("+i[$]+")(?:"+i[g]+")?"+i[_]+"?)?)?";var O=a++;i[O]="^"+i[x]+"\\s*"+i[k]+"$";var A=a++;i[A]="^"+i[x]+"\\s*"+i[S]+"$";var C=a++;i[C]="(?:^|[^\\d])(\\d{1,16})(?:\\.(\\d{1,16}))?(?:\\.(\\d{1,16}))?(?:$|[^\\d])";var L=a++;i[L]="(?:~>?)";var I=a++;i[I]="(\\s*)"+i[L]+"\\s+",o[I]=new RegExp(i[I],"g");var R=a++;i[R]="^"+i[L]+i[k]+"$";var q=a++;i[q]="^"+i[L]+i[S]+"$";var T=a++;i[T]="(?:\\^)";var N=a++;i[N]="(\\s*)"+i[T]+"\\s+",o[N]=new RegExp(i[N],"g");var V=a++;i[V]="^"+i[T]+i[k]+"$";var M=a++;i[M]="^"+i[T]+i[S]+"$";var H=a++;i[H]="^"+i[x]+"\\s*("+b+")$|^$";var D=a++;i[D]="^"+i[x]+"\\s*("+w+")$|^$";var P=a++;i[P]="(\\s*)"+i[x]+"\\s*("+b+"|"+i[k]+")",o[P]=new RegExp(i[P],"g");var U=a++;i[U]="^\\s*("+i[k]+")\\s+-\\s+("+i[k]+")\\s*$";var F=a++;i[F]="^\\s*("+i[S]+")\\s+-\\s+("+i[S]+")\\s*$";var G=a++;i[G]="(<|>)?=?\\s*\\*";for(var B=0;B<35;B++)t(B,i[B]),o[B]||(o[B]=new RegExp(i[B]));function z(e,r){if(e instanceof W)return e;if("string"!=typeof e)return null;if(e.length>n)return null;if(!(r?o[E]:o[y]).test(e))return null;try{return new W(e,r)}catch(e){return null}}function W(e,r){if(e instanceof W){if(e.loose===r)return e;e=e.version}else if("string"!=typeof e)throw new TypeError("Invalid Version: "+e);if(e.length>n)throw new TypeError("version is longer than "+n+" characters");if(!(this instanceof W))return new W(e,r);t("SemVer",e,r),this.loose=r;var i=e.trim().match(r?o[E]:o[y]);if(!i)throw new TypeError("Invalid Version: "+e);if(this.raw=e,this.major=+i[1],this.minor=+i[2],this.patch=+i[3],this.major>s||this.major<0)throw new TypeError("Invalid major version");if(this.minor>s||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>s||this.patch<0)throw new TypeError("Invalid patch version");i[4]?this.prerelease=i[4].split(".").map(function(e){if(/^[0-9]+$/.test(e)){var r=+e;if(r>=0&&r=0;)"number"==typeof this.prerelease[t]&&(this.prerelease[t]++,t=-2);-1===t&&this.prerelease.push(0)}r&&(this.prerelease[0]===r?isNaN(this.prerelease[1])&&(this.prerelease=[r,0]):this.prerelease=[r,0]);break;default:throw new Error("invalid increment argument: "+e)}return this.format(),this.raw=this.version,this},r.inc=function(e,r,t,n){"string"==typeof t&&(n=t,t=void 0);try{return new W(e,t).inc(r,n).version}catch(e){return null}},r.diff=function(e,r){if(Y(e,r))return null;var t=z(e),n=z(r);if(t.prerelease.length||n.prerelease.length){for(var s in t)if(("major"===s||"minor"===s||"patch"===s)&&t[s]!==n[s])return"pre"+s;return"prerelease"}for(var s in t)if(("major"===s||"minor"===s||"patch"===s)&&t[s]!==n[s])return s},r.compareIdentifiers=Z;var X=/^[0-9]+$/;function Z(e,r){var t=X.test(e),n=X.test(r);return t&&n&&(e=+e,r=+r),t&&!n?-1:n&&!t?1:er?1:0}function J(e,r,t){return new W(e,t).compare(new W(r,t))}function K(e,r,t){return J(e,r,t)>0}function Q(e,r,t){return J(e,r,t)<0}function Y(e,r,t){return 0===J(e,r,t)}function ee(e,r,t){return 0!==J(e,r,t)}function re(e,r,t){return J(e,r,t)>=0}function te(e,r,t){return J(e,r,t)<=0}function ne(e,r,t,n){var s;switch(r){case"===":"object"==typeof e&&(e=e.version),"object"==typeof t&&(t=t.version),s=e===t;break;case"!==":"object"==typeof e&&(e=e.version),"object"==typeof t&&(t=t.version),s=e!==t;break;case"":case"=":case"==":s=Y(e,t,n);break;case"!=":s=ee(e,t,n);break;case">":s=K(e,t,n);break;case">=":s=re(e,t,n);break;case"<":s=Q(e,t,n);break;case"<=":s=te(e,t,n);break;default:throw new TypeError("Invalid operator: "+r)}return s}function se(e,r){if(e instanceof se){if(e.loose===r)return e;e=e.value}if(!(this instanceof se))return new se(e,r);t("comparator",e,r),this.loose=r,this.parse(e),this.semver===oe?this.value="":this.value=this.operator+this.semver.version,t("comp",this)}r.rcompareIdentifiers=function(e,r){return Z(r,e)},r.major=function(e,r){return new W(e,r).major},r.minor=function(e,r){return new W(e,r).minor},r.patch=function(e,r){return new W(e,r).patch},r.compare=J,r.compareLoose=function(e,r){return J(e,r,!0)},r.rcompare=function(e,r,t){return J(r,e,t)},r.sort=function(e,t){return e.sort(function(e,n){return r.compare(e,n,t)})},r.rsort=function(e,t){return e.sort(function(e,n){return r.rcompare(e,n,t)})},r.gt=K,r.lt=Q,r.eq=Y,r.neq=ee,r.gte=re,r.lte=te,r.cmp=ne,r.Comparator=se;var oe={};function ie(e,r){if(e instanceof ie)return e.loose===r?e:new ie(e.raw,r);if(e instanceof se)return new ie(e.value,r);if(!(this instanceof ie))return new ie(e,r);if(this.loose=r,this.raw=e,this.set=e.split(/\s*\|\|\s*/).map(function(e){return this.parseRange(e.trim())},this).filter(function(e){return e.length}),!this.set.length)throw new TypeError("Invalid SemVer Range: "+e);this.format()}function ae(e){return!e||"x"===e.toLowerCase()||"*"===e}function ce(e,r,t,n,s,o,i,a,c,p,u,h,l){return((r=ae(t)?"":ae(n)?">="+t+".0.0":ae(s)?">="+t+"."+n+".0":">="+r)+" "+(a=ae(c)?"":ae(p)?"<"+(+c+1)+".0.0":ae(u)?"<"+c+"."+(+p+1)+".0":h?"<="+c+"."+p+"."+u+"-"+h:"<="+a)).trim()}function pe(e,r){for(var n=0;n0){var s=e[n].semver;if(s.major===r.major&&s.minor===r.minor&&s.patch===r.patch)return!0}return!1}return!0}function ue(e,r,t){try{r=new ie(r,t)}catch(e){return!1}return r.test(e)}function he(e,r,t,n){var s,o,i,a,c;switch(e=new W(e,n),r=new ie(r,n),t){case">":s=K,o=te,i=Q,a=">",c=">=";break;case"<":s=Q,o=re,i=K,a="<",c="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(ue(e,r,n))return!1;for(var p=0;p=0.0.0")),h=h||e,l=l||e,s(e.semver,h.semver,n)?h=e:i(e.semver,l.semver,n)&&(l=e)}),h.operator===a||h.operator===c)return!1;if((!l.operator||l.operator===a)&&o(e,l.semver))return!1;if(l.operator===c&&i(e,l.semver))return!1}return!0}se.prototype.parse=function(e){var r=this.loose?o[H]:o[D],t=e.match(r);if(!t)throw new TypeError("Invalid comparator: "+e);this.operator=t[1],"="===this.operator&&(this.operator=""),t[2]?this.semver=new W(t[2],this.loose):this.semver=oe},se.prototype.toString=function(){return this.value},se.prototype.test=function(e){return t("Comparator.test",e,this.loose),this.semver===oe||("string"==typeof e&&(e=new W(e,this.loose)),ne(e,this.operator,this.semver,this.loose))},se.prototype.intersects=function(e,r){if(!(e instanceof se))throw new TypeError("a Comparator is required");var t;if(""===this.operator)return t=new ie(e.value,r),ue(this.value,t,r);if(""===e.operator)return t=new ie(this.value,r),ue(e.semver,t,r);var n=!(">="!==this.operator&&">"!==this.operator||">="!==e.operator&&">"!==e.operator),s=!("<="!==this.operator&&"<"!==this.operator||"<="!==e.operator&&"<"!==e.operator),o=this.semver.version===e.semver.version,i=!(">="!==this.operator&&"<="!==this.operator||">="!==e.operator&&"<="!==e.operator),a=ne(this.semver,"<",e.semver,r)&&(">="===this.operator||">"===this.operator)&&("<="===e.operator||"<"===e.operator),c=ne(this.semver,">",e.semver,r)&&("<="===this.operator||"<"===this.operator)&&(">="===e.operator||">"===e.operator);return n||s||o&&i||a||c},r.Range=ie,ie.prototype.format=function(){return this.range=this.set.map(function(e){return e.join(" ").trim()}).join("||").trim(),this.range},ie.prototype.toString=function(){return this.range},ie.prototype.parseRange=function(e){var r=this.loose;e=e.trim(),t("range",e,r);var n=r?o[F]:o[U];e=e.replace(n,ce),t("hyphen replace",e),e=e.replace(o[P],"$1$2$3"),t("comparator trim",e,o[P]),e=(e=(e=e.replace(o[I],"$1~")).replace(o[N],"$1^")).split(/\s+/).join(" ");var s=r?o[H]:o[D],i=e.split(" ").map(function(e){return function(e,r){return t("comp",e),e=function(e,r){return e.trim().split(/\s+/).map(function(e){return function(e,r){t("caret",e,r);var n=r?o[M]:o[V];return e.replace(n,function(r,n,s,o,i){var a;return t("caret",e,r,n,s,o,i),ae(n)?a="":ae(s)?a=">="+n+".0.0 <"+(+n+1)+".0.0":ae(o)?a="0"===n?">="+n+"."+s+".0 <"+n+"."+(+s+1)+".0":">="+n+"."+s+".0 <"+(+n+1)+".0.0":i?(t("replaceCaret pr",i),"-"!==i.charAt(0)&&(i="-"+i),a="0"===n?"0"===s?">="+n+"."+s+"."+o+i+" <"+n+"."+s+"."+(+o+1):">="+n+"."+s+"."+o+i+" <"+n+"."+(+s+1)+".0":">="+n+"."+s+"."+o+i+" <"+(+n+1)+".0.0"):(t("no pr"),a="0"===n?"0"===s?">="+n+"."+s+"."+o+" <"+n+"."+s+"."+(+o+1):">="+n+"."+s+"."+o+" <"+n+"."+(+s+1)+".0":">="+n+"."+s+"."+o+" <"+(+n+1)+".0.0"),t("caret return",a),a})}(e,r)}).join(" ")}(e,r),t("caret",e),e=function(e,r){return e.trim().split(/\s+/).map(function(e){return function(e,r){var n=r?o[q]:o[R];return e.replace(n,function(r,n,s,o,i){var a;return t("tilde",e,r,n,s,o,i),ae(n)?a="":ae(s)?a=">="+n+".0.0 <"+(+n+1)+".0.0":ae(o)?a=">="+n+"."+s+".0 <"+n+"."+(+s+1)+".0":i?(t("replaceTilde pr",i),"-"!==i.charAt(0)&&(i="-"+i),a=">="+n+"."+s+"."+o+i+" <"+n+"."+(+s+1)+".0"):a=">="+n+"."+s+"."+o+" <"+n+"."+(+s+1)+".0",t("tilde return",a),a})}(e,r)}).join(" ")}(e,r),t("tildes",e),e=function(e,r){return t("replaceXRanges",e,r),e.split(/\s+/).map(function(e){return function(e,r){e=e.trim();var n=r?o[A]:o[O];return e.replace(n,function(r,n,s,o,i,a){t("xRange",e,r,n,s,o,i,a);var c=ae(s),p=c||ae(o),u=p||ae(i),h=u;return"="===n&&h&&(n=""),c?r=">"===n||"<"===n?"<0.0.0":"*":n&&h?(p&&(o=0),u&&(i=0),">"===n?(n=">=",p?(s=+s+1,o=0,i=0):u&&(o=+o+1,i=0)):"<="===n&&(n="<",p?s=+s+1:o=+o+1),r=n+s+"."+o+"."+i):p?r=">="+s+".0.0 <"+(+s+1)+".0.0":u&&(r=">="+s+"."+o+".0 <"+s+"."+(+o+1)+".0"),t("xRange return",r),r})}(e,r)}).join(" ")}(e,r),t("xrange",e),e=function(e,r){return t("replaceStars",e,r),e.trim().replace(o[G],"")}(e,r),t("stars",e),e}(e,r)}).join(" ").split(/\s+/);return this.loose&&(i=i.filter(function(e){return!!e.match(s)})),i=i.map(function(e){return new se(e,r)})},ie.prototype.intersects=function(e,r){if(!(e instanceof ie))throw new TypeError("a Range is required");return this.set.some(function(t){return t.every(function(t){return e.set.some(function(e){return e.every(function(e){return t.intersects(e,r)})})})})},r.toComparators=function(e,r){return new ie(e,r).set.map(function(e){return e.map(function(e){return e.value}).join(" ").trim().split(" ")})},ie.prototype.test=function(e){if(!e)return!1;"string"==typeof e&&(e=new W(e,this.loose));for(var r=0;r",t)},r.outside=he,r.prerelease=function(e,r){var t=z(e,r);return t&&t.prerelease.length?t.prerelease:null},r.intersects=function(e,r,t){return e=new ie(e,t),r=new ie(r,t),e.intersects(r)},r.coerce=function(e){if(e instanceof W)return e;if("string"!=typeof e)return null;var r=e.match(o[C]);return null==r?null:z((r[1]||"0")+"."+(r[2]||"0")+"."+(r[3]||"0"))}}),semver_1=semver.SEMVER_SPEC_VERSION,semver_2=semver.re,semver_3=semver.src,semver_4=semver.parse,semver_5=semver.valid,semver_6=semver.clean,semver_7=semver.SemVer,semver_8=semver.inc,semver_9=semver.diff,semver_10=semver.compareIdentifiers,semver_11=semver.rcompareIdentifiers,semver_12=semver.major,semver_13=semver.minor,semver_14=semver.patch,semver_15=semver.compare,semver_16=semver.compareLoose,semver_17=semver.rcompare,semver_18=semver.sort,semver_19=semver.rsort,semver_20=semver.gt,semver_21=semver.lt,semver_22=semver.eq,semver_23=semver.neq,semver_24=semver.gte,semver_25=semver.lte,semver_26=semver.cmp,semver_27=semver.Comparator,semver_28=semver.Range,semver_29=semver.toComparators,semver_30=semver.satisfies,semver_31=semver.maxSatisfying,semver_32=semver.minSatisfying,semver_33=semver.validRange,semver_34=semver.ltr,semver_35=semver.gtr,semver_36=semver.outside,semver_37=semver.prerelease,semver_38=semver.intersects,semver_39=semver.coerce,commander=createCommonjsModule(function(e,r){var t=events.EventEmitter,n=child_process__default.spawn,s=path.dirname,o=path.basename;function i(e,r){this.flags=e,this.required=e.indexOf("<")>=0,this.optional=e.indexOf("[")>=0,this.bool=-1===e.indexOf("-no-"),(e=e.split(/[ ,|]+/)).length>1&&!/^[[<]/.test(e[1])&&(this.short=e.shift()),this.long=e.shift(),this.description=r||""}function a(e){this.commands=[],this.options=[],this._execs={},this._allowUnknownOption=!1,this._args=[],this._name=e||""}function c(e,r){var t=Math.max(0,r-e.length);return e+Array(t+1).join(" ")}function p(e,r){r=r||[];for(var t=0;t":"["+r+"]"}function h(e){try{if(fs__default.statSync(e).isFile())return!0}catch(e){return!1}}util.inherits(a,t),(r=e.exports=new a).Command=a,r.Option=i,i.prototype.name=function(){return this.long.replace("--","").replace("no-","")},i.prototype.attributeName=function(){return this.name().split("-").reduce(function(e,r){return e+r[0].toUpperCase()+r.slice(1)})},i.prototype.is=function(e){return this.short===e||this.long===e},a.prototype.command=function(e,r,t){"object"==typeof r&&null!==r&&(t=r,r=null),t=t||{};var n=e.split(/ +/),s=new a(n.shift());return r&&(s.description(r),this.executables=!0,this._execs[s._name]=!0,t.isDefault&&(this.defaultExecutable=s._name)),s._noHelp=!!t.noHelp,this.commands.push(s),s.parseExpectedArgs(n),s.parent=this,r?this:s},a.prototype.arguments=function(e){return this.parseExpectedArgs(e.split(/ +/))},a.prototype.addImplicitHelpCommand=function(){this.command("help [cmd]","display help for [cmd]")},a.prototype.parseExpectedArgs=function(e){if(e.length){var r=this;return e.forEach(function(e){var t={required:!1,name:"",variadic:!1};switch(e[0]){case"<":t.required=!0,t.name=e.slice(1,-1);break;case"[":t.name=e.slice(1,-1)}t.name.length>3&&"..."===t.name.slice(-3)&&(t.variadic=!0,t.name=t.name.slice(0,-3)),t.name&&r._args.push(t)}),this}},a.prototype.action=function(e){var r=this,t=function(t,n){t=t||[],n=n||[];var s=r.parseOptions(n);p(r,s.unknown),s.unknown.length>0&&r.unknownOption(s.unknown[0]),s.args.length&&(t=s.args.concat(t)),r._args.forEach(function(e,n){e.required&&null==t[n]?r.missingArgument(e.name):e.variadic&&(n!==r._args.length-1&&r.variadicArgNotLast(e.name),t[n]=t.splice(n))}),r._args.length?t[r._args.length]=r:t.push(r),e.apply(r,t)},n=this.parent||this,s=n===this?"*":this._name;return n.on("command:"+s,t),this._alias&&n.on("command:"+this._alias,t),this},a.prototype.option=function(e,r,t,n){var s=this,o=new i(e,r),a=o.name(),c=o.attributeName();if("function"!=typeof t)if(t instanceof RegExp){var p=t;t=function(e,r){var t=p.exec(e);return t?t[0]:r}}else n=t,t=null;return(!o.bool||o.optional||o.required)&&(o.bool||(n=!0),void 0!==n&&(s[c]=n,o.defaultValue=n)),this.options.push(o),this.on("option:"+a,function(e){null!==e&&t&&(e=t(e,void 0===s[c]?n:s[c])),"boolean"==typeof s[c]||void 0===s[c]?s[c]=null==e?!!o.bool&&(n||!0):e:null!==e&&(s[c]=e)}),this},a.prototype.allowUnknownOption=function(e){return this._allowUnknownOption=0===arguments.length||e,this},a.prototype.parse=function(e){this.executables&&this.addImplicitHelpCommand(),this.rawArgs=e,this._name=this._name||o(e[1],".js"),this.executables&&e.length<3&&!this.defaultExecutable&&e.push("--help");var r=this.parseOptions(this.normalize(e.slice(2))),t=this.args=r.args,n=this.parseArgs(this.args,r.unknown),s=n.args[0],i=null;return s&&(i=this.commands.filter(function(e){return e.alias()===s})[0]),this._execs[s]&&"function"!=typeof this._execs[s]?this.executeSubCommand(e,t,r.unknown):i?(t[0]=i._name,this.executeSubCommand(e,t,r.unknown)):this.defaultExecutable?(t.unshift(this.defaultExecutable),this.executeSubCommand(e,t,r.unknown)):n},a.prototype.executeSubCommand=function(e,r,t){(r=r.concat(t)).length||this.help(),"help"===r[0]&&1===r.length&&this.help(),"help"===r[0]&&(r[0]=r[1],r[1]="--help");var i,a=e[1],c=o(a,path.extname(a))+"-"+r[0],p=fs__default.lstatSync(a).isSymbolicLink()?fs__default.readlinkSync(a):a;p!==a&&"/"!==p.charAt(0)&&(p=path.join(s(a),p)),i=s(p);var u,l=path.join(i,c),m=!1;h(l+".js")?(c=l+".js",m=!0):h(l+".ts")?(c=l+".ts",m=!0):h(l)&&(c=l),r=r.slice(1),"win32"!==process.platform?m?(r.unshift(c),r=(process.execArgv||[]).concat(r),u=n(process.argv[0],r,{stdio:"inherit",customFds:[0,1,2]})):u=n(c,r,{stdio:"inherit",customFds:[0,1,2]}):(r.unshift(c),u=n(process.execPath,r,{stdio:"inherit"}));["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach(function(e){process.on(e,function(){!1===u.killed&&null===u.exitCode&&u.kill(e)})}),u.on("close",process.exit.bind(process)),u.on("error",function(e){"ENOENT"===e.code?console.error("error: %s(1) does not exist, try --help",c):"EACCES"===e.code&&console.error("error: %s(1) not executable. try chmod or run with root",c),process.exit(1)}),this.runningCommand=u},a.prototype.normalize=function(e){for(var r,t,n,s=[],o=0,i=e.length;o0&&(t=this.optionFor(e[o-1])),"--"===r){s=s.concat(e.slice(o));break}t&&t.required?s.push(r):r.length>1&&"-"===r[0]&&"-"!==r[1]?r.slice(1).split("").forEach(function(e){s.push("-"+e)}):/^--/.test(r)&&~(n=r.indexOf("="))?s.push(r.slice(0,n),r.slice(n+1)):s.push(r)}return s},a.prototype.parseArgs=function(e,r){var t;return e.length?(t=e[0],this.listeners("command:"+t).length?this.emit("command:"+e.shift(),e,r):this.emit("command:*",e)):(p(this,r),r.length>0&&this.unknownOption(r[0]),0===this.commands.length&&0===this._args.filter(function(e){return e.required}).length&&this.emit("command:*")),this},a.prototype.optionFor=function(e){for(var r=0,t=this.options.length;r1&&"-"===n[0]?(i.push(n),a+1e&&(e=this.largestArgLength()),this.commands&&this.commands.length&&this.largestCommandLength()>e&&(e=this.largestCommandLength()),e},a.prototype.optionHelp=function(){var e=this.padWidth();return this.options.map(function(r){return c(r.flags,e)+" "+r.description+(r.bool&&void 0!==r.defaultValue?" (default: "+JSON.stringify(r.defaultValue)+")":"")}).concat([c("-h, --help",e)+" output usage information"]).join("\n")},a.prototype.commandHelp=function(){if(!this.commands.length)return"";var e=this.prepareCommands(),r=this.padWidth();return["Commands:",e.map(function(e){var t=e[1]?" "+e[1]:"";return(t?c(e[0],r):e[0])+t}).join("\n").replace(/^/gm," "),""].join("\n")},a.prototype.helpInformation=function(){var e=[];if(this._description){e=[this._description,""];var r=this._argsDescription;if(r&&this._args.length){var t=this.padWidth();e.push("Arguments:"),e.push(""),this._args.forEach(function(n){e.push(" "+c(n.name,t)+" "+r[n.name])}),e.push("")}}var n=this._name;this._alias&&(n=n+"|"+this._alias);var s=["Usage: "+n+" "+this.usage(),""],o=[],i=this.commandHelp();i&&(o=[i]);var a=["Options:",""+this.optionHelp().replace(/^/gm," "),""];return s.concat(e).concat(a).concat(o).join("\n")},a.prototype.outputHelp=function(e){e||(e=function(e){return e}),process.stdout.write(e(this.helpInformation())),this.emit("--help")},a.prototype.help=function(e){this.outputHelp(e),process.exit()}}),commander_1=commander.Command,commander_2=commander.Option;const getNormalisedArgs=()=>{const e=process.argv;if(!process.mainModule){const r=e.shift();e.unshift(r,module.filename)}return e};commander.option("-i, --ignore-local-bin","Ignore any binaries in ./node_modules/.bin").option("-v, --verbose","Prints information about all the binaries detected").parse(getNormalisedArgs());const logger=console;commander.verbose||(logger.debug=(()=>{}));const getVersion=({command:e,localBinFolder:r,global:t=!0})=>{const n={PATH:process.env.PATH};return n.PATH=t?n.PATH.replace(`${r}${path.delimiter}`,""):`${r}${path.delimiter}${n.PATH}`,child_process.execSync(e,{env:n}).toString().replace("v","").trim()},checkVersion=(e,r)=>{let t=null;const n=path.join(process.cwd(),"package.json");try{t=require(n)}catch(e){logger.error(`Unable to find ${n}! 😱${os.EOL}`),logger.error(`Please ensure that this script is executed in the same directory.${os.EOL}`),process.exit(1)}t.engines&&t.engines[e]||(logger.error(`There is no engine named "${e}" specified in package.json! 😱${os.EOL}`),process.exit(1));const s=t.engines[e];let o=null,i=null,a=null,c=null,p=null;try{const t=child_process.execSync("npm bin").toString().trim(),n=fs.existsSync(`${t}${path.sep}${e}`);o=getVersion({command:r,localBinFolder:t}),c=semver.satisfies(o,s),logger.debug(`Expected ${e} version:\t${s}`),logger.debug(`╰─ Global ${e} version:\t${o}\t${c?"✅️":"❌️"}`),n&&(i=getVersion({command:r,localBinFolder:t,global:!1}),p=semver.satisfies(i,s),logger.debug(`╰─ Local ${e} version:\t${i}\t${p?"✅️":"❌️"} (from ${t})`)),a=commander.ignoreLocalBin?o:i||o,logger.debug(`╰─ (using: ${a})${os.EOL}`)}catch(r){logger.error(`Unable to get ${e} version! 😱${os.EOL}`),process.exit(1)}if(!semver.satisfies(a,s)){const r="https://github.com/Skyscanner/ensure-node-env/blob/master/README.md#guide";logger.error(`Expected ${e} version to match ${s}, but got ${a}. 😱${os.EOL}`),commander.verbose||logger.error(`(pass the --verbose flag to the script for a more detailed output)${os.EOL}`),logger.error(`Please follow Skyscanner's node environment guide (see ${r}).${os.EOL}`),process.exit(1)}};logger.info(`Checking node & npm versions...${os.EOL}`),checkVersion("node","node --version"),checkVersion("npm","npm -g --version"),logger.info(`${os.EOL}All good. 👍${os.EOL}`); +"use strict";function _interopDefault(e){return e&&"object"==typeof e&&"default"in e?e.default:e}var path=_interopDefault(require("path")),child_process=require("child_process"),fs=require("fs"),os=require("os");function createCommonjsModule(e,r){return e(r={exports:{}},r.exports),r.exports}var semver=createCommonjsModule(function(e,r){var t;r=e.exports=z,t="object"==typeof process&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?function(){var e=Array.prototype.slice.call(arguments,0);e.unshift("SEMVER"),console.log.apply(console,e)}:function(){},r.SEMVER_SPEC_VERSION="2.0.0";var n=256,s=Number.MAX_SAFE_INTEGER||9007199254740991,o=r.re=[],i=r.src=[],a=0,c=a++;i[c]="0|[1-9]\\d*";var p=a++;i[p]="[0-9]+";var u=a++;i[u]="\\d*[a-zA-Z-][a-zA-Z0-9-]*";var l=a++;i[l]="("+i[c]+")\\.("+i[c]+")\\.("+i[c]+")";var v=a++;i[v]="("+i[p]+")\\.("+i[p]+")\\.("+i[p]+")";var h=a++;i[h]="(?:"+i[c]+"|"+i[u]+")";var m=a++;i[m]="(?:"+i[p]+"|"+i[u]+")";var f=a++;i[f]="(?:-("+i[h]+"(?:\\."+i[h]+")*))";var g=a++;i[g]="(?:-?("+i[m]+"(?:\\."+i[m]+")*))";var d=a++;i[d]="[0-9A-Za-z-]+";var w=a++;i[w]="(?:\\+("+i[d]+"(?:\\."+i[d]+")*))";var y=a++,$="v?"+i[l]+i[f]+"?"+i[w]+"?";i[y]="^"+$+"$";var _="[v=\\s]*"+i[v]+i[g]+"?"+i[w]+"?",E=a++;i[E]="^"+_+"$";var b=a++;i[b]="((?:<|>)?=?)";var j=a++;i[j]=i[p]+"|x|X|\\*";var x=a++;i[x]=i[c]+"|x|X|\\*";var S=a++;i[S]="[v=\\s]*("+i[x]+")(?:\\.("+i[x]+")(?:\\.("+i[x]+")(?:"+i[f]+")?"+i[w]+"?)?)?";var k=a++;i[k]="[v=\\s]*("+i[j]+")(?:\\.("+i[j]+")(?:\\.("+i[j]+")(?:"+i[g]+")?"+i[w]+"?)?)?";var R=a++;i[R]="^"+i[b]+"\\s*"+i[S]+"$";var T=a++;i[T]="^"+i[b]+"\\s*"+i[k]+"$";var O=a++;i[O]="(?:^|[^\\d])(\\d{1,16})(?:\\.(\\d{1,16}))?(?:\\.(\\d{1,16}))?(?:$|[^\\d])";var V=a++;i[V]="(?:~>?)";var L=a++;i[L]="(\\s*)"+i[V]+"\\s+",o[L]=new RegExp(i[L],"g");var A=a++;i[A]="^"+i[V]+i[S]+"$";var I=a++;i[I]="^"+i[V]+i[k]+"$";var C=a++;i[C]="(?:\\^)";var q=a++;i[q]="(\\s*)"+i[C]+"\\s+",o[q]=new RegExp(i[q],"g");var P=a++;i[P]="^"+i[C]+i[S]+"$";var M=a++;i[M]="^"+i[C]+i[k]+"$";var N=a++;i[N]="^"+i[b]+"\\s*("+_+")$|^$";var B=a++;i[B]="^"+i[b]+"\\s*("+$+")$|^$";var D=a++;i[D]="(\\s*)"+i[b]+"\\s*("+_+"|"+i[S]+")",o[D]=new RegExp(i[D],"g");var H=a++;i[H]="^\\s*("+i[S]+")\\s+-\\s+("+i[S]+")\\s*$";var F=a++;i[F]="^\\s*("+i[k]+")\\s+-\\s+("+i[k]+")\\s*$";var G=a++;i[G]="(<|>)?=?\\s*\\*";for(var U=0;U<35;U++)t(U,i[U]),o[U]||(o[U]=new RegExp(i[U]));function X(e,r){if(e instanceof z)return e;if("string"!=typeof e)return null;if(e.length>n)return null;if(!(r?o[E]:o[y]).test(e))return null;try{return new z(e,r)}catch(e){return null}}function z(e,r){if(e instanceof z){if(e.loose===r)return e;e=e.version}else if("string"!=typeof e)throw new TypeError("Invalid Version: "+e);if(e.length>n)throw new TypeError("version is longer than "+n+" characters");if(!(this instanceof z))return new z(e,r);t("SemVer",e,r),this.loose=r;var i=e.trim().match(r?o[E]:o[y]);if(!i)throw new TypeError("Invalid Version: "+e);if(this.raw=e,this.major=+i[1],this.minor=+i[2],this.patch=+i[3],this.major>s||this.major<0)throw new TypeError("Invalid major version");if(this.minor>s||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>s||this.patch<0)throw new TypeError("Invalid patch version");i[4]?this.prerelease=i[4].split(".").map(function(e){if(/^[0-9]+$/.test(e)){var r=+e;if(r>=0&&r=0;)"number"==typeof this.prerelease[t]&&(this.prerelease[t]++,t=-2);-1===t&&this.prerelease.push(0)}r&&(this.prerelease[0]===r?isNaN(this.prerelease[1])&&(this.prerelease=[r,0]):this.prerelease=[r,0]);break;default:throw new Error("invalid increment argument: "+e)}return this.format(),this.raw=this.version,this},r.inc=function(e,r,t,n){"string"==typeof t&&(n=t,t=void 0);try{return new z(e,t).inc(r,n).version}catch(e){return null}},r.diff=function(e,r){if(Y(e,r))return null;var t=X(e),n=X(r);if(t.prerelease.length||n.prerelease.length){for(var s in t)if(("major"===s||"minor"===s||"patch"===s)&&t[s]!==n[s])return"pre"+s;return"prerelease"}for(var s in t)if(("major"===s||"minor"===s||"patch"===s)&&t[s]!==n[s])return s},r.compareIdentifiers=J;var Z=/^[0-9]+$/;function J(e,r){var t=Z.test(e),n=Z.test(r);return t&&n&&(e=+e,r=+r),t&&!n?-1:n&&!t?1:er?1:0}function K(e,r,t){return new z(e,t).compare(new z(r,t))}function Q(e,r,t){return K(e,r,t)>0}function W(e,r,t){return K(e,r,t)<0}function Y(e,r,t){return 0===K(e,r,t)}function ee(e,r,t){return 0!==K(e,r,t)}function re(e,r,t){return K(e,r,t)>=0}function te(e,r,t){return K(e,r,t)<=0}function ne(e,r,t,n){var s;switch(r){case"===":"object"==typeof e&&(e=e.version),"object"==typeof t&&(t=t.version),s=e===t;break;case"!==":"object"==typeof e&&(e=e.version),"object"==typeof t&&(t=t.version),s=e!==t;break;case"":case"=":case"==":s=Y(e,t,n);break;case"!=":s=ee(e,t,n);break;case">":s=Q(e,t,n);break;case">=":s=re(e,t,n);break;case"<":s=W(e,t,n);break;case"<=":s=te(e,t,n);break;default:throw new TypeError("Invalid operator: "+r)}return s}function se(e,r){if(e instanceof se){if(e.loose===r)return e;e=e.value}if(!(this instanceof se))return new se(e,r);t("comparator",e,r),this.loose=r,this.parse(e),this.semver===oe?this.value="":this.value=this.operator+this.semver.version,t("comp",this)}r.rcompareIdentifiers=function(e,r){return J(r,e)},r.major=function(e,r){return new z(e,r).major},r.minor=function(e,r){return new z(e,r).minor},r.patch=function(e,r){return new z(e,r).patch},r.compare=K,r.compareLoose=function(e,r){return K(e,r,!0)},r.rcompare=function(e,r,t){return K(r,e,t)},r.sort=function(e,t){return e.sort(function(e,n){return r.compare(e,n,t)})},r.rsort=function(e,t){return e.sort(function(e,n){return r.rcompare(e,n,t)})},r.gt=Q,r.lt=W,r.eq=Y,r.neq=ee,r.gte=re,r.lte=te,r.cmp=ne,r.Comparator=se;var oe={};function ie(e,r){if(e instanceof ie)return e.loose===r?e:new ie(e.raw,r);if(e instanceof se)return new ie(e.value,r);if(!(this instanceof ie))return new ie(e,r);if(this.loose=r,this.raw=e,this.set=e.split(/\s*\|\|\s*/).map(function(e){return this.parseRange(e.trim())},this).filter(function(e){return e.length}),!this.set.length)throw new TypeError("Invalid SemVer Range: "+e);this.format()}function ae(e){return!e||"x"===e.toLowerCase()||"*"===e}function ce(e,r,t,n,s,o,i,a,c,p,u,l,v){return((r=ae(t)?"":ae(n)?">="+t+".0.0":ae(s)?">="+t+"."+n+".0":">="+r)+" "+(a=ae(c)?"":ae(p)?"<"+(+c+1)+".0.0":ae(u)?"<"+c+"."+(+p+1)+".0":l?"<="+c+"."+p+"."+u+"-"+l:"<="+a)).trim()}function pe(e,r){for(var n=0;n0){var s=e[n].semver;if(s.major===r.major&&s.minor===r.minor&&s.patch===r.patch)return!0}return!1}return!0}function ue(e,r,t){try{r=new ie(r,t)}catch(e){return!1}return r.test(e)}function le(e,r,t,n){var s,o,i,a,c;switch(e=new z(e,n),r=new ie(r,n),t){case">":s=Q,o=te,i=W,a=">",c=">=";break;case"<":s=W,o=re,i=Q,a="<",c="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(ue(e,r,n))return!1;for(var p=0;p=0.0.0")),l=l||e,v=v||e,s(e.semver,l.semver,n)?l=e:i(e.semver,v.semver,n)&&(v=e)}),l.operator===a||l.operator===c)return!1;if((!v.operator||v.operator===a)&&o(e,v.semver))return!1;if(v.operator===c&&i(e,v.semver))return!1}return!0}se.prototype.parse=function(e){var r=this.loose?o[N]:o[B],t=e.match(r);if(!t)throw new TypeError("Invalid comparator: "+e);this.operator=t[1],"="===this.operator&&(this.operator=""),t[2]?this.semver=new z(t[2],this.loose):this.semver=oe},se.prototype.toString=function(){return this.value},se.prototype.test=function(e){return t("Comparator.test",e,this.loose),this.semver===oe||("string"==typeof e&&(e=new z(e,this.loose)),ne(e,this.operator,this.semver,this.loose))},se.prototype.intersects=function(e,r){if(!(e instanceof se))throw new TypeError("a Comparator is required");var t;if(""===this.operator)return t=new ie(e.value,r),ue(this.value,t,r);if(""===e.operator)return t=new ie(this.value,r),ue(e.semver,t,r);var n=!(">="!==this.operator&&">"!==this.operator||">="!==e.operator&&">"!==e.operator),s=!("<="!==this.operator&&"<"!==this.operator||"<="!==e.operator&&"<"!==e.operator),o=this.semver.version===e.semver.version,i=!(">="!==this.operator&&"<="!==this.operator||">="!==e.operator&&"<="!==e.operator),a=ne(this.semver,"<",e.semver,r)&&(">="===this.operator||">"===this.operator)&&("<="===e.operator||"<"===e.operator),c=ne(this.semver,">",e.semver,r)&&("<="===this.operator||"<"===this.operator)&&(">="===e.operator||">"===e.operator);return n||s||o&&i||a||c},r.Range=ie,ie.prototype.format=function(){return this.range=this.set.map(function(e){return e.join(" ").trim()}).join("||").trim(),this.range},ie.prototype.toString=function(){return this.range},ie.prototype.parseRange=function(e){var r=this.loose;e=e.trim(),t("range",e,r);var n=r?o[F]:o[H];e=e.replace(n,ce),t("hyphen replace",e),e=e.replace(o[D],"$1$2$3"),t("comparator trim",e,o[D]),e=(e=(e=e.replace(o[L],"$1~")).replace(o[q],"$1^")).split(/\s+/).join(" ");var s=r?o[N]:o[B],i=e.split(" ").map(function(e){return function(e,r){return t("comp",e),e=function(e,r){return e.trim().split(/\s+/).map(function(e){return function(e,r){t("caret",e,r);var n=r?o[M]:o[P];return e.replace(n,function(r,n,s,o,i){var a;return t("caret",e,r,n,s,o,i),ae(n)?a="":ae(s)?a=">="+n+".0.0 <"+(+n+1)+".0.0":ae(o)?a="0"===n?">="+n+"."+s+".0 <"+n+"."+(+s+1)+".0":">="+n+"."+s+".0 <"+(+n+1)+".0.0":i?(t("replaceCaret pr",i),"-"!==i.charAt(0)&&(i="-"+i),a="0"===n?"0"===s?">="+n+"."+s+"."+o+i+" <"+n+"."+s+"."+(+o+1):">="+n+"."+s+"."+o+i+" <"+n+"."+(+s+1)+".0":">="+n+"."+s+"."+o+i+" <"+(+n+1)+".0.0"):(t("no pr"),a="0"===n?"0"===s?">="+n+"."+s+"."+o+" <"+n+"."+s+"."+(+o+1):">="+n+"."+s+"."+o+" <"+n+"."+(+s+1)+".0":">="+n+"."+s+"."+o+" <"+(+n+1)+".0.0"),t("caret return",a),a})}(e,r)}).join(" ")}(e,r),t("caret",e),e=function(e,r){return e.trim().split(/\s+/).map(function(e){return function(e,r){var n=r?o[I]:o[A];return e.replace(n,function(r,n,s,o,i){var a;return t("tilde",e,r,n,s,o,i),ae(n)?a="":ae(s)?a=">="+n+".0.0 <"+(+n+1)+".0.0":ae(o)?a=">="+n+"."+s+".0 <"+n+"."+(+s+1)+".0":i?(t("replaceTilde pr",i),"-"!==i.charAt(0)&&(i="-"+i),a=">="+n+"."+s+"."+o+i+" <"+n+"."+(+s+1)+".0"):a=">="+n+"."+s+"."+o+" <"+n+"."+(+s+1)+".0",t("tilde return",a),a})}(e,r)}).join(" ")}(e,r),t("tildes",e),e=function(e,r){return t("replaceXRanges",e,r),e.split(/\s+/).map(function(e){return function(e,r){e=e.trim();var n=r?o[T]:o[R];return e.replace(n,function(r,n,s,o,i,a){t("xRange",e,r,n,s,o,i,a);var c=ae(s),p=c||ae(o),u=p||ae(i),l=u;return"="===n&&l&&(n=""),c?r=">"===n||"<"===n?"<0.0.0":"*":n&&l?(p&&(o=0),u&&(i=0),">"===n?(n=">=",p?(s=+s+1,o=0,i=0):u&&(o=+o+1,i=0)):"<="===n&&(n="<",p?s=+s+1:o=+o+1),r=n+s+"."+o+"."+i):p?r=">="+s+".0.0 <"+(+s+1)+".0.0":u&&(r=">="+s+"."+o+".0 <"+s+"."+(+o+1)+".0"),t("xRange return",r),r})}(e,r)}).join(" ")}(e,r),t("xrange",e),e=function(e,r){return t("replaceStars",e,r),e.trim().replace(o[G],"")}(e,r),t("stars",e),e}(e,r)}).join(" ").split(/\s+/);return this.loose&&(i=i.filter(function(e){return!!e.match(s)})),i=i.map(function(e){return new se(e,r)})},ie.prototype.intersects=function(e,r){if(!(e instanceof ie))throw new TypeError("a Range is required");return this.set.some(function(t){return t.every(function(t){return e.set.some(function(e){return e.every(function(e){return t.intersects(e,r)})})})})},r.toComparators=function(e,r){return new ie(e,r).set.map(function(e){return e.map(function(e){return e.value}).join(" ").trim().split(" ")})},ie.prototype.test=function(e){if(!e)return!1;"string"==typeof e&&(e=new z(e,this.loose));for(var r=0;r",t)},r.outside=le,r.prerelease=function(e,r){var t=X(e,r);return t&&t.prerelease.length?t.prerelease:null},r.intersects=function(e,r,t){return e=new ie(e,t),r=new ie(r,t),e.intersects(r)},r.coerce=function(e){if(e instanceof z)return e;if("string"!=typeof e)return null;var r=e.match(o[O]);return null==r?null:X((r[1]||"0")+"."+(r[2]||"0")+"."+(r[3]||"0"))}}),semver_1=semver.SEMVER_SPEC_VERSION,semver_2=semver.re,semver_3=semver.src,semver_4=semver.parse,semver_5=semver.valid,semver_6=semver.clean,semver_7=semver.SemVer,semver_8=semver.inc,semver_9=semver.diff,semver_10=semver.compareIdentifiers,semver_11=semver.rcompareIdentifiers,semver_12=semver.major,semver_13=semver.minor,semver_14=semver.patch,semver_15=semver.compare,semver_16=semver.compareLoose,semver_17=semver.rcompare,semver_18=semver.sort,semver_19=semver.rsort,semver_20=semver.gt,semver_21=semver.lt,semver_22=semver.eq,semver_23=semver.neq,semver_24=semver.gte,semver_25=semver.lte,semver_26=semver.cmp,semver_27=semver.Comparator,semver_28=semver.Range,semver_29=semver.toComparators,semver_30=semver.satisfies,semver_31=semver.maxSatisfying,semver_32=semver.minSatisfying,semver_33=semver.validRange,semver_34=semver.ltr,semver_35=semver.gtr,semver_36=semver.outside,semver_37=semver.prerelease,semver_38=semver.intersects,semver_39=semver.coerce;const{argv:argv}=process,verbose=-1!==argv.indexOf("-v")||-1!==argv.indexOf("--verbose"),ignoreLocalBin=-1!==argv.indexOf("-i")||-1!==argv.indexOf("--ignore-local-bin"),logger=console;verbose||(logger.debug=(()=>{}));const getVersion=({command:e,localBinFolder:r,global:t=!0})=>{const n={PATH:process.env.PATH};return n.PATH=t?n.PATH.replace(`${r}${path.delimiter}`,""):`${r}${path.delimiter}${n.PATH}`,child_process.execSync(e,{env:n}).toString().replace("v","").trim()},checkVersion=(e,r)=>{let t=null;const n=path.join(process.cwd(),"package.json");try{t=require(n)}catch(e){logger.error(`Unable to find ${n}! 😱${os.EOL}`),logger.error(`Please ensure that this script is executed in the same directory.${os.EOL}`),process.exit(1)}t.engines&&t.engines[e]||(logger.error(`There is no engine named "${e}" specified in package.json! 😱${os.EOL}`),process.exit(1));const s=t.engines[e];let o=null,i=null,a=null,c=null,p=null;try{const t=child_process.execSync("npm bin").toString().trim(),n=fs.existsSync(`${t}${path.sep}${e}`);o=getVersion({command:r,localBinFolder:t}),c=semver.satisfies(o,s),logger.debug(`Expected ${e} version:\t${s}`),logger.debug(`╰─ Global ${e} version:\t${o}\t${c?"✅️":"❌️"}`),n&&(i=getVersion({command:r,localBinFolder:t,global:!1}),p=semver.satisfies(i,s),logger.debug(`╰─ Local ${e} version:\t${i}\t${p?"✅️":"❌️"} (from ${t})`)),a=ignoreLocalBin?o:i||o,logger.debug(`╰─ (using: ${a})${os.EOL}`)}catch(r){logger.error(`Unable to get ${e} version! 😱${os.EOL}`),process.exit(1)}if(!semver.satisfies(a,s)){const r="https://github.com/Skyscanner/ensure-node-env/blob/master/README.md#guide";logger.error(`Expected ${e} version to match ${s}, but got ${a}. 😱${os.EOL}`),verbose||logger.error(`(pass the --verbose flag to the script for a more detailed output)${os.EOL}`),logger.error(`Please follow Skyscanner's node environment guide (see ${r}).${os.EOL}`),process.exit(1)}};logger.info(`Checking node & npm versions...${os.EOL}`),checkVersion("node","node --version"),checkVersion("npm","npm -g --version"),logger.info(`All good. 👍${os.EOL}`); diff --git a/index.js b/index.js index 579c4ad..564bce5 100644 --- a/index.js +++ b/index.js @@ -24,35 +24,14 @@ import { execSync } from 'child_process'; import { existsSync } from 'fs'; import { EOL } from 'os'; -import userInput from 'commander'; - -// This is a workaround for an issue in commander's argument parser. -// See https://github.com/tj/commander.js/issues/512 -const getNormalisedArgs = () => { - const args = process.argv; - - // Detect execution without a script (e.g. node -e ) - // and insert a second argument when appropriate. - // For more info about the defaults, see https://nodejs.org/docs/latest-v8.x/api/process.html#process_process_argv - if (!process.mainModule) { - const execPath = args.shift(); - args.unshift(execPath, module.filename); - } - - return args; -}; - -userInput - .option( - '-i, --ignore-local-bin', - 'Ignore any binaries in ./node_modules/.bin', - ) - .option('-v, --verbose', 'Prints information about all the binaries detected') - .parse(getNormalisedArgs()); +const { argv } = process; +const verbose = argv.indexOf('-v') !== -1 || argv.indexOf('--verbose') !== -1; +const ignoreLocalBin = + argv.indexOf('-i') !== -1 || argv.indexOf('--ignore-local-bin') !== -1; const logger = console; -if (!userInput.verbose) { +if (!verbose) { logger.debug = () => {}; } @@ -130,7 +109,7 @@ const checkVersion = (engineName, command) => { ); } - if (userInput.ignoreLocalBin) { + if (ignoreLocalBin) { usedVersion = globalVersion; } else { usedVersion = localVersion || globalVersion; @@ -149,7 +128,7 @@ const checkVersion = (engineName, command) => { `Expected ${engineName} version to match ${expected}, but got ${usedVersion}. 😱${EOL}`, ); - if (!userInput.verbose) { + if (!verbose) { logger.error( `(pass the --verbose flag to the script for a more detailed output)${EOL}`, ); @@ -167,4 +146,4 @@ logger.info(`Checking node & npm versions...${EOL}`); checkVersion('node', 'node --version'); checkVersion('npm', 'npm -g --version'); -logger.info(`${EOL}All good. 👍${EOL}`); +logger.info(`All good. 👍${EOL}`); diff --git a/package-lock.json b/package-lock.json index 3c04cb9..316750e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -496,7 +496,8 @@ "commander": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", - "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==" + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", + "dev": true }, "concat-map": { "version": "0.0.1", @@ -2376,8 +2377,7 @@ "semver": { "version": "5.5.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz", - "integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==", - "dev": true + "integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==" }, "serialize-javascript": { "version": "1.5.0", diff --git a/package.json b/package.json index 5de811e..15f4def 100644 --- a/package.json +++ b/package.json @@ -36,10 +36,9 @@ "rollup": "^0.67.1", "rollup-plugin-commonjs": "^9.1.8", "rollup-plugin-node-resolve": "^3.4.0", - "rollup-plugin-terser": "^3.0.0", - "semver": "^5.5.1" + "rollup-plugin-terser": "^3.0.0" }, "dependencies": { - "commander": "^2.19.0" + "semver": "^5.5.1" } } diff --git a/rollup.config.js b/rollup.config.js index 0f9dc44..7934fca 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -2,8 +2,7 @@ import { terser } from 'rollup-plugin-terser'; import commonjs from 'rollup-plugin-commonjs'; import resolve from 'rollup-plugin-node-resolve'; -// 'events' and 'util' are used by the 3rd party `commander` package -const COMMON_IMPORTS = ['path', 'child_process', 'os', 'fs', 'events', 'util']; +const COMMON_IMPORTS = ['path', 'child_process', 'os', 'fs']; const COMMON_PLUGINS = [resolve(), commonjs(), terser()]; export default [ From ede6ab7c427a1326e0851a3287b9deaab4686392 Mon Sep 17 00:00:00 2001 From: Matthew Davidson Date: Thu, 29 Nov 2018 17:22:40 +0000 Subject: [PATCH 6/7] [squash] Avoid overriding global `console` object --- dist/cli.js | 2 +- dist/index.js | 2 +- index.js | 10 +++++----- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/dist/cli.js b/dist/cli.js index fa2fd1b..30c6140 100644 --- a/dist/cli.js +++ b/dist/cli.js @@ -1,2 +1,2 @@ #!/usr/bin/env node -"use strict";function _interopDefault(e){return e&&"object"==typeof e&&"default"in e?e.default:e}var path=_interopDefault(require("path")),child_process=require("child_process"),fs=require("fs"),os=require("os");function createCommonjsModule(e,r){return e(r={exports:{}},r.exports),r.exports}var semver=createCommonjsModule(function(e,r){var t;r=e.exports=z,t="object"==typeof process&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?function(){var e=Array.prototype.slice.call(arguments,0);e.unshift("SEMVER"),console.log.apply(console,e)}:function(){},r.SEMVER_SPEC_VERSION="2.0.0";var n=256,s=Number.MAX_SAFE_INTEGER||9007199254740991,o=r.re=[],i=r.src=[],a=0,c=a++;i[c]="0|[1-9]\\d*";var p=a++;i[p]="[0-9]+";var u=a++;i[u]="\\d*[a-zA-Z-][a-zA-Z0-9-]*";var l=a++;i[l]="("+i[c]+")\\.("+i[c]+")\\.("+i[c]+")";var v=a++;i[v]="("+i[p]+")\\.("+i[p]+")\\.("+i[p]+")";var h=a++;i[h]="(?:"+i[c]+"|"+i[u]+")";var m=a++;i[m]="(?:"+i[p]+"|"+i[u]+")";var f=a++;i[f]="(?:-("+i[h]+"(?:\\."+i[h]+")*))";var g=a++;i[g]="(?:-?("+i[m]+"(?:\\."+i[m]+")*))";var d=a++;i[d]="[0-9A-Za-z-]+";var w=a++;i[w]="(?:\\+("+i[d]+"(?:\\."+i[d]+")*))";var y=a++,$="v?"+i[l]+i[f]+"?"+i[w]+"?";i[y]="^"+$+"$";var _="[v=\\s]*"+i[v]+i[g]+"?"+i[w]+"?",E=a++;i[E]="^"+_+"$";var b=a++;i[b]="((?:<|>)?=?)";var j=a++;i[j]=i[p]+"|x|X|\\*";var x=a++;i[x]=i[c]+"|x|X|\\*";var S=a++;i[S]="[v=\\s]*("+i[x]+")(?:\\.("+i[x]+")(?:\\.("+i[x]+")(?:"+i[f]+")?"+i[w]+"?)?)?";var k=a++;i[k]="[v=\\s]*("+i[j]+")(?:\\.("+i[j]+")(?:\\.("+i[j]+")(?:"+i[g]+")?"+i[w]+"?)?)?";var R=a++;i[R]="^"+i[b]+"\\s*"+i[S]+"$";var T=a++;i[T]="^"+i[b]+"\\s*"+i[k]+"$";var O=a++;i[O]="(?:^|[^\\d])(\\d{1,16})(?:\\.(\\d{1,16}))?(?:\\.(\\d{1,16}))?(?:$|[^\\d])";var V=a++;i[V]="(?:~>?)";var L=a++;i[L]="(\\s*)"+i[V]+"\\s+",o[L]=new RegExp(i[L],"g");var A=a++;i[A]="^"+i[V]+i[S]+"$";var I=a++;i[I]="^"+i[V]+i[k]+"$";var C=a++;i[C]="(?:\\^)";var q=a++;i[q]="(\\s*)"+i[C]+"\\s+",o[q]=new RegExp(i[q],"g");var P=a++;i[P]="^"+i[C]+i[S]+"$";var M=a++;i[M]="^"+i[C]+i[k]+"$";var N=a++;i[N]="^"+i[b]+"\\s*("+_+")$|^$";var B=a++;i[B]="^"+i[b]+"\\s*("+$+")$|^$";var D=a++;i[D]="(\\s*)"+i[b]+"\\s*("+_+"|"+i[S]+")",o[D]=new RegExp(i[D],"g");var H=a++;i[H]="^\\s*("+i[S]+")\\s+-\\s+("+i[S]+")\\s*$";var F=a++;i[F]="^\\s*("+i[k]+")\\s+-\\s+("+i[k]+")\\s*$";var G=a++;i[G]="(<|>)?=?\\s*\\*";for(var U=0;U<35;U++)t(U,i[U]),o[U]||(o[U]=new RegExp(i[U]));function X(e,r){if(e instanceof z)return e;if("string"!=typeof e)return null;if(e.length>n)return null;if(!(r?o[E]:o[y]).test(e))return null;try{return new z(e,r)}catch(e){return null}}function z(e,r){if(e instanceof z){if(e.loose===r)return e;e=e.version}else if("string"!=typeof e)throw new TypeError("Invalid Version: "+e);if(e.length>n)throw new TypeError("version is longer than "+n+" characters");if(!(this instanceof z))return new z(e,r);t("SemVer",e,r),this.loose=r;var i=e.trim().match(r?o[E]:o[y]);if(!i)throw new TypeError("Invalid Version: "+e);if(this.raw=e,this.major=+i[1],this.minor=+i[2],this.patch=+i[3],this.major>s||this.major<0)throw new TypeError("Invalid major version");if(this.minor>s||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>s||this.patch<0)throw new TypeError("Invalid patch version");i[4]?this.prerelease=i[4].split(".").map(function(e){if(/^[0-9]+$/.test(e)){var r=+e;if(r>=0&&r=0;)"number"==typeof this.prerelease[t]&&(this.prerelease[t]++,t=-2);-1===t&&this.prerelease.push(0)}r&&(this.prerelease[0]===r?isNaN(this.prerelease[1])&&(this.prerelease=[r,0]):this.prerelease=[r,0]);break;default:throw new Error("invalid increment argument: "+e)}return this.format(),this.raw=this.version,this},r.inc=function(e,r,t,n){"string"==typeof t&&(n=t,t=void 0);try{return new z(e,t).inc(r,n).version}catch(e){return null}},r.diff=function(e,r){if(Y(e,r))return null;var t=X(e),n=X(r);if(t.prerelease.length||n.prerelease.length){for(var s in t)if(("major"===s||"minor"===s||"patch"===s)&&t[s]!==n[s])return"pre"+s;return"prerelease"}for(var s in t)if(("major"===s||"minor"===s||"patch"===s)&&t[s]!==n[s])return s},r.compareIdentifiers=J;var Z=/^[0-9]+$/;function J(e,r){var t=Z.test(e),n=Z.test(r);return t&&n&&(e=+e,r=+r),t&&!n?-1:n&&!t?1:er?1:0}function K(e,r,t){return new z(e,t).compare(new z(r,t))}function Q(e,r,t){return K(e,r,t)>0}function W(e,r,t){return K(e,r,t)<0}function Y(e,r,t){return 0===K(e,r,t)}function ee(e,r,t){return 0!==K(e,r,t)}function re(e,r,t){return K(e,r,t)>=0}function te(e,r,t){return K(e,r,t)<=0}function ne(e,r,t,n){var s;switch(r){case"===":"object"==typeof e&&(e=e.version),"object"==typeof t&&(t=t.version),s=e===t;break;case"!==":"object"==typeof e&&(e=e.version),"object"==typeof t&&(t=t.version),s=e!==t;break;case"":case"=":case"==":s=Y(e,t,n);break;case"!=":s=ee(e,t,n);break;case">":s=Q(e,t,n);break;case">=":s=re(e,t,n);break;case"<":s=W(e,t,n);break;case"<=":s=te(e,t,n);break;default:throw new TypeError("Invalid operator: "+r)}return s}function se(e,r){if(e instanceof se){if(e.loose===r)return e;e=e.value}if(!(this instanceof se))return new se(e,r);t("comparator",e,r),this.loose=r,this.parse(e),this.semver===oe?this.value="":this.value=this.operator+this.semver.version,t("comp",this)}r.rcompareIdentifiers=function(e,r){return J(r,e)},r.major=function(e,r){return new z(e,r).major},r.minor=function(e,r){return new z(e,r).minor},r.patch=function(e,r){return new z(e,r).patch},r.compare=K,r.compareLoose=function(e,r){return K(e,r,!0)},r.rcompare=function(e,r,t){return K(r,e,t)},r.sort=function(e,t){return e.sort(function(e,n){return r.compare(e,n,t)})},r.rsort=function(e,t){return e.sort(function(e,n){return r.rcompare(e,n,t)})},r.gt=Q,r.lt=W,r.eq=Y,r.neq=ee,r.gte=re,r.lte=te,r.cmp=ne,r.Comparator=se;var oe={};function ie(e,r){if(e instanceof ie)return e.loose===r?e:new ie(e.raw,r);if(e instanceof se)return new ie(e.value,r);if(!(this instanceof ie))return new ie(e,r);if(this.loose=r,this.raw=e,this.set=e.split(/\s*\|\|\s*/).map(function(e){return this.parseRange(e.trim())},this).filter(function(e){return e.length}),!this.set.length)throw new TypeError("Invalid SemVer Range: "+e);this.format()}function ae(e){return!e||"x"===e.toLowerCase()||"*"===e}function ce(e,r,t,n,s,o,i,a,c,p,u,l,v){return((r=ae(t)?"":ae(n)?">="+t+".0.0":ae(s)?">="+t+"."+n+".0":">="+r)+" "+(a=ae(c)?"":ae(p)?"<"+(+c+1)+".0.0":ae(u)?"<"+c+"."+(+p+1)+".0":l?"<="+c+"."+p+"."+u+"-"+l:"<="+a)).trim()}function pe(e,r){for(var n=0;n0){var s=e[n].semver;if(s.major===r.major&&s.minor===r.minor&&s.patch===r.patch)return!0}return!1}return!0}function ue(e,r,t){try{r=new ie(r,t)}catch(e){return!1}return r.test(e)}function le(e,r,t,n){var s,o,i,a,c;switch(e=new z(e,n),r=new ie(r,n),t){case">":s=Q,o=te,i=W,a=">",c=">=";break;case"<":s=W,o=re,i=Q,a="<",c="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(ue(e,r,n))return!1;for(var p=0;p=0.0.0")),l=l||e,v=v||e,s(e.semver,l.semver,n)?l=e:i(e.semver,v.semver,n)&&(v=e)}),l.operator===a||l.operator===c)return!1;if((!v.operator||v.operator===a)&&o(e,v.semver))return!1;if(v.operator===c&&i(e,v.semver))return!1}return!0}se.prototype.parse=function(e){var r=this.loose?o[N]:o[B],t=e.match(r);if(!t)throw new TypeError("Invalid comparator: "+e);this.operator=t[1],"="===this.operator&&(this.operator=""),t[2]?this.semver=new z(t[2],this.loose):this.semver=oe},se.prototype.toString=function(){return this.value},se.prototype.test=function(e){return t("Comparator.test",e,this.loose),this.semver===oe||("string"==typeof e&&(e=new z(e,this.loose)),ne(e,this.operator,this.semver,this.loose))},se.prototype.intersects=function(e,r){if(!(e instanceof se))throw new TypeError("a Comparator is required");var t;if(""===this.operator)return t=new ie(e.value,r),ue(this.value,t,r);if(""===e.operator)return t=new ie(this.value,r),ue(e.semver,t,r);var n=!(">="!==this.operator&&">"!==this.operator||">="!==e.operator&&">"!==e.operator),s=!("<="!==this.operator&&"<"!==this.operator||"<="!==e.operator&&"<"!==e.operator),o=this.semver.version===e.semver.version,i=!(">="!==this.operator&&"<="!==this.operator||">="!==e.operator&&"<="!==e.operator),a=ne(this.semver,"<",e.semver,r)&&(">="===this.operator||">"===this.operator)&&("<="===e.operator||"<"===e.operator),c=ne(this.semver,">",e.semver,r)&&("<="===this.operator||"<"===this.operator)&&(">="===e.operator||">"===e.operator);return n||s||o&&i||a||c},r.Range=ie,ie.prototype.format=function(){return this.range=this.set.map(function(e){return e.join(" ").trim()}).join("||").trim(),this.range},ie.prototype.toString=function(){return this.range},ie.prototype.parseRange=function(e){var r=this.loose;e=e.trim(),t("range",e,r);var n=r?o[F]:o[H];e=e.replace(n,ce),t("hyphen replace",e),e=e.replace(o[D],"$1$2$3"),t("comparator trim",e,o[D]),e=(e=(e=e.replace(o[L],"$1~")).replace(o[q],"$1^")).split(/\s+/).join(" ");var s=r?o[N]:o[B],i=e.split(" ").map(function(e){return function(e,r){return t("comp",e),e=function(e,r){return e.trim().split(/\s+/).map(function(e){return function(e,r){t("caret",e,r);var n=r?o[M]:o[P];return e.replace(n,function(r,n,s,o,i){var a;return t("caret",e,r,n,s,o,i),ae(n)?a="":ae(s)?a=">="+n+".0.0 <"+(+n+1)+".0.0":ae(o)?a="0"===n?">="+n+"."+s+".0 <"+n+"."+(+s+1)+".0":">="+n+"."+s+".0 <"+(+n+1)+".0.0":i?(t("replaceCaret pr",i),"-"!==i.charAt(0)&&(i="-"+i),a="0"===n?"0"===s?">="+n+"."+s+"."+o+i+" <"+n+"."+s+"."+(+o+1):">="+n+"."+s+"."+o+i+" <"+n+"."+(+s+1)+".0":">="+n+"."+s+"."+o+i+" <"+(+n+1)+".0.0"):(t("no pr"),a="0"===n?"0"===s?">="+n+"."+s+"."+o+" <"+n+"."+s+"."+(+o+1):">="+n+"."+s+"."+o+" <"+n+"."+(+s+1)+".0":">="+n+"."+s+"."+o+" <"+(+n+1)+".0.0"),t("caret return",a),a})}(e,r)}).join(" ")}(e,r),t("caret",e),e=function(e,r){return e.trim().split(/\s+/).map(function(e){return function(e,r){var n=r?o[I]:o[A];return e.replace(n,function(r,n,s,o,i){var a;return t("tilde",e,r,n,s,o,i),ae(n)?a="":ae(s)?a=">="+n+".0.0 <"+(+n+1)+".0.0":ae(o)?a=">="+n+"."+s+".0 <"+n+"."+(+s+1)+".0":i?(t("replaceTilde pr",i),"-"!==i.charAt(0)&&(i="-"+i),a=">="+n+"."+s+"."+o+i+" <"+n+"."+(+s+1)+".0"):a=">="+n+"."+s+"."+o+" <"+n+"."+(+s+1)+".0",t("tilde return",a),a})}(e,r)}).join(" ")}(e,r),t("tildes",e),e=function(e,r){return t("replaceXRanges",e,r),e.split(/\s+/).map(function(e){return function(e,r){e=e.trim();var n=r?o[T]:o[R];return e.replace(n,function(r,n,s,o,i,a){t("xRange",e,r,n,s,o,i,a);var c=ae(s),p=c||ae(o),u=p||ae(i),l=u;return"="===n&&l&&(n=""),c?r=">"===n||"<"===n?"<0.0.0":"*":n&&l?(p&&(o=0),u&&(i=0),">"===n?(n=">=",p?(s=+s+1,o=0,i=0):u&&(o=+o+1,i=0)):"<="===n&&(n="<",p?s=+s+1:o=+o+1),r=n+s+"."+o+"."+i):p?r=">="+s+".0.0 <"+(+s+1)+".0.0":u&&(r=">="+s+"."+o+".0 <"+s+"."+(+o+1)+".0"),t("xRange return",r),r})}(e,r)}).join(" ")}(e,r),t("xrange",e),e=function(e,r){return t("replaceStars",e,r),e.trim().replace(o[G],"")}(e,r),t("stars",e),e}(e,r)}).join(" ").split(/\s+/);return this.loose&&(i=i.filter(function(e){return!!e.match(s)})),i=i.map(function(e){return new se(e,r)})},ie.prototype.intersects=function(e,r){if(!(e instanceof ie))throw new TypeError("a Range is required");return this.set.some(function(t){return t.every(function(t){return e.set.some(function(e){return e.every(function(e){return t.intersects(e,r)})})})})},r.toComparators=function(e,r){return new ie(e,r).set.map(function(e){return e.map(function(e){return e.value}).join(" ").trim().split(" ")})},ie.prototype.test=function(e){if(!e)return!1;"string"==typeof e&&(e=new z(e,this.loose));for(var r=0;r",t)},r.outside=le,r.prerelease=function(e,r){var t=X(e,r);return t&&t.prerelease.length?t.prerelease:null},r.intersects=function(e,r,t){return e=new ie(e,t),r=new ie(r,t),e.intersects(r)},r.coerce=function(e){if(e instanceof z)return e;if("string"!=typeof e)return null;var r=e.match(o[O]);return null==r?null:X((r[1]||"0")+"."+(r[2]||"0")+"."+(r[3]||"0"))}}),semver_1=semver.SEMVER_SPEC_VERSION,semver_2=semver.re,semver_3=semver.src,semver_4=semver.parse,semver_5=semver.valid,semver_6=semver.clean,semver_7=semver.SemVer,semver_8=semver.inc,semver_9=semver.diff,semver_10=semver.compareIdentifiers,semver_11=semver.rcompareIdentifiers,semver_12=semver.major,semver_13=semver.minor,semver_14=semver.patch,semver_15=semver.compare,semver_16=semver.compareLoose,semver_17=semver.rcompare,semver_18=semver.sort,semver_19=semver.rsort,semver_20=semver.gt,semver_21=semver.lt,semver_22=semver.eq,semver_23=semver.neq,semver_24=semver.gte,semver_25=semver.lte,semver_26=semver.cmp,semver_27=semver.Comparator,semver_28=semver.Range,semver_29=semver.toComparators,semver_30=semver.satisfies,semver_31=semver.maxSatisfying,semver_32=semver.minSatisfying,semver_33=semver.validRange,semver_34=semver.ltr,semver_35=semver.gtr,semver_36=semver.outside,semver_37=semver.prerelease,semver_38=semver.intersects,semver_39=semver.coerce;const{argv:argv}=process,verbose=-1!==argv.indexOf("-v")||-1!==argv.indexOf("--verbose"),ignoreLocalBin=-1!==argv.indexOf("-i")||-1!==argv.indexOf("--ignore-local-bin"),logger=console;verbose||(logger.debug=(()=>{}));const getVersion=({command:e,localBinFolder:r,global:t=!0})=>{const n={PATH:process.env.PATH};return n.PATH=t?n.PATH.replace(`${r}${path.delimiter}`,""):`${r}${path.delimiter}${n.PATH}`,child_process.execSync(e,{env:n}).toString().replace("v","").trim()},checkVersion=(e,r)=>{let t=null;const n=path.join(process.cwd(),"package.json");try{t=require(n)}catch(e){logger.error(`Unable to find ${n}! 😱${os.EOL}`),logger.error(`Please ensure that this script is executed in the same directory.${os.EOL}`),process.exit(1)}t.engines&&t.engines[e]||(logger.error(`There is no engine named "${e}" specified in package.json! 😱${os.EOL}`),process.exit(1));const s=t.engines[e];let o=null,i=null,a=null,c=null,p=null;try{const t=child_process.execSync("npm bin").toString().trim(),n=fs.existsSync(`${t}${path.sep}${e}`);o=getVersion({command:r,localBinFolder:t}),c=semver.satisfies(o,s),logger.debug(`Expected ${e} version:\t${s}`),logger.debug(`╰─ Global ${e} version:\t${o}\t${c?"✅️":"❌️"}`),n&&(i=getVersion({command:r,localBinFolder:t,global:!1}),p=semver.satisfies(i,s),logger.debug(`╰─ Local ${e} version:\t${i}\t${p?"✅️":"❌️"} (from ${t})`)),a=ignoreLocalBin?o:i||o,logger.debug(`╰─ (using: ${a})${os.EOL}`)}catch(r){logger.error(`Unable to get ${e} version! 😱${os.EOL}`),process.exit(1)}if(!semver.satisfies(a,s)){const r="https://github.com/Skyscanner/ensure-node-env/blob/master/README.md#guide";logger.error(`Expected ${e} version to match ${s}, but got ${a}. 😱${os.EOL}`),verbose||logger.error(`(pass the --verbose flag to the script for a more detailed output)${os.EOL}`),logger.error(`Please follow Skyscanner's node environment guide (see ${r}).${os.EOL}`),process.exit(1)}};logger.info(`Checking node & npm versions...${os.EOL}`),checkVersion("node","node --version"),checkVersion("npm","npm -g --version"),logger.info(`All good. 👍${os.EOL}`); +"use strict";function _interopDefault(e){return e&&"object"==typeof e&&"default"in e?e.default:e}var path=_interopDefault(require("path")),child_process=require("child_process"),fs=require("fs"),os=require("os");function createCommonjsModule(e,r){return e(r={exports:{}},r.exports),r.exports}var semver=createCommonjsModule(function(e,r){var t;r=e.exports=z,t="object"==typeof process&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?function(){var e=Array.prototype.slice.call(arguments,0);e.unshift("SEMVER"),console.log.apply(console,e)}:function(){},r.SEMVER_SPEC_VERSION="2.0.0";var n=256,s=Number.MAX_SAFE_INTEGER||9007199254740991,o=r.re=[],i=r.src=[],a=0,c=a++;i[c]="0|[1-9]\\d*";var p=a++;i[p]="[0-9]+";var u=a++;i[u]="\\d*[a-zA-Z-][a-zA-Z0-9-]*";var l=a++;i[l]="("+i[c]+")\\.("+i[c]+")\\.("+i[c]+")";var v=a++;i[v]="("+i[p]+")\\.("+i[p]+")\\.("+i[p]+")";var h=a++;i[h]="(?:"+i[c]+"|"+i[u]+")";var m=a++;i[m]="(?:"+i[p]+"|"+i[u]+")";var f=a++;i[f]="(?:-("+i[h]+"(?:\\."+i[h]+")*))";var g=a++;i[g]="(?:-?("+i[m]+"(?:\\."+i[m]+")*))";var d=a++;i[d]="[0-9A-Za-z-]+";var w=a++;i[w]="(?:\\+("+i[d]+"(?:\\."+i[d]+")*))";var y=a++,$="v?"+i[l]+i[f]+"?"+i[w]+"?";i[y]="^"+$+"$";var _="[v=\\s]*"+i[v]+i[g]+"?"+i[w]+"?",b=a++;i[b]="^"+_+"$";var E=a++;i[E]="((?:<|>)?=?)";var j=a++;i[j]=i[p]+"|x|X|\\*";var x=a++;i[x]=i[c]+"|x|X|\\*";var S=a++;i[S]="[v=\\s]*("+i[x]+")(?:\\.("+i[x]+")(?:\\.("+i[x]+")(?:"+i[f]+")?"+i[w]+"?)?)?";var k=a++;i[k]="[v=\\s]*("+i[j]+")(?:\\.("+i[j]+")(?:\\.("+i[j]+")(?:"+i[g]+")?"+i[w]+"?)?)?";var R=a++;i[R]="^"+i[E]+"\\s*"+i[S]+"$";var T=a++;i[T]="^"+i[E]+"\\s*"+i[k]+"$";var O=a++;i[O]="(?:^|[^\\d])(\\d{1,16})(?:\\.(\\d{1,16}))?(?:\\.(\\d{1,16}))?(?:$|[^\\d])";var V=a++;i[V]="(?:~>?)";var L=a++;i[L]="(\\s*)"+i[V]+"\\s+",o[L]=new RegExp(i[L],"g");var A=a++;i[A]="^"+i[V]+i[S]+"$";var I=a++;i[I]="^"+i[V]+i[k]+"$";var C=a++;i[C]="(?:\\^)";var q=a++;i[q]="(\\s*)"+i[C]+"\\s+",o[q]=new RegExp(i[q],"g");var P=a++;i[P]="^"+i[C]+i[S]+"$";var M=a++;i[M]="^"+i[C]+i[k]+"$";var N=a++;i[N]="^"+i[E]+"\\s*("+_+")$|^$";var B=a++;i[B]="^"+i[E]+"\\s*("+$+")$|^$";var D=a++;i[D]="(\\s*)"+i[E]+"\\s*("+_+"|"+i[S]+")",o[D]=new RegExp(i[D],"g");var H=a++;i[H]="^\\s*("+i[S]+")\\s+-\\s+("+i[S]+")\\s*$";var F=a++;i[F]="^\\s*("+i[k]+")\\s+-\\s+("+i[k]+")\\s*$";var G=a++;i[G]="(<|>)?=?\\s*\\*";for(var U=0;U<35;U++)t(U,i[U]),o[U]||(o[U]=new RegExp(i[U]));function X(e,r){if(e instanceof z)return e;if("string"!=typeof e)return null;if(e.length>n)return null;if(!(r?o[b]:o[y]).test(e))return null;try{return new z(e,r)}catch(e){return null}}function z(e,r){if(e instanceof z){if(e.loose===r)return e;e=e.version}else if("string"!=typeof e)throw new TypeError("Invalid Version: "+e);if(e.length>n)throw new TypeError("version is longer than "+n+" characters");if(!(this instanceof z))return new z(e,r);t("SemVer",e,r),this.loose=r;var i=e.trim().match(r?o[b]:o[y]);if(!i)throw new TypeError("Invalid Version: "+e);if(this.raw=e,this.major=+i[1],this.minor=+i[2],this.patch=+i[3],this.major>s||this.major<0)throw new TypeError("Invalid major version");if(this.minor>s||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>s||this.patch<0)throw new TypeError("Invalid patch version");i[4]?this.prerelease=i[4].split(".").map(function(e){if(/^[0-9]+$/.test(e)){var r=+e;if(r>=0&&r=0;)"number"==typeof this.prerelease[t]&&(this.prerelease[t]++,t=-2);-1===t&&this.prerelease.push(0)}r&&(this.prerelease[0]===r?isNaN(this.prerelease[1])&&(this.prerelease=[r,0]):this.prerelease=[r,0]);break;default:throw new Error("invalid increment argument: "+e)}return this.format(),this.raw=this.version,this},r.inc=function(e,r,t,n){"string"==typeof t&&(n=t,t=void 0);try{return new z(e,t).inc(r,n).version}catch(e){return null}},r.diff=function(e,r){if(Y(e,r))return null;var t=X(e),n=X(r);if(t.prerelease.length||n.prerelease.length){for(var s in t)if(("major"===s||"minor"===s||"patch"===s)&&t[s]!==n[s])return"pre"+s;return"prerelease"}for(var s in t)if(("major"===s||"minor"===s||"patch"===s)&&t[s]!==n[s])return s},r.compareIdentifiers=J;var Z=/^[0-9]+$/;function J(e,r){var t=Z.test(e),n=Z.test(r);return t&&n&&(e=+e,r=+r),t&&!n?-1:n&&!t?1:er?1:0}function K(e,r,t){return new z(e,t).compare(new z(r,t))}function Q(e,r,t){return K(e,r,t)>0}function W(e,r,t){return K(e,r,t)<0}function Y(e,r,t){return 0===K(e,r,t)}function ee(e,r,t){return 0!==K(e,r,t)}function re(e,r,t){return K(e,r,t)>=0}function te(e,r,t){return K(e,r,t)<=0}function ne(e,r,t,n){var s;switch(r){case"===":"object"==typeof e&&(e=e.version),"object"==typeof t&&(t=t.version),s=e===t;break;case"!==":"object"==typeof e&&(e=e.version),"object"==typeof t&&(t=t.version),s=e!==t;break;case"":case"=":case"==":s=Y(e,t,n);break;case"!=":s=ee(e,t,n);break;case">":s=Q(e,t,n);break;case">=":s=re(e,t,n);break;case"<":s=W(e,t,n);break;case"<=":s=te(e,t,n);break;default:throw new TypeError("Invalid operator: "+r)}return s}function se(e,r){if(e instanceof se){if(e.loose===r)return e;e=e.value}if(!(this instanceof se))return new se(e,r);t("comparator",e,r),this.loose=r,this.parse(e),this.semver===oe?this.value="":this.value=this.operator+this.semver.version,t("comp",this)}r.rcompareIdentifiers=function(e,r){return J(r,e)},r.major=function(e,r){return new z(e,r).major},r.minor=function(e,r){return new z(e,r).minor},r.patch=function(e,r){return new z(e,r).patch},r.compare=K,r.compareLoose=function(e,r){return K(e,r,!0)},r.rcompare=function(e,r,t){return K(r,e,t)},r.sort=function(e,t){return e.sort(function(e,n){return r.compare(e,n,t)})},r.rsort=function(e,t){return e.sort(function(e,n){return r.rcompare(e,n,t)})},r.gt=Q,r.lt=W,r.eq=Y,r.neq=ee,r.gte=re,r.lte=te,r.cmp=ne,r.Comparator=se;var oe={};function ie(e,r){if(e instanceof ie)return e.loose===r?e:new ie(e.raw,r);if(e instanceof se)return new ie(e.value,r);if(!(this instanceof ie))return new ie(e,r);if(this.loose=r,this.raw=e,this.set=e.split(/\s*\|\|\s*/).map(function(e){return this.parseRange(e.trim())},this).filter(function(e){return e.length}),!this.set.length)throw new TypeError("Invalid SemVer Range: "+e);this.format()}function ae(e){return!e||"x"===e.toLowerCase()||"*"===e}function ce(e,r,t,n,s,o,i,a,c,p,u,l,v){return((r=ae(t)?"":ae(n)?">="+t+".0.0":ae(s)?">="+t+"."+n+".0":">="+r)+" "+(a=ae(c)?"":ae(p)?"<"+(+c+1)+".0.0":ae(u)?"<"+c+"."+(+p+1)+".0":l?"<="+c+"."+p+"."+u+"-"+l:"<="+a)).trim()}function pe(e,r){for(var n=0;n0){var s=e[n].semver;if(s.major===r.major&&s.minor===r.minor&&s.patch===r.patch)return!0}return!1}return!0}function ue(e,r,t){try{r=new ie(r,t)}catch(e){return!1}return r.test(e)}function le(e,r,t,n){var s,o,i,a,c;switch(e=new z(e,n),r=new ie(r,n),t){case">":s=Q,o=te,i=W,a=">",c=">=";break;case"<":s=W,o=re,i=Q,a="<",c="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(ue(e,r,n))return!1;for(var p=0;p=0.0.0")),l=l||e,v=v||e,s(e.semver,l.semver,n)?l=e:i(e.semver,v.semver,n)&&(v=e)}),l.operator===a||l.operator===c)return!1;if((!v.operator||v.operator===a)&&o(e,v.semver))return!1;if(v.operator===c&&i(e,v.semver))return!1}return!0}se.prototype.parse=function(e){var r=this.loose?o[N]:o[B],t=e.match(r);if(!t)throw new TypeError("Invalid comparator: "+e);this.operator=t[1],"="===this.operator&&(this.operator=""),t[2]?this.semver=new z(t[2],this.loose):this.semver=oe},se.prototype.toString=function(){return this.value},se.prototype.test=function(e){return t("Comparator.test",e,this.loose),this.semver===oe||("string"==typeof e&&(e=new z(e,this.loose)),ne(e,this.operator,this.semver,this.loose))},se.prototype.intersects=function(e,r){if(!(e instanceof se))throw new TypeError("a Comparator is required");var t;if(""===this.operator)return t=new ie(e.value,r),ue(this.value,t,r);if(""===e.operator)return t=new ie(this.value,r),ue(e.semver,t,r);var n=!(">="!==this.operator&&">"!==this.operator||">="!==e.operator&&">"!==e.operator),s=!("<="!==this.operator&&"<"!==this.operator||"<="!==e.operator&&"<"!==e.operator),o=this.semver.version===e.semver.version,i=!(">="!==this.operator&&"<="!==this.operator||">="!==e.operator&&"<="!==e.operator),a=ne(this.semver,"<",e.semver,r)&&(">="===this.operator||">"===this.operator)&&("<="===e.operator||"<"===e.operator),c=ne(this.semver,">",e.semver,r)&&("<="===this.operator||"<"===this.operator)&&(">="===e.operator||">"===e.operator);return n||s||o&&i||a||c},r.Range=ie,ie.prototype.format=function(){return this.range=this.set.map(function(e){return e.join(" ").trim()}).join("||").trim(),this.range},ie.prototype.toString=function(){return this.range},ie.prototype.parseRange=function(e){var r=this.loose;e=e.trim(),t("range",e,r);var n=r?o[F]:o[H];e=e.replace(n,ce),t("hyphen replace",e),e=e.replace(o[D],"$1$2$3"),t("comparator trim",e,o[D]),e=(e=(e=e.replace(o[L],"$1~")).replace(o[q],"$1^")).split(/\s+/).join(" ");var s=r?o[N]:o[B],i=e.split(" ").map(function(e){return function(e,r){return t("comp",e),e=function(e,r){return e.trim().split(/\s+/).map(function(e){return function(e,r){t("caret",e,r);var n=r?o[M]:o[P];return e.replace(n,function(r,n,s,o,i){var a;return t("caret",e,r,n,s,o,i),ae(n)?a="":ae(s)?a=">="+n+".0.0 <"+(+n+1)+".0.0":ae(o)?a="0"===n?">="+n+"."+s+".0 <"+n+"."+(+s+1)+".0":">="+n+"."+s+".0 <"+(+n+1)+".0.0":i?(t("replaceCaret pr",i),"-"!==i.charAt(0)&&(i="-"+i),a="0"===n?"0"===s?">="+n+"."+s+"."+o+i+" <"+n+"."+s+"."+(+o+1):">="+n+"."+s+"."+o+i+" <"+n+"."+(+s+1)+".0":">="+n+"."+s+"."+o+i+" <"+(+n+1)+".0.0"):(t("no pr"),a="0"===n?"0"===s?">="+n+"."+s+"."+o+" <"+n+"."+s+"."+(+o+1):">="+n+"."+s+"."+o+" <"+n+"."+(+s+1)+".0":">="+n+"."+s+"."+o+" <"+(+n+1)+".0.0"),t("caret return",a),a})}(e,r)}).join(" ")}(e,r),t("caret",e),e=function(e,r){return e.trim().split(/\s+/).map(function(e){return function(e,r){var n=r?o[I]:o[A];return e.replace(n,function(r,n,s,o,i){var a;return t("tilde",e,r,n,s,o,i),ae(n)?a="":ae(s)?a=">="+n+".0.0 <"+(+n+1)+".0.0":ae(o)?a=">="+n+"."+s+".0 <"+n+"."+(+s+1)+".0":i?(t("replaceTilde pr",i),"-"!==i.charAt(0)&&(i="-"+i),a=">="+n+"."+s+"."+o+i+" <"+n+"."+(+s+1)+".0"):a=">="+n+"."+s+"."+o+" <"+n+"."+(+s+1)+".0",t("tilde return",a),a})}(e,r)}).join(" ")}(e,r),t("tildes",e),e=function(e,r){return t("replaceXRanges",e,r),e.split(/\s+/).map(function(e){return function(e,r){e=e.trim();var n=r?o[T]:o[R];return e.replace(n,function(r,n,s,o,i,a){t("xRange",e,r,n,s,o,i,a);var c=ae(s),p=c||ae(o),u=p||ae(i),l=u;return"="===n&&l&&(n=""),c?r=">"===n||"<"===n?"<0.0.0":"*":n&&l?(p&&(o=0),u&&(i=0),">"===n?(n=">=",p?(s=+s+1,o=0,i=0):u&&(o=+o+1,i=0)):"<="===n&&(n="<",p?s=+s+1:o=+o+1),r=n+s+"."+o+"."+i):p?r=">="+s+".0.0 <"+(+s+1)+".0.0":u&&(r=">="+s+"."+o+".0 <"+s+"."+(+o+1)+".0"),t("xRange return",r),r})}(e,r)}).join(" ")}(e,r),t("xrange",e),e=function(e,r){return t("replaceStars",e,r),e.trim().replace(o[G],"")}(e,r),t("stars",e),e}(e,r)}).join(" ").split(/\s+/);return this.loose&&(i=i.filter(function(e){return!!e.match(s)})),i=i.map(function(e){return new se(e,r)})},ie.prototype.intersects=function(e,r){if(!(e instanceof ie))throw new TypeError("a Range is required");return this.set.some(function(t){return t.every(function(t){return e.set.some(function(e){return e.every(function(e){return t.intersects(e,r)})})})})},r.toComparators=function(e,r){return new ie(e,r).set.map(function(e){return e.map(function(e){return e.value}).join(" ").trim().split(" ")})},ie.prototype.test=function(e){if(!e)return!1;"string"==typeof e&&(e=new z(e,this.loose));for(var r=0;r",t)},r.outside=le,r.prerelease=function(e,r){var t=X(e,r);return t&&t.prerelease.length?t.prerelease:null},r.intersects=function(e,r,t){return e=new ie(e,t),r=new ie(r,t),e.intersects(r)},r.coerce=function(e){if(e instanceof z)return e;if("string"!=typeof e)return null;var r=e.match(o[O]);return null==r?null:X((r[1]||"0")+"."+(r[2]||"0")+"."+(r[3]||"0"))}}),semver_1=semver.SEMVER_SPEC_VERSION,semver_2=semver.re,semver_3=semver.src,semver_4=semver.parse,semver_5=semver.valid,semver_6=semver.clean,semver_7=semver.SemVer,semver_8=semver.inc,semver_9=semver.diff,semver_10=semver.compareIdentifiers,semver_11=semver.rcompareIdentifiers,semver_12=semver.major,semver_13=semver.minor,semver_14=semver.patch,semver_15=semver.compare,semver_16=semver.compareLoose,semver_17=semver.rcompare,semver_18=semver.sort,semver_19=semver.rsort,semver_20=semver.gt,semver_21=semver.lt,semver_22=semver.eq,semver_23=semver.neq,semver_24=semver.gte,semver_25=semver.lte,semver_26=semver.cmp,semver_27=semver.Comparator,semver_28=semver.Range,semver_29=semver.toComparators,semver_30=semver.satisfies,semver_31=semver.maxSatisfying,semver_32=semver.minSatisfying,semver_33=semver.validRange,semver_34=semver.ltr,semver_35=semver.gtr,semver_36=semver.outside,semver_37=semver.prerelease,semver_38=semver.intersects,semver_39=semver.coerce;const{argv:argv}=process,verbose=-1!==argv.indexOf("-v")||-1!==argv.indexOf("--verbose"),ignoreLocalBin=-1!==argv.indexOf("-i")||-1!==argv.indexOf("--ignore-local-bin"),logger={info:console.info,debug:verbose?console.debug:()=>null,error:console.error},getVersion=({command:e,localBinFolder:r,global:t=!0})=>{const n={PATH:process.env.PATH};return n.PATH=t?n.PATH.replace(`${r}${path.delimiter}`,""):`${r}${path.delimiter}${n.PATH}`,child_process.execSync(e,{env:n}).toString().replace("v","").trim()},checkVersion=(e,r)=>{let t=null;const n=path.join(process.cwd(),"package.json");try{t=require(n)}catch(e){logger.error(`Unable to find ${n}! 😱${os.EOL}`),logger.error(`Please ensure that this script is executed in the same directory.${os.EOL}`),process.exit(1)}t.engines&&t.engines[e]||(logger.error(`There is no engine named "${e}" specified in package.json! 😱${os.EOL}`),process.exit(1));const s=t.engines[e];let o=null,i=null,a=null,c=null,p=null;try{const t=child_process.execSync("npm bin").toString().trim(),n=fs.existsSync(`${t}${path.sep}${e}`);o=getVersion({command:r,localBinFolder:t}),c=semver.satisfies(o,s),logger.debug(`Expected ${e} version:\t${s}`),logger.debug(`╰─ Global ${e} version:\t${o}\t${c?"✅️":"❌️"}`),n&&(i=getVersion({command:r,localBinFolder:t,global:!1}),p=semver.satisfies(i,s),logger.debug(`╰─ Local ${e} version:\t${i}\t${p?"✅️":"❌️"} (from ${t})`)),a=ignoreLocalBin?o:i||o,logger.debug(`╰─ (using: ${a})${os.EOL}`)}catch(r){logger.error(`Unable to get ${e} version! 😱${os.EOL}`),process.exit(1)}if(!semver.satisfies(a,s)){const r="https://github.com/Skyscanner/ensure-node-env/blob/master/README.md#guide";logger.error(`Expected ${e} version to match ${s}, but got ${a}. 😱${os.EOL}`),verbose||logger.error(`(pass the --verbose flag to the script for a more detailed output)${os.EOL}`),logger.error(`Please follow Skyscanner's node environment guide (see ${r}).${os.EOL}`),process.exit(1)}};logger.info(`Checking node & npm versions...${os.EOL}`),checkVersion("node","node --version"),checkVersion("npm","npm -g --version"),logger.info(`All good. 👍${os.EOL}`); diff --git a/dist/index.js b/dist/index.js index 79cef09..b230061 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1 +1 @@ -"use strict";function _interopDefault(e){return e&&"object"==typeof e&&"default"in e?e.default:e}var path=_interopDefault(require("path")),child_process=require("child_process"),fs=require("fs"),os=require("os");function createCommonjsModule(e,r){return e(r={exports:{}},r.exports),r.exports}var semver=createCommonjsModule(function(e,r){var t;r=e.exports=z,t="object"==typeof process&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?function(){var e=Array.prototype.slice.call(arguments,0);e.unshift("SEMVER"),console.log.apply(console,e)}:function(){},r.SEMVER_SPEC_VERSION="2.0.0";var n=256,s=Number.MAX_SAFE_INTEGER||9007199254740991,o=r.re=[],i=r.src=[],a=0,c=a++;i[c]="0|[1-9]\\d*";var p=a++;i[p]="[0-9]+";var u=a++;i[u]="\\d*[a-zA-Z-][a-zA-Z0-9-]*";var l=a++;i[l]="("+i[c]+")\\.("+i[c]+")\\.("+i[c]+")";var v=a++;i[v]="("+i[p]+")\\.("+i[p]+")\\.("+i[p]+")";var h=a++;i[h]="(?:"+i[c]+"|"+i[u]+")";var m=a++;i[m]="(?:"+i[p]+"|"+i[u]+")";var f=a++;i[f]="(?:-("+i[h]+"(?:\\."+i[h]+")*))";var g=a++;i[g]="(?:-?("+i[m]+"(?:\\."+i[m]+")*))";var d=a++;i[d]="[0-9A-Za-z-]+";var w=a++;i[w]="(?:\\+("+i[d]+"(?:\\."+i[d]+")*))";var y=a++,$="v?"+i[l]+i[f]+"?"+i[w]+"?";i[y]="^"+$+"$";var _="[v=\\s]*"+i[v]+i[g]+"?"+i[w]+"?",E=a++;i[E]="^"+_+"$";var b=a++;i[b]="((?:<|>)?=?)";var j=a++;i[j]=i[p]+"|x|X|\\*";var x=a++;i[x]=i[c]+"|x|X|\\*";var S=a++;i[S]="[v=\\s]*("+i[x]+")(?:\\.("+i[x]+")(?:\\.("+i[x]+")(?:"+i[f]+")?"+i[w]+"?)?)?";var k=a++;i[k]="[v=\\s]*("+i[j]+")(?:\\.("+i[j]+")(?:\\.("+i[j]+")(?:"+i[g]+")?"+i[w]+"?)?)?";var R=a++;i[R]="^"+i[b]+"\\s*"+i[S]+"$";var T=a++;i[T]="^"+i[b]+"\\s*"+i[k]+"$";var O=a++;i[O]="(?:^|[^\\d])(\\d{1,16})(?:\\.(\\d{1,16}))?(?:\\.(\\d{1,16}))?(?:$|[^\\d])";var V=a++;i[V]="(?:~>?)";var L=a++;i[L]="(\\s*)"+i[V]+"\\s+",o[L]=new RegExp(i[L],"g");var A=a++;i[A]="^"+i[V]+i[S]+"$";var I=a++;i[I]="^"+i[V]+i[k]+"$";var C=a++;i[C]="(?:\\^)";var q=a++;i[q]="(\\s*)"+i[C]+"\\s+",o[q]=new RegExp(i[q],"g");var P=a++;i[P]="^"+i[C]+i[S]+"$";var M=a++;i[M]="^"+i[C]+i[k]+"$";var N=a++;i[N]="^"+i[b]+"\\s*("+_+")$|^$";var B=a++;i[B]="^"+i[b]+"\\s*("+$+")$|^$";var D=a++;i[D]="(\\s*)"+i[b]+"\\s*("+_+"|"+i[S]+")",o[D]=new RegExp(i[D],"g");var H=a++;i[H]="^\\s*("+i[S]+")\\s+-\\s+("+i[S]+")\\s*$";var F=a++;i[F]="^\\s*("+i[k]+")\\s+-\\s+("+i[k]+")\\s*$";var G=a++;i[G]="(<|>)?=?\\s*\\*";for(var U=0;U<35;U++)t(U,i[U]),o[U]||(o[U]=new RegExp(i[U]));function X(e,r){if(e instanceof z)return e;if("string"!=typeof e)return null;if(e.length>n)return null;if(!(r?o[E]:o[y]).test(e))return null;try{return new z(e,r)}catch(e){return null}}function z(e,r){if(e instanceof z){if(e.loose===r)return e;e=e.version}else if("string"!=typeof e)throw new TypeError("Invalid Version: "+e);if(e.length>n)throw new TypeError("version is longer than "+n+" characters");if(!(this instanceof z))return new z(e,r);t("SemVer",e,r),this.loose=r;var i=e.trim().match(r?o[E]:o[y]);if(!i)throw new TypeError("Invalid Version: "+e);if(this.raw=e,this.major=+i[1],this.minor=+i[2],this.patch=+i[3],this.major>s||this.major<0)throw new TypeError("Invalid major version");if(this.minor>s||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>s||this.patch<0)throw new TypeError("Invalid patch version");i[4]?this.prerelease=i[4].split(".").map(function(e){if(/^[0-9]+$/.test(e)){var r=+e;if(r>=0&&r=0;)"number"==typeof this.prerelease[t]&&(this.prerelease[t]++,t=-2);-1===t&&this.prerelease.push(0)}r&&(this.prerelease[0]===r?isNaN(this.prerelease[1])&&(this.prerelease=[r,0]):this.prerelease=[r,0]);break;default:throw new Error("invalid increment argument: "+e)}return this.format(),this.raw=this.version,this},r.inc=function(e,r,t,n){"string"==typeof t&&(n=t,t=void 0);try{return new z(e,t).inc(r,n).version}catch(e){return null}},r.diff=function(e,r){if(Y(e,r))return null;var t=X(e),n=X(r);if(t.prerelease.length||n.prerelease.length){for(var s in t)if(("major"===s||"minor"===s||"patch"===s)&&t[s]!==n[s])return"pre"+s;return"prerelease"}for(var s in t)if(("major"===s||"minor"===s||"patch"===s)&&t[s]!==n[s])return s},r.compareIdentifiers=J;var Z=/^[0-9]+$/;function J(e,r){var t=Z.test(e),n=Z.test(r);return t&&n&&(e=+e,r=+r),t&&!n?-1:n&&!t?1:er?1:0}function K(e,r,t){return new z(e,t).compare(new z(r,t))}function Q(e,r,t){return K(e,r,t)>0}function W(e,r,t){return K(e,r,t)<0}function Y(e,r,t){return 0===K(e,r,t)}function ee(e,r,t){return 0!==K(e,r,t)}function re(e,r,t){return K(e,r,t)>=0}function te(e,r,t){return K(e,r,t)<=0}function ne(e,r,t,n){var s;switch(r){case"===":"object"==typeof e&&(e=e.version),"object"==typeof t&&(t=t.version),s=e===t;break;case"!==":"object"==typeof e&&(e=e.version),"object"==typeof t&&(t=t.version),s=e!==t;break;case"":case"=":case"==":s=Y(e,t,n);break;case"!=":s=ee(e,t,n);break;case">":s=Q(e,t,n);break;case">=":s=re(e,t,n);break;case"<":s=W(e,t,n);break;case"<=":s=te(e,t,n);break;default:throw new TypeError("Invalid operator: "+r)}return s}function se(e,r){if(e instanceof se){if(e.loose===r)return e;e=e.value}if(!(this instanceof se))return new se(e,r);t("comparator",e,r),this.loose=r,this.parse(e),this.semver===oe?this.value="":this.value=this.operator+this.semver.version,t("comp",this)}r.rcompareIdentifiers=function(e,r){return J(r,e)},r.major=function(e,r){return new z(e,r).major},r.minor=function(e,r){return new z(e,r).minor},r.patch=function(e,r){return new z(e,r).patch},r.compare=K,r.compareLoose=function(e,r){return K(e,r,!0)},r.rcompare=function(e,r,t){return K(r,e,t)},r.sort=function(e,t){return e.sort(function(e,n){return r.compare(e,n,t)})},r.rsort=function(e,t){return e.sort(function(e,n){return r.rcompare(e,n,t)})},r.gt=Q,r.lt=W,r.eq=Y,r.neq=ee,r.gte=re,r.lte=te,r.cmp=ne,r.Comparator=se;var oe={};function ie(e,r){if(e instanceof ie)return e.loose===r?e:new ie(e.raw,r);if(e instanceof se)return new ie(e.value,r);if(!(this instanceof ie))return new ie(e,r);if(this.loose=r,this.raw=e,this.set=e.split(/\s*\|\|\s*/).map(function(e){return this.parseRange(e.trim())},this).filter(function(e){return e.length}),!this.set.length)throw new TypeError("Invalid SemVer Range: "+e);this.format()}function ae(e){return!e||"x"===e.toLowerCase()||"*"===e}function ce(e,r,t,n,s,o,i,a,c,p,u,l,v){return((r=ae(t)?"":ae(n)?">="+t+".0.0":ae(s)?">="+t+"."+n+".0":">="+r)+" "+(a=ae(c)?"":ae(p)?"<"+(+c+1)+".0.0":ae(u)?"<"+c+"."+(+p+1)+".0":l?"<="+c+"."+p+"."+u+"-"+l:"<="+a)).trim()}function pe(e,r){for(var n=0;n0){var s=e[n].semver;if(s.major===r.major&&s.minor===r.minor&&s.patch===r.patch)return!0}return!1}return!0}function ue(e,r,t){try{r=new ie(r,t)}catch(e){return!1}return r.test(e)}function le(e,r,t,n){var s,o,i,a,c;switch(e=new z(e,n),r=new ie(r,n),t){case">":s=Q,o=te,i=W,a=">",c=">=";break;case"<":s=W,o=re,i=Q,a="<",c="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(ue(e,r,n))return!1;for(var p=0;p=0.0.0")),l=l||e,v=v||e,s(e.semver,l.semver,n)?l=e:i(e.semver,v.semver,n)&&(v=e)}),l.operator===a||l.operator===c)return!1;if((!v.operator||v.operator===a)&&o(e,v.semver))return!1;if(v.operator===c&&i(e,v.semver))return!1}return!0}se.prototype.parse=function(e){var r=this.loose?o[N]:o[B],t=e.match(r);if(!t)throw new TypeError("Invalid comparator: "+e);this.operator=t[1],"="===this.operator&&(this.operator=""),t[2]?this.semver=new z(t[2],this.loose):this.semver=oe},se.prototype.toString=function(){return this.value},se.prototype.test=function(e){return t("Comparator.test",e,this.loose),this.semver===oe||("string"==typeof e&&(e=new z(e,this.loose)),ne(e,this.operator,this.semver,this.loose))},se.prototype.intersects=function(e,r){if(!(e instanceof se))throw new TypeError("a Comparator is required");var t;if(""===this.operator)return t=new ie(e.value,r),ue(this.value,t,r);if(""===e.operator)return t=new ie(this.value,r),ue(e.semver,t,r);var n=!(">="!==this.operator&&">"!==this.operator||">="!==e.operator&&">"!==e.operator),s=!("<="!==this.operator&&"<"!==this.operator||"<="!==e.operator&&"<"!==e.operator),o=this.semver.version===e.semver.version,i=!(">="!==this.operator&&"<="!==this.operator||">="!==e.operator&&"<="!==e.operator),a=ne(this.semver,"<",e.semver,r)&&(">="===this.operator||">"===this.operator)&&("<="===e.operator||"<"===e.operator),c=ne(this.semver,">",e.semver,r)&&("<="===this.operator||"<"===this.operator)&&(">="===e.operator||">"===e.operator);return n||s||o&&i||a||c},r.Range=ie,ie.prototype.format=function(){return this.range=this.set.map(function(e){return e.join(" ").trim()}).join("||").trim(),this.range},ie.prototype.toString=function(){return this.range},ie.prototype.parseRange=function(e){var r=this.loose;e=e.trim(),t("range",e,r);var n=r?o[F]:o[H];e=e.replace(n,ce),t("hyphen replace",e),e=e.replace(o[D],"$1$2$3"),t("comparator trim",e,o[D]),e=(e=(e=e.replace(o[L],"$1~")).replace(o[q],"$1^")).split(/\s+/).join(" ");var s=r?o[N]:o[B],i=e.split(" ").map(function(e){return function(e,r){return t("comp",e),e=function(e,r){return e.trim().split(/\s+/).map(function(e){return function(e,r){t("caret",e,r);var n=r?o[M]:o[P];return e.replace(n,function(r,n,s,o,i){var a;return t("caret",e,r,n,s,o,i),ae(n)?a="":ae(s)?a=">="+n+".0.0 <"+(+n+1)+".0.0":ae(o)?a="0"===n?">="+n+"."+s+".0 <"+n+"."+(+s+1)+".0":">="+n+"."+s+".0 <"+(+n+1)+".0.0":i?(t("replaceCaret pr",i),"-"!==i.charAt(0)&&(i="-"+i),a="0"===n?"0"===s?">="+n+"."+s+"."+o+i+" <"+n+"."+s+"."+(+o+1):">="+n+"."+s+"."+o+i+" <"+n+"."+(+s+1)+".0":">="+n+"."+s+"."+o+i+" <"+(+n+1)+".0.0"):(t("no pr"),a="0"===n?"0"===s?">="+n+"."+s+"."+o+" <"+n+"."+s+"."+(+o+1):">="+n+"."+s+"."+o+" <"+n+"."+(+s+1)+".0":">="+n+"."+s+"."+o+" <"+(+n+1)+".0.0"),t("caret return",a),a})}(e,r)}).join(" ")}(e,r),t("caret",e),e=function(e,r){return e.trim().split(/\s+/).map(function(e){return function(e,r){var n=r?o[I]:o[A];return e.replace(n,function(r,n,s,o,i){var a;return t("tilde",e,r,n,s,o,i),ae(n)?a="":ae(s)?a=">="+n+".0.0 <"+(+n+1)+".0.0":ae(o)?a=">="+n+"."+s+".0 <"+n+"."+(+s+1)+".0":i?(t("replaceTilde pr",i),"-"!==i.charAt(0)&&(i="-"+i),a=">="+n+"."+s+"."+o+i+" <"+n+"."+(+s+1)+".0"):a=">="+n+"."+s+"."+o+" <"+n+"."+(+s+1)+".0",t("tilde return",a),a})}(e,r)}).join(" ")}(e,r),t("tildes",e),e=function(e,r){return t("replaceXRanges",e,r),e.split(/\s+/).map(function(e){return function(e,r){e=e.trim();var n=r?o[T]:o[R];return e.replace(n,function(r,n,s,o,i,a){t("xRange",e,r,n,s,o,i,a);var c=ae(s),p=c||ae(o),u=p||ae(i),l=u;return"="===n&&l&&(n=""),c?r=">"===n||"<"===n?"<0.0.0":"*":n&&l?(p&&(o=0),u&&(i=0),">"===n?(n=">=",p?(s=+s+1,o=0,i=0):u&&(o=+o+1,i=0)):"<="===n&&(n="<",p?s=+s+1:o=+o+1),r=n+s+"."+o+"."+i):p?r=">="+s+".0.0 <"+(+s+1)+".0.0":u&&(r=">="+s+"."+o+".0 <"+s+"."+(+o+1)+".0"),t("xRange return",r),r})}(e,r)}).join(" ")}(e,r),t("xrange",e),e=function(e,r){return t("replaceStars",e,r),e.trim().replace(o[G],"")}(e,r),t("stars",e),e}(e,r)}).join(" ").split(/\s+/);return this.loose&&(i=i.filter(function(e){return!!e.match(s)})),i=i.map(function(e){return new se(e,r)})},ie.prototype.intersects=function(e,r){if(!(e instanceof ie))throw new TypeError("a Range is required");return this.set.some(function(t){return t.every(function(t){return e.set.some(function(e){return e.every(function(e){return t.intersects(e,r)})})})})},r.toComparators=function(e,r){return new ie(e,r).set.map(function(e){return e.map(function(e){return e.value}).join(" ").trim().split(" ")})},ie.prototype.test=function(e){if(!e)return!1;"string"==typeof e&&(e=new z(e,this.loose));for(var r=0;r",t)},r.outside=le,r.prerelease=function(e,r){var t=X(e,r);return t&&t.prerelease.length?t.prerelease:null},r.intersects=function(e,r,t){return e=new ie(e,t),r=new ie(r,t),e.intersects(r)},r.coerce=function(e){if(e instanceof z)return e;if("string"!=typeof e)return null;var r=e.match(o[O]);return null==r?null:X((r[1]||"0")+"."+(r[2]||"0")+"."+(r[3]||"0"))}}),semver_1=semver.SEMVER_SPEC_VERSION,semver_2=semver.re,semver_3=semver.src,semver_4=semver.parse,semver_5=semver.valid,semver_6=semver.clean,semver_7=semver.SemVer,semver_8=semver.inc,semver_9=semver.diff,semver_10=semver.compareIdentifiers,semver_11=semver.rcompareIdentifiers,semver_12=semver.major,semver_13=semver.minor,semver_14=semver.patch,semver_15=semver.compare,semver_16=semver.compareLoose,semver_17=semver.rcompare,semver_18=semver.sort,semver_19=semver.rsort,semver_20=semver.gt,semver_21=semver.lt,semver_22=semver.eq,semver_23=semver.neq,semver_24=semver.gte,semver_25=semver.lte,semver_26=semver.cmp,semver_27=semver.Comparator,semver_28=semver.Range,semver_29=semver.toComparators,semver_30=semver.satisfies,semver_31=semver.maxSatisfying,semver_32=semver.minSatisfying,semver_33=semver.validRange,semver_34=semver.ltr,semver_35=semver.gtr,semver_36=semver.outside,semver_37=semver.prerelease,semver_38=semver.intersects,semver_39=semver.coerce;const{argv:argv}=process,verbose=-1!==argv.indexOf("-v")||-1!==argv.indexOf("--verbose"),ignoreLocalBin=-1!==argv.indexOf("-i")||-1!==argv.indexOf("--ignore-local-bin"),logger=console;verbose||(logger.debug=(()=>{}));const getVersion=({command:e,localBinFolder:r,global:t=!0})=>{const n={PATH:process.env.PATH};return n.PATH=t?n.PATH.replace(`${r}${path.delimiter}`,""):`${r}${path.delimiter}${n.PATH}`,child_process.execSync(e,{env:n}).toString().replace("v","").trim()},checkVersion=(e,r)=>{let t=null;const n=path.join(process.cwd(),"package.json");try{t=require(n)}catch(e){logger.error(`Unable to find ${n}! 😱${os.EOL}`),logger.error(`Please ensure that this script is executed in the same directory.${os.EOL}`),process.exit(1)}t.engines&&t.engines[e]||(logger.error(`There is no engine named "${e}" specified in package.json! 😱${os.EOL}`),process.exit(1));const s=t.engines[e];let o=null,i=null,a=null,c=null,p=null;try{const t=child_process.execSync("npm bin").toString().trim(),n=fs.existsSync(`${t}${path.sep}${e}`);o=getVersion({command:r,localBinFolder:t}),c=semver.satisfies(o,s),logger.debug(`Expected ${e} version:\t${s}`),logger.debug(`╰─ Global ${e} version:\t${o}\t${c?"✅️":"❌️"}`),n&&(i=getVersion({command:r,localBinFolder:t,global:!1}),p=semver.satisfies(i,s),logger.debug(`╰─ Local ${e} version:\t${i}\t${p?"✅️":"❌️"} (from ${t})`)),a=ignoreLocalBin?o:i||o,logger.debug(`╰─ (using: ${a})${os.EOL}`)}catch(r){logger.error(`Unable to get ${e} version! 😱${os.EOL}`),process.exit(1)}if(!semver.satisfies(a,s)){const r="https://github.com/Skyscanner/ensure-node-env/blob/master/README.md#guide";logger.error(`Expected ${e} version to match ${s}, but got ${a}. 😱${os.EOL}`),verbose||logger.error(`(pass the --verbose flag to the script for a more detailed output)${os.EOL}`),logger.error(`Please follow Skyscanner's node environment guide (see ${r}).${os.EOL}`),process.exit(1)}};logger.info(`Checking node & npm versions...${os.EOL}`),checkVersion("node","node --version"),checkVersion("npm","npm -g --version"),logger.info(`All good. 👍${os.EOL}`); +"use strict";function _interopDefault(e){return e&&"object"==typeof e&&"default"in e?e.default:e}var path=_interopDefault(require("path")),child_process=require("child_process"),fs=require("fs"),os=require("os");function createCommonjsModule(e,r){return e(r={exports:{}},r.exports),r.exports}var semver=createCommonjsModule(function(e,r){var t;r=e.exports=z,t="object"==typeof process&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?function(){var e=Array.prototype.slice.call(arguments,0);e.unshift("SEMVER"),console.log.apply(console,e)}:function(){},r.SEMVER_SPEC_VERSION="2.0.0";var n=256,s=Number.MAX_SAFE_INTEGER||9007199254740991,o=r.re=[],i=r.src=[],a=0,c=a++;i[c]="0|[1-9]\\d*";var p=a++;i[p]="[0-9]+";var u=a++;i[u]="\\d*[a-zA-Z-][a-zA-Z0-9-]*";var l=a++;i[l]="("+i[c]+")\\.("+i[c]+")\\.("+i[c]+")";var v=a++;i[v]="("+i[p]+")\\.("+i[p]+")\\.("+i[p]+")";var h=a++;i[h]="(?:"+i[c]+"|"+i[u]+")";var m=a++;i[m]="(?:"+i[p]+"|"+i[u]+")";var f=a++;i[f]="(?:-("+i[h]+"(?:\\."+i[h]+")*))";var g=a++;i[g]="(?:-?("+i[m]+"(?:\\."+i[m]+")*))";var d=a++;i[d]="[0-9A-Za-z-]+";var w=a++;i[w]="(?:\\+("+i[d]+"(?:\\."+i[d]+")*))";var y=a++,$="v?"+i[l]+i[f]+"?"+i[w]+"?";i[y]="^"+$+"$";var _="[v=\\s]*"+i[v]+i[g]+"?"+i[w]+"?",b=a++;i[b]="^"+_+"$";var E=a++;i[E]="((?:<|>)?=?)";var j=a++;i[j]=i[p]+"|x|X|\\*";var x=a++;i[x]=i[c]+"|x|X|\\*";var S=a++;i[S]="[v=\\s]*("+i[x]+")(?:\\.("+i[x]+")(?:\\.("+i[x]+")(?:"+i[f]+")?"+i[w]+"?)?)?";var k=a++;i[k]="[v=\\s]*("+i[j]+")(?:\\.("+i[j]+")(?:\\.("+i[j]+")(?:"+i[g]+")?"+i[w]+"?)?)?";var R=a++;i[R]="^"+i[E]+"\\s*"+i[S]+"$";var T=a++;i[T]="^"+i[E]+"\\s*"+i[k]+"$";var O=a++;i[O]="(?:^|[^\\d])(\\d{1,16})(?:\\.(\\d{1,16}))?(?:\\.(\\d{1,16}))?(?:$|[^\\d])";var V=a++;i[V]="(?:~>?)";var L=a++;i[L]="(\\s*)"+i[V]+"\\s+",o[L]=new RegExp(i[L],"g");var A=a++;i[A]="^"+i[V]+i[S]+"$";var I=a++;i[I]="^"+i[V]+i[k]+"$";var C=a++;i[C]="(?:\\^)";var q=a++;i[q]="(\\s*)"+i[C]+"\\s+",o[q]=new RegExp(i[q],"g");var P=a++;i[P]="^"+i[C]+i[S]+"$";var M=a++;i[M]="^"+i[C]+i[k]+"$";var N=a++;i[N]="^"+i[E]+"\\s*("+_+")$|^$";var B=a++;i[B]="^"+i[E]+"\\s*("+$+")$|^$";var D=a++;i[D]="(\\s*)"+i[E]+"\\s*("+_+"|"+i[S]+")",o[D]=new RegExp(i[D],"g");var H=a++;i[H]="^\\s*("+i[S]+")\\s+-\\s+("+i[S]+")\\s*$";var F=a++;i[F]="^\\s*("+i[k]+")\\s+-\\s+("+i[k]+")\\s*$";var G=a++;i[G]="(<|>)?=?\\s*\\*";for(var U=0;U<35;U++)t(U,i[U]),o[U]||(o[U]=new RegExp(i[U]));function X(e,r){if(e instanceof z)return e;if("string"!=typeof e)return null;if(e.length>n)return null;if(!(r?o[b]:o[y]).test(e))return null;try{return new z(e,r)}catch(e){return null}}function z(e,r){if(e instanceof z){if(e.loose===r)return e;e=e.version}else if("string"!=typeof e)throw new TypeError("Invalid Version: "+e);if(e.length>n)throw new TypeError("version is longer than "+n+" characters");if(!(this instanceof z))return new z(e,r);t("SemVer",e,r),this.loose=r;var i=e.trim().match(r?o[b]:o[y]);if(!i)throw new TypeError("Invalid Version: "+e);if(this.raw=e,this.major=+i[1],this.minor=+i[2],this.patch=+i[3],this.major>s||this.major<0)throw new TypeError("Invalid major version");if(this.minor>s||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>s||this.patch<0)throw new TypeError("Invalid patch version");i[4]?this.prerelease=i[4].split(".").map(function(e){if(/^[0-9]+$/.test(e)){var r=+e;if(r>=0&&r=0;)"number"==typeof this.prerelease[t]&&(this.prerelease[t]++,t=-2);-1===t&&this.prerelease.push(0)}r&&(this.prerelease[0]===r?isNaN(this.prerelease[1])&&(this.prerelease=[r,0]):this.prerelease=[r,0]);break;default:throw new Error("invalid increment argument: "+e)}return this.format(),this.raw=this.version,this},r.inc=function(e,r,t,n){"string"==typeof t&&(n=t,t=void 0);try{return new z(e,t).inc(r,n).version}catch(e){return null}},r.diff=function(e,r){if(Y(e,r))return null;var t=X(e),n=X(r);if(t.prerelease.length||n.prerelease.length){for(var s in t)if(("major"===s||"minor"===s||"patch"===s)&&t[s]!==n[s])return"pre"+s;return"prerelease"}for(var s in t)if(("major"===s||"minor"===s||"patch"===s)&&t[s]!==n[s])return s},r.compareIdentifiers=J;var Z=/^[0-9]+$/;function J(e,r){var t=Z.test(e),n=Z.test(r);return t&&n&&(e=+e,r=+r),t&&!n?-1:n&&!t?1:er?1:0}function K(e,r,t){return new z(e,t).compare(new z(r,t))}function Q(e,r,t){return K(e,r,t)>0}function W(e,r,t){return K(e,r,t)<0}function Y(e,r,t){return 0===K(e,r,t)}function ee(e,r,t){return 0!==K(e,r,t)}function re(e,r,t){return K(e,r,t)>=0}function te(e,r,t){return K(e,r,t)<=0}function ne(e,r,t,n){var s;switch(r){case"===":"object"==typeof e&&(e=e.version),"object"==typeof t&&(t=t.version),s=e===t;break;case"!==":"object"==typeof e&&(e=e.version),"object"==typeof t&&(t=t.version),s=e!==t;break;case"":case"=":case"==":s=Y(e,t,n);break;case"!=":s=ee(e,t,n);break;case">":s=Q(e,t,n);break;case">=":s=re(e,t,n);break;case"<":s=W(e,t,n);break;case"<=":s=te(e,t,n);break;default:throw new TypeError("Invalid operator: "+r)}return s}function se(e,r){if(e instanceof se){if(e.loose===r)return e;e=e.value}if(!(this instanceof se))return new se(e,r);t("comparator",e,r),this.loose=r,this.parse(e),this.semver===oe?this.value="":this.value=this.operator+this.semver.version,t("comp",this)}r.rcompareIdentifiers=function(e,r){return J(r,e)},r.major=function(e,r){return new z(e,r).major},r.minor=function(e,r){return new z(e,r).minor},r.patch=function(e,r){return new z(e,r).patch},r.compare=K,r.compareLoose=function(e,r){return K(e,r,!0)},r.rcompare=function(e,r,t){return K(r,e,t)},r.sort=function(e,t){return e.sort(function(e,n){return r.compare(e,n,t)})},r.rsort=function(e,t){return e.sort(function(e,n){return r.rcompare(e,n,t)})},r.gt=Q,r.lt=W,r.eq=Y,r.neq=ee,r.gte=re,r.lte=te,r.cmp=ne,r.Comparator=se;var oe={};function ie(e,r){if(e instanceof ie)return e.loose===r?e:new ie(e.raw,r);if(e instanceof se)return new ie(e.value,r);if(!(this instanceof ie))return new ie(e,r);if(this.loose=r,this.raw=e,this.set=e.split(/\s*\|\|\s*/).map(function(e){return this.parseRange(e.trim())},this).filter(function(e){return e.length}),!this.set.length)throw new TypeError("Invalid SemVer Range: "+e);this.format()}function ae(e){return!e||"x"===e.toLowerCase()||"*"===e}function ce(e,r,t,n,s,o,i,a,c,p,u,l,v){return((r=ae(t)?"":ae(n)?">="+t+".0.0":ae(s)?">="+t+"."+n+".0":">="+r)+" "+(a=ae(c)?"":ae(p)?"<"+(+c+1)+".0.0":ae(u)?"<"+c+"."+(+p+1)+".0":l?"<="+c+"."+p+"."+u+"-"+l:"<="+a)).trim()}function pe(e,r){for(var n=0;n0){var s=e[n].semver;if(s.major===r.major&&s.minor===r.minor&&s.patch===r.patch)return!0}return!1}return!0}function ue(e,r,t){try{r=new ie(r,t)}catch(e){return!1}return r.test(e)}function le(e,r,t,n){var s,o,i,a,c;switch(e=new z(e,n),r=new ie(r,n),t){case">":s=Q,o=te,i=W,a=">",c=">=";break;case"<":s=W,o=re,i=Q,a="<",c="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(ue(e,r,n))return!1;for(var p=0;p=0.0.0")),l=l||e,v=v||e,s(e.semver,l.semver,n)?l=e:i(e.semver,v.semver,n)&&(v=e)}),l.operator===a||l.operator===c)return!1;if((!v.operator||v.operator===a)&&o(e,v.semver))return!1;if(v.operator===c&&i(e,v.semver))return!1}return!0}se.prototype.parse=function(e){var r=this.loose?o[N]:o[B],t=e.match(r);if(!t)throw new TypeError("Invalid comparator: "+e);this.operator=t[1],"="===this.operator&&(this.operator=""),t[2]?this.semver=new z(t[2],this.loose):this.semver=oe},se.prototype.toString=function(){return this.value},se.prototype.test=function(e){return t("Comparator.test",e,this.loose),this.semver===oe||("string"==typeof e&&(e=new z(e,this.loose)),ne(e,this.operator,this.semver,this.loose))},se.prototype.intersects=function(e,r){if(!(e instanceof se))throw new TypeError("a Comparator is required");var t;if(""===this.operator)return t=new ie(e.value,r),ue(this.value,t,r);if(""===e.operator)return t=new ie(this.value,r),ue(e.semver,t,r);var n=!(">="!==this.operator&&">"!==this.operator||">="!==e.operator&&">"!==e.operator),s=!("<="!==this.operator&&"<"!==this.operator||"<="!==e.operator&&"<"!==e.operator),o=this.semver.version===e.semver.version,i=!(">="!==this.operator&&"<="!==this.operator||">="!==e.operator&&"<="!==e.operator),a=ne(this.semver,"<",e.semver,r)&&(">="===this.operator||">"===this.operator)&&("<="===e.operator||"<"===e.operator),c=ne(this.semver,">",e.semver,r)&&("<="===this.operator||"<"===this.operator)&&(">="===e.operator||">"===e.operator);return n||s||o&&i||a||c},r.Range=ie,ie.prototype.format=function(){return this.range=this.set.map(function(e){return e.join(" ").trim()}).join("||").trim(),this.range},ie.prototype.toString=function(){return this.range},ie.prototype.parseRange=function(e){var r=this.loose;e=e.trim(),t("range",e,r);var n=r?o[F]:o[H];e=e.replace(n,ce),t("hyphen replace",e),e=e.replace(o[D],"$1$2$3"),t("comparator trim",e,o[D]),e=(e=(e=e.replace(o[L],"$1~")).replace(o[q],"$1^")).split(/\s+/).join(" ");var s=r?o[N]:o[B],i=e.split(" ").map(function(e){return function(e,r){return t("comp",e),e=function(e,r){return e.trim().split(/\s+/).map(function(e){return function(e,r){t("caret",e,r);var n=r?o[M]:o[P];return e.replace(n,function(r,n,s,o,i){var a;return t("caret",e,r,n,s,o,i),ae(n)?a="":ae(s)?a=">="+n+".0.0 <"+(+n+1)+".0.0":ae(o)?a="0"===n?">="+n+"."+s+".0 <"+n+"."+(+s+1)+".0":">="+n+"."+s+".0 <"+(+n+1)+".0.0":i?(t("replaceCaret pr",i),"-"!==i.charAt(0)&&(i="-"+i),a="0"===n?"0"===s?">="+n+"."+s+"."+o+i+" <"+n+"."+s+"."+(+o+1):">="+n+"."+s+"."+o+i+" <"+n+"."+(+s+1)+".0":">="+n+"."+s+"."+o+i+" <"+(+n+1)+".0.0"):(t("no pr"),a="0"===n?"0"===s?">="+n+"."+s+"."+o+" <"+n+"."+s+"."+(+o+1):">="+n+"."+s+"."+o+" <"+n+"."+(+s+1)+".0":">="+n+"."+s+"."+o+" <"+(+n+1)+".0.0"),t("caret return",a),a})}(e,r)}).join(" ")}(e,r),t("caret",e),e=function(e,r){return e.trim().split(/\s+/).map(function(e){return function(e,r){var n=r?o[I]:o[A];return e.replace(n,function(r,n,s,o,i){var a;return t("tilde",e,r,n,s,o,i),ae(n)?a="":ae(s)?a=">="+n+".0.0 <"+(+n+1)+".0.0":ae(o)?a=">="+n+"."+s+".0 <"+n+"."+(+s+1)+".0":i?(t("replaceTilde pr",i),"-"!==i.charAt(0)&&(i="-"+i),a=">="+n+"."+s+"."+o+i+" <"+n+"."+(+s+1)+".0"):a=">="+n+"."+s+"."+o+" <"+n+"."+(+s+1)+".0",t("tilde return",a),a})}(e,r)}).join(" ")}(e,r),t("tildes",e),e=function(e,r){return t("replaceXRanges",e,r),e.split(/\s+/).map(function(e){return function(e,r){e=e.trim();var n=r?o[T]:o[R];return e.replace(n,function(r,n,s,o,i,a){t("xRange",e,r,n,s,o,i,a);var c=ae(s),p=c||ae(o),u=p||ae(i),l=u;return"="===n&&l&&(n=""),c?r=">"===n||"<"===n?"<0.0.0":"*":n&&l?(p&&(o=0),u&&(i=0),">"===n?(n=">=",p?(s=+s+1,o=0,i=0):u&&(o=+o+1,i=0)):"<="===n&&(n="<",p?s=+s+1:o=+o+1),r=n+s+"."+o+"."+i):p?r=">="+s+".0.0 <"+(+s+1)+".0.0":u&&(r=">="+s+"."+o+".0 <"+s+"."+(+o+1)+".0"),t("xRange return",r),r})}(e,r)}).join(" ")}(e,r),t("xrange",e),e=function(e,r){return t("replaceStars",e,r),e.trim().replace(o[G],"")}(e,r),t("stars",e),e}(e,r)}).join(" ").split(/\s+/);return this.loose&&(i=i.filter(function(e){return!!e.match(s)})),i=i.map(function(e){return new se(e,r)})},ie.prototype.intersects=function(e,r){if(!(e instanceof ie))throw new TypeError("a Range is required");return this.set.some(function(t){return t.every(function(t){return e.set.some(function(e){return e.every(function(e){return t.intersects(e,r)})})})})},r.toComparators=function(e,r){return new ie(e,r).set.map(function(e){return e.map(function(e){return e.value}).join(" ").trim().split(" ")})},ie.prototype.test=function(e){if(!e)return!1;"string"==typeof e&&(e=new z(e,this.loose));for(var r=0;r",t)},r.outside=le,r.prerelease=function(e,r){var t=X(e,r);return t&&t.prerelease.length?t.prerelease:null},r.intersects=function(e,r,t){return e=new ie(e,t),r=new ie(r,t),e.intersects(r)},r.coerce=function(e){if(e instanceof z)return e;if("string"!=typeof e)return null;var r=e.match(o[O]);return null==r?null:X((r[1]||"0")+"."+(r[2]||"0")+"."+(r[3]||"0"))}}),semver_1=semver.SEMVER_SPEC_VERSION,semver_2=semver.re,semver_3=semver.src,semver_4=semver.parse,semver_5=semver.valid,semver_6=semver.clean,semver_7=semver.SemVer,semver_8=semver.inc,semver_9=semver.diff,semver_10=semver.compareIdentifiers,semver_11=semver.rcompareIdentifiers,semver_12=semver.major,semver_13=semver.minor,semver_14=semver.patch,semver_15=semver.compare,semver_16=semver.compareLoose,semver_17=semver.rcompare,semver_18=semver.sort,semver_19=semver.rsort,semver_20=semver.gt,semver_21=semver.lt,semver_22=semver.eq,semver_23=semver.neq,semver_24=semver.gte,semver_25=semver.lte,semver_26=semver.cmp,semver_27=semver.Comparator,semver_28=semver.Range,semver_29=semver.toComparators,semver_30=semver.satisfies,semver_31=semver.maxSatisfying,semver_32=semver.minSatisfying,semver_33=semver.validRange,semver_34=semver.ltr,semver_35=semver.gtr,semver_36=semver.outside,semver_37=semver.prerelease,semver_38=semver.intersects,semver_39=semver.coerce;const{argv:argv}=process,verbose=-1!==argv.indexOf("-v")||-1!==argv.indexOf("--verbose"),ignoreLocalBin=-1!==argv.indexOf("-i")||-1!==argv.indexOf("--ignore-local-bin"),logger={info:console.info,debug:verbose?console.debug:()=>null,error:console.error},getVersion=({command:e,localBinFolder:r,global:t=!0})=>{const n={PATH:process.env.PATH};return n.PATH=t?n.PATH.replace(`${r}${path.delimiter}`,""):`${r}${path.delimiter}${n.PATH}`,child_process.execSync(e,{env:n}).toString().replace("v","").trim()},checkVersion=(e,r)=>{let t=null;const n=path.join(process.cwd(),"package.json");try{t=require(n)}catch(e){logger.error(`Unable to find ${n}! 😱${os.EOL}`),logger.error(`Please ensure that this script is executed in the same directory.${os.EOL}`),process.exit(1)}t.engines&&t.engines[e]||(logger.error(`There is no engine named "${e}" specified in package.json! 😱${os.EOL}`),process.exit(1));const s=t.engines[e];let o=null,i=null,a=null,c=null,p=null;try{const t=child_process.execSync("npm bin").toString().trim(),n=fs.existsSync(`${t}${path.sep}${e}`);o=getVersion({command:r,localBinFolder:t}),c=semver.satisfies(o,s),logger.debug(`Expected ${e} version:\t${s}`),logger.debug(`╰─ Global ${e} version:\t${o}\t${c?"✅️":"❌️"}`),n&&(i=getVersion({command:r,localBinFolder:t,global:!1}),p=semver.satisfies(i,s),logger.debug(`╰─ Local ${e} version:\t${i}\t${p?"✅️":"❌️"} (from ${t})`)),a=ignoreLocalBin?o:i||o,logger.debug(`╰─ (using: ${a})${os.EOL}`)}catch(r){logger.error(`Unable to get ${e} version! 😱${os.EOL}`),process.exit(1)}if(!semver.satisfies(a,s)){const r="https://github.com/Skyscanner/ensure-node-env/blob/master/README.md#guide";logger.error(`Expected ${e} version to match ${s}, but got ${a}. 😱${os.EOL}`),verbose||logger.error(`(pass the --verbose flag to the script for a more detailed output)${os.EOL}`),logger.error(`Please follow Skyscanner's node environment guide (see ${r}).${os.EOL}`),process.exit(1)}};logger.info(`Checking node & npm versions...${os.EOL}`),checkVersion("node","node --version"),checkVersion("npm","npm -g --version"),logger.info(`All good. 👍${os.EOL}`); diff --git a/index.js b/index.js index 564bce5..232362c 100644 --- a/index.js +++ b/index.js @@ -29,11 +29,11 @@ const verbose = argv.indexOf('-v') !== -1 || argv.indexOf('--verbose') !== -1; const ignoreLocalBin = argv.indexOf('-i') !== -1 || argv.indexOf('--ignore-local-bin') !== -1; -const logger = console; - -if (!verbose) { - logger.debug = () => {}; -} +const logger = { + info: console.info, + debug: verbose ? console.debug : () => null, + error: console.error, +}; const getVersion = ({ command, localBinFolder, global = true }) => { const env = { PATH: process.env.PATH }; From 0b9f626f4d38a2499d34ccb83a8b427b26d3bb27 Mon Sep 17 00:00:00 2001 From: Matthew Davidson Date: Fri, 11 Jan 2019 11:26:57 +0000 Subject: [PATCH 7/7] [squash] Fix typos and formatting --- README.md | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 2fc7615..d651d01 100644 --- a/README.md +++ b/README.md @@ -21,16 +21,11 @@ Add the following to your `package.json`: Where the `node` and `npm` engine properties specify a valid semver range for Node and npm version respectively. -> By default, if you have a `node` or `npm` binary installed locally to the project (thus ending up -in `./node_modules/.bin`), it will take precedence. If you wanto to check against a globally installed -version instead, you can pass the `--ignore-local-bin` parameter (`-i` for short). +> By default, if you have a `node` or `npm` binary installed locally to the project (thus ending up in `./node_modules/.bin`), it will take precedence. If you want to check against a globally installed version instead, you can pass the `--ignore-local-bin` parameter (`-i` for short). > -> It's worth noting that, while you may not be directly depending on `node` or `npm` packages, you may -still have them as transitive dependencies - in any case, `ensure-node-env` will show which one is being considered -and where it comes from. +> It's worth noting that, while you may not be directly depending on `node` or `npm` packages, you may still have them as transitive dependencies - in any case, `ensure-node-env` will show which one is being considered and where it comes from. -By default, the script's output is minimal. If you want it to display more information, such as the exact -versions being compared, you can pass the `--verbose` parameter (`-v` for short). +By default, the script's output is minimal. If you want it to display more information, such as the exact versions being compared, you can pass the `--verbose` parameter (`-v` for short). ### Usage in libraries