forked from Skyscanner/ensure-node-env
-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.js
1 lines (1 loc) · 17.4 KB
/
index.js
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]+"?",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<s)return r}return e}):this.prerelease=[],this.build=i[5]?i[5].split("."):[],this.format()}r.parse=X,r.valid=function(e,r){var t=X(e,r);return t?t.version:null},r.clean=function(e,r){var t=X(e.trim().replace(/^[=v]+/,""),r);return t?t.version:null},r.SemVer=z,z.prototype.format=function(){return this.version=this.major+"."+this.minor+"."+this.patch,this.prerelease.length&&(this.version+="-"+this.prerelease.join(".")),this.version},z.prototype.toString=function(){return this.version},z.prototype.compare=function(e){return t("SemVer.compare",this.version,this.loose,e),e instanceof z||(e=new z(e,this.loose)),this.compareMain(e)||this.comparePre(e)},z.prototype.compareMain=function(e){return e instanceof z||(e=new z(e,this.loose)),J(this.major,e.major)||J(this.minor,e.minor)||J(this.patch,e.patch)},z.prototype.comparePre=function(e){if(e instanceof z||(e=new z(e,this.loose)),this.prerelease.length&&!e.prerelease.length)return-1;if(!this.prerelease.length&&e.prerelease.length)return 1;if(!this.prerelease.length&&!e.prerelease.length)return 0;var r=0;do{var n=this.prerelease[r],s=e.prerelease[r];if(t("prerelease compare",r,n,s),void 0===n&&void 0===s)return 0;if(void 0===s)return 1;if(void 0===n)return-1;if(n!==s)return J(n,s)}while(++r)},z.prototype.inc=function(e,r){switch(e){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",r);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",r);break;case"prepatch":this.prerelease.length=0,this.inc("patch",r),this.inc("pre",r);break;case"prerelease":0===this.prerelease.length&&this.inc("patch",r),this.inc("pre",r);break;case"major":0===this.minor&&0===this.patch&&0!==this.prerelease.length||this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":0===this.patch&&0!==this.prerelease.length||this.minor++,this.patch=0,this.prerelease=[];break;case"patch":0===this.prerelease.length&&this.patch++,this.prerelease=[];break;case"pre":if(0===this.prerelease.length)this.prerelease=[0];else{for(var t=this.prerelease.length;--t>=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:e<r?-1:e>r?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;n<e.length;n++)if(!e[n].test(r))return!1;if(r.prerelease.length){for(n=0;n<e.length;n++)if(t(e[n].semver),e[n].semver!==oe&&e[n].semver.prerelease.length>0){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<r.set.length;++p){var u=r.set[p],l=null,v=null;if(u.forEach(function(e){e.semver===oe&&(e=new se(">=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<this.set.length;r++)if(pe(this.set[r],e))return!0;return!1},r.satisfies=ue,r.maxSatisfying=function(e,r,t){var n=null,s=null;try{var o=new ie(r,t)}catch(e){return null}return e.forEach(function(e){o.test(e)&&(n&&-1!==s.compare(e)||(s=new z(n=e,t)))}),n},r.minSatisfying=function(e,r,t){var n=null,s=null;try{var o=new ie(r,t)}catch(e){return null}return e.forEach(function(e){o.test(e)&&(n&&1!==s.compare(e)||(s=new z(n=e,t)))}),n},r.validRange=function(e,r){try{return new ie(e,r).range||"*"}catch(e){return null}},r.ltr=function(e,r,t){return le(e,r,"<",t)},r.gtr=function(e,r,t){return le(e,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}`);