@under_koen/bsm 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -450,7 +450,7 @@ You can extend scripts by using the `extends` key. You can import scripts from o
450
450
 
451
451
  ```javascript
452
452
  module.exports = {
453
- extends: ['@under_koen/bsm/package.scripts.js', './test.js'],
453
+ extends: ['@under_koen/bsm/package.scripts.js'],
454
454
  scripts: {},
455
455
  }
456
456
  ```
@@ -461,6 +461,36 @@ bsm lint
461
461
 
462
462
  The above command will execute `lint` coming from the `package.scripts.js` of `@under_koen/bsm`.
463
463
 
464
+ #### Extending with options (experimental)
465
+
466
+ You can extend scripts with options by using the `extends` key. You can import scripts from other files or packages.
467
+
468
+ ```javascript
469
+ // package.scripts.js
470
+ module.exports = {
471
+ extends: [
472
+ ['./test', "World"]
473
+ ],
474
+ scripts: {},
475
+ }
476
+ ```
477
+
478
+ ```javascript
479
+ // test.js
480
+
481
+ module.exports = (name) => ({
482
+ scripts: {
483
+ test: `echo Hello ${name}!`,
484
+ },
485
+ });
486
+ ```
487
+
488
+ ```bash
489
+ bsm test
490
+ ```
491
+
492
+ The above command will execute `echo Hello World!`.
493
+
464
494
  ## Future plans
465
495
 
466
496
  - [ ] Have support for workspaces / lerna
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
1
  #! /usr/bin/env node
2
- "use strict";var rn=Object.create;var V=Object.defineProperty;var on=Object.getOwnPropertyDescriptor;var sn=Object.getOwnPropertyNames;var cn=Object.getPrototypeOf,an=Object.prototype.hasOwnProperty;var h=(n,e)=>()=>(e||n((e={exports:{}}).exports,e),e.exports);var fn=(n,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of sn(e))!an.call(n,o)&&o!==t&&V(n,o,{get:()=>e[o],enumerable:!(r=on(e,o))||r.enumerable});return n};var P=(n,e,t)=>(t=n!=null?rn(cn(n)):{},fn(e||!n||!n.__esModule?V(t,"default",{value:n,enumerable:!0}):t,n));var W=h((mn,Y)=>{"use strict";function un(n,e){var t=n;e.slice(0,-1).forEach(function(o){t=t[o]||{}});var r=e[e.length-1];return r in t}function x(n){return typeof n=="number"||/^0x[0-9a-f]+$/i.test(n)?!0:/^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(n)}function K(n,e){return e==="constructor"&&typeof n[e]=="function"||e==="__proto__"}Y.exports=function(n,e){e||(e={});var t={bools:{},strings:{},unknownFn:null};typeof e.unknown=="function"&&(t.unknownFn=e.unknown),typeof e.boolean=="boolean"&&e.boolean?t.allBools=!0:[].concat(e.boolean).filter(Boolean).forEach(function(i){t.bools[i]=!0});var r={};function o(i){return r[i].some(function(l){return t.bools[l]})}Object.keys(e.alias||{}).forEach(function(i){r[i]=[].concat(e.alias[i]),r[i].forEach(function(l){r[l]=[i].concat(r[i].filter(function(d){return l!==d}))})}),[].concat(e.string).filter(Boolean).forEach(function(i){t.strings[i]=!0,r[i]&&[].concat(r[i]).forEach(function(l){t.strings[l]=!0})});var c=e.default||{},s={_:[]};function L(i,l){return t.allBools&&/^--[^=]+$/.test(l)||t.strings[i]||t.bools[i]||r[i]}function O(i,l,d){for(var f=i,D=0;D<l.length-1;D++){var T=l[D];if(K(f,T))return;f[T]===void 0&&(f[T]={}),(f[T]===Object.prototype||f[T]===Number.prototype||f[T]===String.prototype)&&(f[T]={}),f[T]===Array.prototype&&(f[T]=[]),f=f[T]}var m=l[l.length-1];K(f,m)||((f===Object.prototype||f===Number.prototype||f===String.prototype)&&(f={}),f===Array.prototype&&(f=[]),f[m]===void 0||t.bools[m]||typeof f[m]=="boolean"?f[m]=d:Array.isArray(f[m])?f[m].push(d):f[m]=[f[m],d])}function I(i,l,d){if(!(d&&t.unknownFn&&!L(i,d)&&t.unknownFn(d)===!1)){var f=!t.strings[i]&&x(l)?Number(l):l;O(s,i.split("."),f),(r[i]||[]).forEach(function(D){O(s,D.split("."),f)})}}Object.keys(t.bools).forEach(function(i){I(i,c[i]===void 0?!1:c[i])});var w=[];n.indexOf("--")!==-1&&(w=n.slice(n.indexOf("--")+1),n=n.slice(0,n.indexOf("--")));for(var _=0;_<n.length;_++){var a=n[_],u,S;if(/^--.+=/.test(a)){var Q=a.match(/^--([^=]+)=([\s\S]*)$/);u=Q[1];var g=Q[2];t.bools[u]&&(g=g!=="false"),I(u,g,a)}else if(/^--no-.+/.test(a))u=a.match(/^--no-(.+)/)[1],I(u,!1,a);else if(/^--.+/.test(a))u=a.match(/^--(.+)/)[1],S=n[_+1],S!==void 0&&!/^(-|--)[^-]/.test(S)&&!t.bools[u]&&!t.allBools&&(!r[u]||!o(u))?(I(u,S,a),_+=1):/^(true|false)$/.test(S)?(I(u,S==="true",a),_+=1):I(u,t.strings[u]?"":!0,a);else if(/^-[^-]+/.test(a)){for(var C=a.slice(1,-1).split(""),B=!1,p=0;p<C.length;p++){if(S=a.slice(p+2),S==="-"){I(C[p],S,a);continue}if(/[A-Za-z]/.test(C[p])&&S[0]==="="){I(C[p],S.slice(1),a),B=!0;break}if(/[A-Za-z]/.test(C[p])&&/-?\d+(\.\d*)?(e-?\d+)?$/.test(S)){I(C[p],S,a),B=!0;break}if(C[p+1]&&C[p+1].match(/\W/)){I(C[p],a.slice(p+2),a),B=!0;break}else I(C[p],t.strings[C[p]]?"":!0,a)}u=a.slice(-1)[0],!B&&u!=="-"&&(n[_+1]&&!/^(-|--)[^-]/.test(n[_+1])&&!t.bools[u]&&(!r[u]||!o(u))?(I(u,n[_+1],a),_+=1):n[_+1]&&/^(true|false)$/.test(n[_+1])?(I(u,n[_+1]==="true",a),_+=1):I(u,t.strings[u]?"":!0,a))}else if((!t.unknownFn||t.unknownFn(a)!==!1)&&s._.push(t.strings._||!x(a)?a:Number(a)),e.stopEarly){s._.push.apply(s._,n.slice(_+1));break}}return Object.keys(c).forEach(function(i){un(s,i.split("."))||(O(s,i.split("."),c[i]),(r[i]||[]).forEach(function(l){O(s,l.split("."),c[i])}))}),e["--"]?s["--"]=w.slice():w.forEach(function(i){s._.push(i)}),s}});var j=h((An,ln)=>{ln.exports=[{name:"Appcircle",constant:"APPCIRCLE",env:"AC_APPCIRCLE"},{name:"AppVeyor",constant:"APPVEYOR",env:"APPVEYOR",pr:"APPVEYOR_PULL_REQUEST_NUMBER"},{name:"AWS CodeBuild",constant:"CODEBUILD",env:"CODEBUILD_BUILD_ARN"},{name:"Azure Pipelines",constant:"AZURE_PIPELINES",env:"SYSTEM_TEAMFOUNDATIONCOLLECTIONURI",pr:"SYSTEM_PULLREQUEST_PULLREQUESTID"},{name:"Bamboo",constant:"BAMBOO",env:"bamboo_planKey"},{name:"Bitbucket Pipelines",constant:"BITBUCKET",env:"BITBUCKET_COMMIT",pr:"BITBUCKET_PR_ID"},{name:"Bitrise",constant:"BITRISE",env:"BITRISE_IO",pr:"BITRISE_PULL_REQUEST"},{name:"Buddy",constant:"BUDDY",env:"BUDDY_WORKSPACE_ID",pr:"BUDDY_EXECUTION_PULL_REQUEST_ID"},{name:"Buildkite",constant:"BUILDKITE",env:"BUILDKITE",pr:{env:"BUILDKITE_PULL_REQUEST",ne:"false"}},{name:"CircleCI",constant:"CIRCLE",env:"CIRCLECI",pr:"CIRCLE_PULL_REQUEST"},{name:"Cirrus CI",constant:"CIRRUS",env:"CIRRUS_CI",pr:"CIRRUS_PR"},{name:"Codefresh",constant:"CODEFRESH",env:"CF_BUILD_ID",pr:{any:["CF_PULL_REQUEST_NUMBER","CF_PULL_REQUEST_ID"]}},{name:"Codemagic",constant:"CODEMAGIC",env:"CM_BUILD_ID",pr:"CM_PULL_REQUEST"},{name:"Codeship",constant:"CODESHIP",env:{CI_NAME:"codeship"}},{name:"Drone",constant:"DRONE",env:"DRONE",pr:{DRONE_BUILD_EVENT:"pull_request"}},{name:"dsari",constant:"DSARI",env:"DSARI"},{name:"Expo Application Services",constant:"EAS",env:"EAS_BUILD"},{name:"Gerrit",constant:"GERRIT",env:"GERRIT_PROJECT"},{name:"GitHub Actions",constant:"GITHUB_ACTIONS",env:"GITHUB_ACTIONS",pr:{GITHUB_EVENT_NAME:"pull_request"}},{name:"GitLab CI",constant:"GITLAB",env:"GITLAB_CI",pr:"CI_MERGE_REQUEST_ID"},{name:"GoCD",constant:"GOCD",env:"GO_PIPELINE_LABEL"},{name:"Google Cloud Build",constant:"GOOGLE_CLOUD_BUILD",env:"BUILDER_OUTPUT"},{name:"Harness CI",constant:"HARNESS",env:"HARNESS_BUILD_ID"},{name:"Heroku",constant:"HEROKU",env:{env:"NODE",includes:"/app/.heroku/node/bin/node"}},{name:"Hudson",constant:"HUDSON",env:"HUDSON_URL"},{name:"Jenkins",constant:"JENKINS",env:["JENKINS_URL","BUILD_ID"],pr:{any:["ghprbPullId","CHANGE_ID"]}},{name:"LayerCI",constant:"LAYERCI",env:"LAYERCI",pr:"LAYERCI_PULL_REQUEST"},{name:"Magnum CI",constant:"MAGNUM",env:"MAGNUM"},{name:"Netlify CI",constant:"NETLIFY",env:"NETLIFY",pr:{env:"PULL_REQUEST",ne:"false"}},{name:"Nevercode",constant:"NEVERCODE",env:"NEVERCODE",pr:{env:"NEVERCODE_PULL_REQUEST",ne:"false"}},{name:"ReleaseHub",constant:"RELEASEHUB",env:"RELEASE_BUILD_ID"},{name:"Render",constant:"RENDER",env:"RENDER",pr:{IS_PULL_REQUEST:"true"}},{name:"Sail CI",constant:"SAIL",env:"SAILCI",pr:"SAIL_PULL_REQUEST_NUMBER"},{name:"Screwdriver",constant:"SCREWDRIVER",env:"SCREWDRIVER",pr:{env:"SD_PULL_REQUEST",ne:"false"}},{name:"Semaphore",constant:"SEMAPHORE",env:"SEMAPHORE",pr:"PULL_REQUEST_NUMBER"},{name:"Shippable",constant:"SHIPPABLE",env:"SHIPPABLE",pr:{IS_PULL_REQUEST:"true"}},{name:"Solano CI",constant:"SOLANO",env:"TDDIUM",pr:"TDDIUM_PR_ID"},{name:"Sourcehut",constant:"SOURCEHUT",env:{CI_NAME:"sourcehut"}},{name:"Strider CD",constant:"STRIDER",env:"STRIDER"},{name:"TaskCluster",constant:"TASKCLUSTER",env:["TASK_ID","RUN_ID"]},{name:"TeamCity",constant:"TEAMCITY",env:"TEAMCITY_VERSION"},{name:"Travis CI",constant:"TRAVIS",env:"TRAVIS",pr:{env:"TRAVIS_PULL_REQUEST",ne:"false"}},{name:"Vercel",constant:"VERCEL",env:{any:["NOW_BUILDER","VERCEL"]}},{name:"Visual Studio App Center",constant:"APPCENTER",env:"APPCENTER_BUILD_ID"},{name:"Woodpecker",constant:"WOODPECKER",env:{CI:"woodpecker"},pr:{CI_BUILD_EVENT:"pull_request"}},{name:"Xcode Cloud",constant:"XCODE_CLOUD",env:"CI_XCODE_PROJECT",pr:"CI_PULL_REQUEST_NUMBER"},{name:"Xcode Server",constant:"XCODE_SERVER",env:"XCS"}]});var q=h(R=>{"use strict";var J=j(),E=process.env;Object.defineProperty(R,"_vendors",{value:J.map(function(n){return n.constant})});R.name=null;R.isPR=null;J.forEach(function(n){let t=(Array.isArray(n.env)?n.env:[n.env]).every(function(r){return X(r)});if(R[n.constant]=t,!!t)switch(R.name=n.name,typeof n.pr){case"string":R.isPR=!!E[n.pr];break;case"object":"env"in n.pr?R.isPR=n.pr.env in E&&E[n.pr.env]!==n.pr.ne:"any"in n.pr?R.isPR=n.pr.any.some(function(r){return!!E[r]}):R.isPR=X(n.pr);break;default:R.isPR=null}});R.isCI=!!(E.CI!=="false"&&(E.BUILD_ID||E.BUILD_NUMBER||E.CI||E.CI_APP_ID||E.CI_BUILD_ID||E.CI_BUILD_NUMBER||E.CI_NAME||E.CONTINUOUS_INTEGRATION||E.RUN_ID||R.name));function X(n){return typeof n=="string"?!!E[n]:"env"in n?E[n.env]&&E[n.env].includes(n.includes):"any"in n?n.any.some(function(e){return!!E[e]}):Object.keys(n).every(function(e){return E[e]===n[e]})}});var Z=P(W());function M(n){return n!==null&&typeof n=="object"}function y(n,e,t=".",r){if(!M(e))return y(n,{},t,r);let o=Object.assign({},e);for(let c in n){if(c==="__proto__"||c==="constructor")continue;let s=n[c];s!=null&&(r&&r(o,c,s,t)||(Array.isArray(s)&&Array.isArray(o[c])?o[c]=[...s,...o[c]]:M(s)&&M(o[c])?o[c]=y(s,o[c],(t?`${t}.`:"")+c.toString(),r):o[c]=s))}return o}function H(n){return(...e)=>e.reduce((t,r)=>y(t,r,"",n),{})}var F=H(),Un=H((n,e,t)=>{if(typeof n[e]<"u"&&typeof t=="function")return n[e]=t(n[e]),!0}),vn=H((n,e,t)=>{if(Array.isArray(n[e])&&typeof t=="function")return n[e]=t(n[e]),!0});var k=P(require("node:child_process")),N=P(require("node:fs")),b=P(require("path")),nn=P(q()),A=(0,Z.default)(process.argv.slice(2),{"--":!0}),en=A.config?[A.config]:[process.env.BSM_CONFIG,"./package.scripts.js","./package.scripts.json"],{config:G,file:En}=en.reduce((n,e)=>{if(n||!e)return n;let t=tn(e);if(t)return{config:t,file:e}},void 0)??{};process.env.BSM_CONFIG=En;var z={scripts:{},config:{allowFunction:!1}};function tn(n){if(n)try{n=require.resolve(n,{paths:[process.cwd()]});let e=require(n);if(Object.hasOwn(e,"extends")&&e.extends){let t=[];for(let r of e.extends){let o=tn(r);o?t.push(o):(console.error(`\x1B[31mCannot find config '${r}' to extend\x1B[0m`),process.exit(1))}return F(e,...t,z)}else return F(e,z)}catch(e){if((e==null?void 0:e.code)==="MODULE_NOT_FOUND")return;console.error(e),console.error(`\x1B[31mError loading config '${n}'\x1B[0m`),process.exit(1)}}async function _n(){G||(console.error(`\x1B[31mCannot find config ${en.filter(n=>n!==void 0).map(n=>`'${n}'`).join(" or ")}\x1B[0m`),process.exit(1)),In(process.env,await pn());for(let n of A._){if(n.startsWith("~")&&process.env.BSM_PATH){let e=process.env.BSM_PATH.split("."),t=$(G.scripts,e);if(t){await v(t,n.split(".").splice(1),e);continue}}await v(G.scripts,n.split("."))}}function In(n,e){if(e)if(process.platform==="win32"){if(!process.env.Path||process.env.Path.includes(e))return;n.Path=`${process.env.Path};${e}`}else{if(!process.env.PATH||process.env.PATH.includes(e))return;n.PATH=`${process.env.PATH}:${e}`}}async function pn(){let n=process.cwd();for(;await N.promises.access(b.default.join(n,"node_modules/.bin"),N.constants.X_OK).then(()=>!1,()=>!0);){let e=b.default.join(n,"../");if(e===n)return null;n=e}return b.default.join(n,"node_modules/.bin")}function $(n,e){if(e.length===0)return n;let t=e[0];if(typeof n=="object"&&Object.hasOwn(n,t))if(Array.isArray(n)){let r=parseInt(t);return $(n[r],e.slice(1))}else return $(n[t],e.slice(1))}async function v(n,e,t=[],r=!0,o=!1){try{if(typeof n=="function")try{let s=await Rn(n,e,t);if(!s&&e.length===0)return;await v(s??{},e,t,r);return}catch(s){throw console.error(s),console.error(`\x1B[31mError executing function '${t.join(".")}'\x1B[0m`),{code:1,script:t.join(".")}}await U(n,["_pre"],t,!1,!0);let c=e.slice(1);if(e.length===0)await Cn(n,t,r,o);else if(e[0]==="*")await Sn(n,c,t);else if(!await U(n,e,t,!0,!1,!1))return console.error(`\x1B[31mScript '${[...t,...e].join(".")}' not found\x1B[0m`),process.exit(127);await U(n,["_post"],t,!1,!0)}catch(c){if(process.env.BSM_ERROR=c.code.toString(),await U(n,["_onError"],t,!1,!0),!await U(n,["_catch"],t,!1))throw c}finally{await U(n,["_finally"],t,!1,!0)}}async function Sn(n,e,t){if(typeof n=="string")await v(n,e,t);else if(typeof n=="function")process.exit(100);else if(Array.isArray(n))for(let r=0;r<n.length;r++)await v(n[r],e,[...t,r.toString()],!0,!0);else for(let r in n)r.startsWith("_")||Object.hasOwn(n,r)&&await v(n[r],e,[...t,r],!0,!0)}async function Rn(n,e,t){return console.log(`> \x1B[93mExecuting JavaScript function\x1B[0m \x1B[90m(${[...t].join(".")})\x1B[0m`),await n.call(null,A["--"])}async function U(n,e,t,r=!0,o=!1,c=!0){if(o&&process.env.BSM_SCRIPT===[...t,...e].join("."))return!1;let s=e[0];if(typeof n!="object"||!Object.hasOwn(n,s))return!1;if(Array.isArray(n)){let L=parseInt(s);await v(n[L],e.slice(1),[...t,s],r,c)}else await v(n[s],e.slice(1),[...t,s],r,c);return!0}async function Cn(n,e,t,r){switch(typeof n){case"string":await Tn(n,e,t);return;case"object":if(Array.isArray(n))for(let o=0;o<n.length;o++)await v(n[o],[],[...e,o.toString()]);else if(!(nn.isCI&&await U(n,["_ci"],e))){if(!await U(n,[`_${process.platform}`],e)){if(!await U(n,["_default"],e)){if(!r)return console.error(`\x1B[31mScript '${[...e].join(".")}' is not executable\x1B[0m`),process.exit(127)}}}return}}async function Tn(n,e,t){var r;if(t&&((r=A["--"])!=null&&r.length)&&(n+=" "+A["--"].join(" ")),console.log(`> ${n} \x1B[90m(${e.join(".")})\x1B[0m`),n!=="")return await new Promise((o,c)=>{k.default.spawn(n,[],{stdio:"inherit",shell:!0,env:{...process.env,BSM_PATH:e.slice(0,-1).join("."),BSM_SCRIPT:e.join(".")}}).on("close",L=>{L===0?o():c({code:L,script:e.join(".")})})})}_n().catch(n=>{console.error(`\x1B[31mScript failed with code ${n.code}\x1B[0m \x1B[90m(${n.script})\x1B[0m`),process.exit(n.code)});
2
+ "use strict";var on=Object.create;var y=Object.defineProperty;var sn=Object.getOwnPropertyDescriptor;var cn=Object.getOwnPropertyNames;var an=Object.getPrototypeOf,fn=Object.prototype.hasOwnProperty;var h=(n,e)=>()=>(e||n((e={exports:{}}).exports,e),e.exports);var V=(n,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of cn(e))!fn.call(n,i)&&i!==t&&y(n,i,{get:()=>e[i],enumerable:!(r=sn(e,i))||r.enumerable});return n};var P=(n,e,t)=>(t=n!=null?on(an(n)):{},V(e||!n||!n.__esModule?y(t,"default",{value:n,enumerable:!0}):t,n)),un=n=>V(y({},"__esModule",{value:!0}),n);var j=h((vn,W)=>{"use strict";function ln(n,e){var t=n;e.slice(0,-1).forEach(function(i){t=t[i]||{}});var r=e[e.length-1];return r in t}function K(n){return typeof n=="number"||/^0x[0-9a-f]+$/i.test(n)?!0:/^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(n)}function Y(n,e){return e==="constructor"&&typeof n[e]=="function"||e==="__proto__"}W.exports=function(n,e){e||(e={});var t={bools:{},strings:{},unknownFn:null};typeof e.unknown=="function"&&(t.unknownFn=e.unknown),typeof e.boolean=="boolean"&&e.boolean?t.allBools=!0:[].concat(e.boolean).filter(Boolean).forEach(function(o){t.bools[o]=!0});var r={};function i(o){return r[o].some(function(l){return t.bools[l]})}Object.keys(e.alias||{}).forEach(function(o){r[o]=[].concat(e.alias[o]),r[o].forEach(function(l){r[l]=[o].concat(r[o].filter(function(d){return l!==d}))})}),[].concat(e.string).filter(Boolean).forEach(function(o){t.strings[o]=!0,r[o]&&[].concat(r[o]).forEach(function(l){t.strings[l]=!0})});var c=e.default||{},s={_:[]};function A(o,l){return t.allBools&&/^--[^=]+$/.test(l)||t.strings[o]||t.bools[o]||r[o]}function O(o,l,d){for(var f=o,D=0;D<l.length-1;D++){var T=l[D];if(Y(f,T))return;f[T]===void 0&&(f[T]={}),(f[T]===Object.prototype||f[T]===Number.prototype||f[T]===String.prototype)&&(f[T]={}),f[T]===Array.prototype&&(f[T]=[]),f=f[T]}var m=l[l.length-1];Y(f,m)||((f===Object.prototype||f===Number.prototype||f===String.prototype)&&(f={}),f===Array.prototype&&(f=[]),f[m]===void 0||t.bools[m]||typeof f[m]=="boolean"?f[m]=d:Array.isArray(f[m])?f[m].push(d):f[m]=[f[m],d])}function I(o,l,d){if(!(d&&t.unknownFn&&!A(o,d)&&t.unknownFn(d)===!1)){var f=!t.strings[o]&&K(l)?Number(l):l;O(s,o.split("."),f),(r[o]||[]).forEach(function(D){O(s,D.split("."),f)})}}Object.keys(t.bools).forEach(function(o){I(o,c[o]===void 0?!1:c[o])});var w=[];n.indexOf("--")!==-1&&(w=n.slice(n.indexOf("--")+1),n=n.slice(0,n.indexOf("--")));for(var _=0;_<n.length;_++){var a=n[_],u,p;if(/^--.+=/.test(a)){var Q=a.match(/^--([^=]+)=([\s\S]*)$/);u=Q[1];var g=Q[2];t.bools[u]&&(g=g!=="false"),I(u,g,a)}else if(/^--no-.+/.test(a))u=a.match(/^--no-(.+)/)[1],I(u,!1,a);else if(/^--.+/.test(a))u=a.match(/^--(.+)/)[1],p=n[_+1],p!==void 0&&!/^(-|--)[^-]/.test(p)&&!t.bools[u]&&!t.allBools&&(!r[u]||!i(u))?(I(u,p,a),_+=1):/^(true|false)$/.test(p)?(I(u,p==="true",a),_+=1):I(u,t.strings[u]?"":!0,a);else if(/^-[^-]+/.test(a)){for(var R=a.slice(1,-1).split(""),B=!1,S=0;S<R.length;S++){if(p=a.slice(S+2),p==="-"){I(R[S],p,a);continue}if(/[A-Za-z]/.test(R[S])&&p[0]==="="){I(R[S],p.slice(1),a),B=!0;break}if(/[A-Za-z]/.test(R[S])&&/-?\d+(\.\d*)?(e-?\d+)?$/.test(p)){I(R[S],p,a),B=!0;break}if(R[S+1]&&R[S+1].match(/\W/)){I(R[S],a.slice(S+2),a),B=!0;break}else I(R[S],t.strings[R[S]]?"":!0,a)}u=a.slice(-1)[0],!B&&u!=="-"&&(n[_+1]&&!/^(-|--)[^-]/.test(n[_+1])&&!t.bools[u]&&(!r[u]||!i(u))?(I(u,n[_+1],a),_+=1):n[_+1]&&/^(true|false)$/.test(n[_+1])?(I(u,n[_+1]==="true",a),_+=1):I(u,t.strings[u]?"":!0,a))}else if((!t.unknownFn||t.unknownFn(a)!==!1)&&s._.push(t.strings._||!K(a)?a:Number(a)),e.stopEarly){s._.push.apply(s._,n.slice(_+1));break}}return Object.keys(c).forEach(function(o){ln(s,o.split("."))||(O(s,o.split("."),c[o]),(r[o]||[]).forEach(function(l){O(s,l.split("."),c[o])}))}),e["--"]?s["--"]=w.slice():w.forEach(function(o){s._.push(o)}),s}});var X=h((Pn,En)=>{En.exports=[{name:"Appcircle",constant:"APPCIRCLE",env:"AC_APPCIRCLE"},{name:"AppVeyor",constant:"APPVEYOR",env:"APPVEYOR",pr:"APPVEYOR_PULL_REQUEST_NUMBER"},{name:"AWS CodeBuild",constant:"CODEBUILD",env:"CODEBUILD_BUILD_ARN"},{name:"Azure Pipelines",constant:"AZURE_PIPELINES",env:"SYSTEM_TEAMFOUNDATIONCOLLECTIONURI",pr:"SYSTEM_PULLREQUEST_PULLREQUESTID"},{name:"Bamboo",constant:"BAMBOO",env:"bamboo_planKey"},{name:"Bitbucket Pipelines",constant:"BITBUCKET",env:"BITBUCKET_COMMIT",pr:"BITBUCKET_PR_ID"},{name:"Bitrise",constant:"BITRISE",env:"BITRISE_IO",pr:"BITRISE_PULL_REQUEST"},{name:"Buddy",constant:"BUDDY",env:"BUDDY_WORKSPACE_ID",pr:"BUDDY_EXECUTION_PULL_REQUEST_ID"},{name:"Buildkite",constant:"BUILDKITE",env:"BUILDKITE",pr:{env:"BUILDKITE_PULL_REQUEST",ne:"false"}},{name:"CircleCI",constant:"CIRCLE",env:"CIRCLECI",pr:"CIRCLE_PULL_REQUEST"},{name:"Cirrus CI",constant:"CIRRUS",env:"CIRRUS_CI",pr:"CIRRUS_PR"},{name:"Codefresh",constant:"CODEFRESH",env:"CF_BUILD_ID",pr:{any:["CF_PULL_REQUEST_NUMBER","CF_PULL_REQUEST_ID"]}},{name:"Codemagic",constant:"CODEMAGIC",env:"CM_BUILD_ID",pr:"CM_PULL_REQUEST"},{name:"Codeship",constant:"CODESHIP",env:{CI_NAME:"codeship"}},{name:"Drone",constant:"DRONE",env:"DRONE",pr:{DRONE_BUILD_EVENT:"pull_request"}},{name:"dsari",constant:"DSARI",env:"DSARI"},{name:"Expo Application Services",constant:"EAS",env:"EAS_BUILD"},{name:"Gerrit",constant:"GERRIT",env:"GERRIT_PROJECT"},{name:"GitHub Actions",constant:"GITHUB_ACTIONS",env:"GITHUB_ACTIONS",pr:{GITHUB_EVENT_NAME:"pull_request"}},{name:"GitLab CI",constant:"GITLAB",env:"GITLAB_CI",pr:"CI_MERGE_REQUEST_ID"},{name:"GoCD",constant:"GOCD",env:"GO_PIPELINE_LABEL"},{name:"Google Cloud Build",constant:"GOOGLE_CLOUD_BUILD",env:"BUILDER_OUTPUT"},{name:"Harness CI",constant:"HARNESS",env:"HARNESS_BUILD_ID"},{name:"Heroku",constant:"HEROKU",env:{env:"NODE",includes:"/app/.heroku/node/bin/node"}},{name:"Hudson",constant:"HUDSON",env:"HUDSON_URL"},{name:"Jenkins",constant:"JENKINS",env:["JENKINS_URL","BUILD_ID"],pr:{any:["ghprbPullId","CHANGE_ID"]}},{name:"LayerCI",constant:"LAYERCI",env:"LAYERCI",pr:"LAYERCI_PULL_REQUEST"},{name:"Magnum CI",constant:"MAGNUM",env:"MAGNUM"},{name:"Netlify CI",constant:"NETLIFY",env:"NETLIFY",pr:{env:"PULL_REQUEST",ne:"false"}},{name:"Nevercode",constant:"NEVERCODE",env:"NEVERCODE",pr:{env:"NEVERCODE_PULL_REQUEST",ne:"false"}},{name:"ReleaseHub",constant:"RELEASEHUB",env:"RELEASE_BUILD_ID"},{name:"Render",constant:"RENDER",env:"RENDER",pr:{IS_PULL_REQUEST:"true"}},{name:"Sail CI",constant:"SAIL",env:"SAILCI",pr:"SAIL_PULL_REQUEST_NUMBER"},{name:"Screwdriver",constant:"SCREWDRIVER",env:"SCREWDRIVER",pr:{env:"SD_PULL_REQUEST",ne:"false"}},{name:"Semaphore",constant:"SEMAPHORE",env:"SEMAPHORE",pr:"PULL_REQUEST_NUMBER"},{name:"Shippable",constant:"SHIPPABLE",env:"SHIPPABLE",pr:{IS_PULL_REQUEST:"true"}},{name:"Solano CI",constant:"SOLANO",env:"TDDIUM",pr:"TDDIUM_PR_ID"},{name:"Sourcehut",constant:"SOURCEHUT",env:{CI_NAME:"sourcehut"}},{name:"Strider CD",constant:"STRIDER",env:"STRIDER"},{name:"TaskCluster",constant:"TASKCLUSTER",env:["TASK_ID","RUN_ID"]},{name:"TeamCity",constant:"TEAMCITY",env:"TEAMCITY_VERSION"},{name:"Travis CI",constant:"TRAVIS",env:"TRAVIS",pr:{env:"TRAVIS_PULL_REQUEST",ne:"false"}},{name:"Vercel",constant:"VERCEL",env:{any:["NOW_BUILDER","VERCEL"]}},{name:"Visual Studio App Center",constant:"APPCENTER",env:"APPCENTER_BUILD_ID"},{name:"Woodpecker",constant:"WOODPECKER",env:{CI:"woodpecker"},pr:{CI_BUILD_EVENT:"pull_request"}},{name:"Xcode Cloud",constant:"XCODE_CLOUD",env:"CI_XCODE_PROJECT",pr:"CI_PULL_REQUEST_NUMBER"},{name:"Xcode Server",constant:"XCODE_SERVER",env:"XCS"}]});var z=h(C=>{"use strict";var q=X(),E=process.env;Object.defineProperty(C,"_vendors",{value:q.map(function(n){return n.constant})});C.name=null;C.isPR=null;q.forEach(function(n){let t=(Array.isArray(n.env)?n.env:[n.env]).every(function(r){return J(r)});if(C[n.constant]=t,!!t)switch(C.name=n.name,typeof n.pr){case"string":C.isPR=!!E[n.pr];break;case"object":"env"in n.pr?C.isPR=n.pr.env in E&&E[n.pr.env]!==n.pr.ne:"any"in n.pr?C.isPR=n.pr.any.some(function(r){return!!E[r]}):C.isPR=J(n.pr);break;default:C.isPR=null}});C.isCI=!!(E.CI!=="false"&&(E.BUILD_ID||E.BUILD_NUMBER||E.CI||E.CI_APP_ID||E.CI_BUILD_ID||E.CI_BUILD_NUMBER||E.CI_NAME||E.CONTINUOUS_INTEGRATION||E.RUN_ID||C.name));function J(n){return typeof n=="string"?!!E[n]:"env"in n?E[n.env]&&E[n.env].includes(n.includes):"any"in n?n.any.some(function(e){return!!E[e]}):Object.keys(n).every(function(e){return E[e]===n[e]})}});var mn={};module.exports=un(mn);var k=P(j());function M(n){return n!==null&&typeof n=="object"}function H(n,e,t=".",r){if(!M(e))return H(n,{},t,r);let i=Object.assign({},e);for(let c in n){if(c==="__proto__"||c==="constructor")continue;let s=n[c];s!=null&&(r&&r(i,c,s,t)||(Array.isArray(s)&&Array.isArray(i[c])?i[c]=[...s,...i[c]]:M(s)&&M(i[c])?i[c]=H(s,i[c],(t?`${t}.`:"")+c.toString(),r):i[c]=s))}return i}function F(n){return(...e)=>e.reduce((t,r)=>H(t,r,"",n),{})}var G=F(),An=F((n,e,t)=>{if(typeof n[e]<"u"&&typeof t=="function")return n[e]=t(n[e]),!0}),Ln=F((n,e,t)=>{if(Array.isArray(n[e])&&typeof t=="function")return n[e]=t(n[e]),!0});var nn=P(require("node:child_process")),N=P(require("node:fs")),b=P(require("path")),en=P(z()),L=(0,k.default)(process.argv.slice(2),{"--":!0}),tn=L.config?[L.config]:[process.env.BSM_CONFIG,"./package.scripts.js","./package.scripts.json"],{config:$,file:_n}=tn.reduce((n,e)=>{if(n||!e)return n;let t=rn(e);if(t)return{config:t,file:e}},void 0)??{};process.env.BSM_CONFIG=_n;var Z={scripts:{},config:{allowFunction:!1}};function rn(n){if(n)try{let e=Array.isArray(n)?n[0]:n;e=require.resolve(e,{paths:[process.cwd()]});let t=require(e);if(typeof t=="function"&&(t=t(...Array.isArray(n)?n.slice(1):[])),Object.hasOwn(t,"extends")&&t.extends){let r=[];for(let i of t.extends){let c=rn(i);Array.isArray(i)&&(i=i[0]),c?r.push(c):(console.error(`\x1B[31mCannot find config '${i}' to extend\x1B[0m`),process.exit(1))}return G(t,...r,Z)}else return G(t,Z)}catch(e){if((e==null?void 0:e.code)==="MODULE_NOT_FOUND")return;console.error(e),Array.isArray(n)&&(n=n[0]),console.error(`\x1B[31mError loading config '${n}'\x1B[0m`),process.exit(1)}}async function In(){$||(console.error(`\x1B[31mCannot find config ${tn.filter(n=>n!==void 0).map(n=>`'${n}'`).join(" or ")}\x1B[0m`),process.exit(1)),Sn(process.env,await pn());for(let n of L._){if(n.startsWith("~")&&process.env.BSM_PATH){let e=process.env.BSM_PATH.split("."),t=x($.scripts,e);if(t){await v(t,n.split(".").splice(1),e);continue}}await v($.scripts,n.split("."))}}function Sn(n,e){if(e)if(process.platform==="win32"){if(!process.env.Path||process.env.Path.includes(e))return;n.Path=`${process.env.Path};${e}`}else{if(!process.env.PATH||process.env.PATH.includes(e))return;n.PATH=`${process.env.PATH}:${e}`}}async function pn(){let n=process.cwd();for(;await N.promises.access(b.default.join(n,"node_modules/.bin"),N.constants.X_OK).then(()=>!1,()=>!0);){let e=b.default.join(n,"../");if(e===n)return null;n=e}return b.default.join(n,"node_modules/.bin")}function x(n,e){if(e.length===0)return n;let t=e[0];if(typeof n=="object"&&Object.hasOwn(n,t))if(Array.isArray(n)){let r=parseInt(t);return x(n[r],e.slice(1))}else return x(n[t],e.slice(1))}async function v(n,e,t=[],r=!0,i=!1){try{if(typeof n=="function")try{let s=await Rn(n,e,t);if(!s&&e.length===0)return;await v(s??{},e,t,r);return}catch(s){throw console.error(s),console.error(`\x1B[31mError executing function '${t.join(".")}'\x1B[0m`),{code:1,script:t.join(".")}}await U(n,["_pre"],t,!1,!0);let c=e.slice(1);if(e.length===0)await Tn(n,t,r,i);else if(e[0]==="*")await Cn(n,c,t);else if(!await U(n,e,t,!0,!1,!1))return console.error(`\x1B[31mScript '${[...t,...e].join(".")}' not found\x1B[0m`),process.exit(127);await U(n,["_post"],t,!1,!0)}catch(c){if(process.env.BSM_ERROR=c.code.toString(),await U(n,["_onError"],t,!1,!0),!await U(n,["_catch"],t,!1))throw c}finally{await U(n,["_finally"],t,!1,!0)}}async function Cn(n,e,t){if(typeof n=="string")await v(n,e,t);else if(typeof n=="function")process.exit(100);else if(Array.isArray(n))for(let r=0;r<n.length;r++)await v(n[r],e,[...t,r.toString()],!0,!0);else for(let r in n)r.startsWith("_")||Object.hasOwn(n,r)&&await v(n[r],e,[...t,r],!0,!0)}async function Rn(n,e,t){return console.log(`> \x1B[93mExecuting JavaScript function\x1B[0m \x1B[90m(${[...t].join(".")})\x1B[0m`),await n.call(null,L["--"])}async function U(n,e,t,r=!0,i=!1,c=!0){if(i&&process.env.BSM_SCRIPT===[...t,...e].join("."))return!1;let s=e[0];if(typeof n!="object"||!Object.hasOwn(n,s))return!1;if(Array.isArray(n)){let A=parseInt(s);await v(n[A],e.slice(1),[...t,s],r,c)}else await v(n[s],e.slice(1),[...t,s],r,c);return!0}async function Tn(n,e,t,r){switch(typeof n){case"string":await dn(n,e,t);return;case"object":if(Array.isArray(n))for(let i=0;i<n.length;i++)await v(n[i],[],[...e,i.toString()]);else if(!(en.isCI&&await U(n,["_ci"],e))){if(!await U(n,[`_${process.platform}`],e)){if(!await U(n,["_default"],e)){if(!r)return console.error(`\x1B[31mScript '${[...e].join(".")}' is not executable\x1B[0m`),process.exit(127)}}}return}}async function dn(n,e,t){var r;if(t&&((r=L["--"])!=null&&r.length)&&(n+=" "+L["--"].join(" ")),console.log(`> ${n} \x1B[90m(${e.join(".")})\x1B[0m`),n!=="")return await new Promise((i,c)=>{nn.default.spawn(n,[],{stdio:"inherit",shell:!0,env:{...process.env,BSM_PATH:e.slice(0,-1).join("."),BSM_SCRIPT:e.join(".")}}).on("close",A=>{A===0?i():c({code:A,script:e.join(".")})})})}In().catch(n=>{console.error(`\x1B[31mScript failed with code ${n.code}\x1B[0m \x1B[90m(${n.script})\x1B[0m`),process.exit(n.code)});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@under_koen/bsm",
3
- "version": "0.0.4",
3
+ "version": "0.0.5",
4
4
  "description": "BSM (Basic Script Manager) is a useful tool that enables you to create clear and concise scripts without cluttering your `package.json` file.",
5
5
  "license": "MIT",
6
6
  "author": "Koen van Staveren <koen@underkoen.nl>",
@@ -31,7 +31,7 @@
31
31
  "@types/node": "^20.3.1",
32
32
  "@typescript-eslint/eslint-plugin": "^5.60.0",
33
33
  "@typescript-eslint/parser": "^5.60.0",
34
- "@under_koen/bsm": "^0.0.3",
34
+ "@under_koen/bsm": "^0.0.4",
35
35
  "ci-info": "^3.8.0",
36
36
  "defu": "^6.1.2",
37
37
  "esbuild": "^0.18.6",