@under_koen/bsm 0.0.4 → 0.0.6

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.
Files changed (3) hide show
  1. package/README.md +37 -6
  2. package/dist/index.js +3 -1
  3. package/package.json +9 -10
package/README.md CHANGED
@@ -98,6 +98,7 @@ module.exports = {
98
98
  ```
99
99
 
100
100
  In this example the following scripts are available:
101
+
101
102
  - `bsm example.test`
102
103
  - `bsm example.variant`
103
104
  - `bsm example.subgroups.test`
@@ -112,6 +113,7 @@ module.exports = {
112
113
  ```
113
114
 
114
115
  In this example the following scripts are available:
116
+
115
117
  - `bsm example` (will run all scripts in the array)
116
118
  - `bsm example.0`
117
119
  - `bsm example.1`
@@ -138,9 +140,10 @@ module.exports = {
138
140
  Specified scripts replace the default script when an condition is met.
139
141
 
140
142
  The order of precedence is as follows:
141
- - _ci
142
- - _[os]
143
- - _default
143
+
144
+ - \_ci
145
+ - \_[os]
146
+ - \_default
144
147
 
145
148
  #### CI Specified scripts
146
149
 
@@ -307,7 +310,7 @@ module.exports = {
307
310
  bsm example
308
311
  ```
309
312
 
310
- The above command will execute `example._default` and `example._onError`.
313
+ The above command will execute `example._default` and `example._onError`.
311
314
  This will also exit with code `1`.
312
315
 
313
316
  #### Catch hooks
@@ -450,9 +453,9 @@ You can extend scripts by using the `extends` key. You can import scripts from o
450
453
 
451
454
  ```javascript
452
455
  module.exports = {
453
- extends: ['@under_koen/bsm/package.scripts.js', './test.js'],
456
+ extends: ["@under_koen/bsm/package.scripts.js"],
454
457
  scripts: {},
455
- }
458
+ };
456
459
  ```
457
460
 
458
461
  ```bash
@@ -461,6 +464,34 @@ bsm lint
461
464
 
462
465
  The above command will execute `lint` coming from the `package.scripts.js` of `@under_koen/bsm`.
463
466
 
467
+ #### Extending with options (experimental)
468
+
469
+ You can extend scripts with options by using the `extends` key. You can import scripts from other files or packages.
470
+
471
+ ```javascript
472
+ // package.scripts.js
473
+ module.exports = {
474
+ extends: [["./test", "World"]],
475
+ scripts: {},
476
+ };
477
+ ```
478
+
479
+ ```javascript
480
+ // test.js
481
+
482
+ module.exports = (name) => ({
483
+ scripts: {
484
+ test: `echo Hello ${name}!`,
485
+ },
486
+ });
487
+ ```
488
+
489
+ ```bash
490
+ bsm test
491
+ ```
492
+
493
+ The above command will execute `echo Hello World!`.
494
+
464
495
  ## Future plans
465
496
 
466
497
  - [ ] Have support for workspaces / lerna
package/dist/index.js CHANGED
@@ -1,2 +1,4 @@
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 fn=Object.create;var K=Object.defineProperty;var cn=Object.getOwnPropertyDescriptor;var an=Object.getOwnPropertyNames;var un=Object.getPrototypeOf,ln=Object.prototype.hasOwnProperty;var x=(n,e)=>()=>(e||n((e={exports:{}}).exports,e),e.exports);var En=(n,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of an(e))!ln.call(n,i)&&i!==t&&K(n,i,{get:()=>e[i],enumerable:!(r=cn(e,i))||r.enumerable});return n};var O=(n,e,t)=>(t=n!=null?fn(un(n)):{},En(e||!n||!n.__esModule?K(t,"default",{value:n,enumerable:!0}):t,n));var X=x((An,W)=>{"use strict";function _n(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 j(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(f){t.bools[f]=!0});var r={};function i(f){return r[f].some(function(E){return t.bools[E]})}Object.keys(e.alias||{}).forEach(function(f){r[f]=[].concat(e.alias[f]),r[f].forEach(function(E){r[E]=[f].concat(r[f].filter(function(v){return E!==v}))})}),[].concat(e.string).filter(Boolean).forEach(function(f){t.strings[f]=!0,r[f]&&[].concat(r[f]).forEach(function(E){t.strings[E]=!0})});var o=e.default||{},s={_:[]};function c(f,E){return t.allBools&&/^--[^=]+$/.test(E)||t.strings[f]||t.bools[f]||r[f]}function I(f,E,v){for(var u=f,P=0;P<E.length-1;P++){var U=E[P];if(Y(u,U))return;u[U]===void 0&&(u[U]={}),(u[U]===Object.prototype||u[U]===Number.prototype||u[U]===String.prototype)&&(u[U]={}),u[U]===Array.prototype&&(u[U]=[]),u=u[U]}var A=E[E.length-1];Y(u,A)||((u===Object.prototype||u===Number.prototype||u===String.prototype)&&(u={}),u===Array.prototype&&(u=[]),u[A]===void 0||t.bools[A]||typeof u[A]=="boolean"?u[A]=v:Array.isArray(u[A])?u[A].push(v):u[A]=[u[A],v])}function m(f,E,v){if(!(v&&t.unknownFn&&!c(f,v)&&t.unknownFn(v)===!1)){var u=!t.strings[f]&&j(E)?Number(E):E;I(s,f.split("."),u),(r[f]||[]).forEach(function(P){I(s,P.split("."),u)})}}Object.keys(t.bools).forEach(function(f){m(f,o[f]===void 0?!1:o[f])});var w=[];n.indexOf("--")!==-1&&(w=n.slice(n.indexOf("--")+1),n=n.slice(0,n.indexOf("--")));for(var p=0;p<n.length;p++){var a=n[p],l,C;if(/^--.+=/.test(a)){var V=a.match(/^--([^=]+)=([\s\S]*)$/);l=V[1];var g=V[2];t.bools[l]&&(g=g!=="false"),m(l,g,a)}else if(/^--no-.+/.test(a))l=a.match(/^--no-(.+)/)[1],m(l,!1,a);else if(/^--.+/.test(a))l=a.match(/^--(.+)/)[1],C=n[p+1],C!==void 0&&!/^(-|--)[^-]/.test(C)&&!t.bools[l]&&!t.allBools&&(!r[l]||!i(l))?(m(l,C,a),p+=1):/^(true|false)$/.test(C)?(m(l,C==="true",a),p+=1):m(l,t.strings[l]?"":!0,a);else if(/^-[^-]+/.test(a)){for(var d=a.slice(1,-1).split(""),B=!1,S=0;S<d.length;S++){if(C=a.slice(S+2),C==="-"){m(d[S],C,a);continue}if(/[A-Za-z]/.test(d[S])&&C[0]==="="){m(d[S],C.slice(1),a),B=!0;break}if(/[A-Za-z]/.test(d[S])&&/-?\d+(\.\d*)?(e-?\d+)?$/.test(C)){m(d[S],C,a),B=!0;break}if(d[S+1]&&d[S+1].match(/\W/)){m(d[S],a.slice(S+2),a),B=!0;break}else m(d[S],t.strings[d[S]]?"":!0,a)}l=a.slice(-1)[0],!B&&l!=="-"&&(n[p+1]&&!/^(-|--)[^-]/.test(n[p+1])&&!t.bools[l]&&(!r[l]||!i(l))?(m(l,n[p+1],a),p+=1):n[p+1]&&/^(true|false)$/.test(n[p+1])?(m(l,n[p+1]==="true",a),p+=1):m(l,t.strings[l]?"":!0,a))}else if((!t.unknownFn||t.unknownFn(a)!==!1)&&s._.push(t.strings._||!j(a)?a:Number(a)),e.stopEarly){s._.push.apply(s._,n.slice(p+1));break}}return Object.keys(o).forEach(function(f){_n(s,f.split("."))||(I(s,f.split("."),o[f]),(r[f]||[]).forEach(function(E){I(s,E.split("."),o[f])}))}),e["--"]?s["--"]=w.slice():w.forEach(function(f){s._.push(f)}),s}});var J=x((Pn,In)=>{In.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=x(R=>{"use strict";var z=J(),_=process.env;Object.defineProperty(R,"_vendors",{value:z.map(function(n){return n.constant})});R.name=null;R.isPR=null;z.forEach(function(n){let t=(Array.isArray(n.env)?n.env:[n.env]).every(function(r){return q(r)});if(R[n.constant]=t,!!t)switch(R.name=n.name,typeof n.pr){case"string":R.isPR=!!_[n.pr];break;case"object":"env"in n.pr?R.isPR=n.pr.env in _&&_[n.pr.env]!==n.pr.ne:"any"in n.pr?R.isPR=n.pr.any.some(function(r){return!!_[r]}):R.isPR=q(n.pr);break;default:R.isPR=null}});R.isCI=!!(_.CI!=="false"&&(_.BUILD_ID||_.BUILD_NUMBER||_.CI||_.CI_APP_ID||_.CI_BUILD_ID||_.CI_BUILD_NUMBER||_.CI_NAME||_.CONTINUOUS_INTEGRATION||_.RUN_ID||R.name));function q(n){return typeof n=="string"?!!_[n]:"env"in n?_[n.env]&&_[n.env].includes(n.includes):"any"in n?n.any.some(function(e){return!!_[e]}):Object.keys(n).every(function(e){return _[e]===n[e]})}});var en=O(X());function M(n){return n!==null&&typeof n=="object"}function $(n,e,t=".",r){if(!M(e))return $(n,{},t,r);let i=Object.assign({},e);for(let o in n){if(o==="__proto__"||o==="constructor")continue;let s=n[o];s!=null&&(r&&r(i,o,s,t)||(Array.isArray(s)&&Array.isArray(i[o])?i[o]=[...s,...i[o]]:M(s)&&M(i[o])?i[o]=$(s,i[o],(t?`${t}.`:"")+o.toString(),r):i[o]=s))}return i}function H(n){return(...e)=>e.reduce((t,r)=>$(t,r,"",n),{})}var G=H(),bn=H((n,e,t)=>{if(typeof n[e]<"u"&&typeof t=="function")return n[e]=t(n[e]),!0}),Ln=H((n,e,t)=>{if(Array.isArray(n[e])&&typeof t=="function")return n[e]=t(n[e]),!0});var tn=O(require("node:child_process")),N=O(require("node:fs")),y=O(require("path")),rn=O(Z());function h(n,e,t){let r=[];if(typeof t=="boolean"){if(!t)return}else if(typeof t=="string"||typeof t=="number")r.push(`${t}`);else if(Array.isArray(t))r.push(...t);else return;if(r.push(...e._),r.length===0)console.log(`
3
+ \x1B[1mAvailable commands:\x1B[0m`),k(n.scripts);else for(let i of r){console.log(`
4
+ \x1B[1mAvailable commands: \x1B[90m${i}\x1B[0m`);let o=i.split("."),s=[[n.scripts,[],o]];for(;s.length>0;){let c=s.shift();if(c)if(c[2].length===0)k(c[0],c[1]);else if(c[2][0]==="*"){if(typeof c[0]=="object")if(Array.isArray(c[0]))for(let I=0;I<c[0].length;I++)s.push([c[0][I],[...c[1],I.toString()],[]]);else for(let I in c[0])Object.hasOwn(c[0],I)&&s.push([c[0][I],[...c[1],I],c[2].slice(1)])}else{let I=c[2][0];if(typeof c[0]=="object")if(Array.isArray(c[0])){let m=parseInt(I);s.push([c[0][m],[...c[1],m.toString()],c[2].slice(1)])}else s.push([c[0][I],[...c[1],I],c[2].slice(1)])}}}process.exit(0)}function k(n,e=[]){if(Array.isArray(n))n.forEach((t,r)=>{Q(t,[...e,r.toString()])});else if(typeof n=="object")for(let t in n)Object.hasOwn(n,t)&&Q(n[t],[...e,t]);else Q(n,e)}function Q(n,e){if(n===void 0){console.error(`\x1B[31mScript '${e.join(".")}' not found\x1B[0m`);return}let t=`\x1B[92m${e.join(".")}\x1B[90m - \x1B[0m`,r;typeof n=="string"?r=n:typeof n=="function"?r="\x1B[90m<function>\x1B[0m":Array.isArray(n)?r=`\x1B[90m[${n.length}]\x1B[0m`:r=`\x1B[90m{${Object.keys(n).join(", ")}}\x1B[0m`,console.log(`${t}${r}`)}var T=(0,en.default)(process.argv.slice(2),{"--":!0}),on=T.config?[T.config]:[process.env.BSM_CONFIG,"./package.scripts.js","./package.scripts.json"],{config:D,file:mn}=on.reduce((n,e)=>{if(n||!e)return n;let t=sn(e);if(t)return{config:t,file:e}},void 0)??{};process.env.BSM_CONFIG=mn;var nn={scripts:{},config:{allowFunction:!1}};function sn(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 o=sn(i);Array.isArray(i)&&(i=i[0]),o?r.push(o):(console.error(`\x1B[31mCannot find config '${i}' to extend\x1B[0m`),process.exit(1))}return G(t,...r,nn)}else return G(t,nn)}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 pn(){D||(console.error(`\x1B[31mCannot find config ${on.filter(n=>n!==void 0).map(n=>`'${n}'`).join(" or ")}\x1B[0m`),process.exit(1)),h(D,T,T.h),h(D,T,T.help),h(D,T,T._.length===0),Sn(process.env,await Cn());for(let n of T._){if(n.startsWith("~")&&process.env.BSM_PATH){let e=process.env.BSM_PATH.split("."),t=F(D.scripts,e);if(t){await L(t,n.split(".").splice(1),e);continue}}await L(D.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 Cn(){let n=process.cwd();for(;await N.promises.access(y.default.join(n,"node_modules/.bin"),N.constants.X_OK).then(()=>!1,()=>!0);){let e=y.default.join(n,"../");if(e===n)return null;n=e}return y.default.join(n,"node_modules/.bin")}function F(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 F(n[r],e.slice(1))}else return F(n[t],e.slice(1))}async function L(n,e,t=[],r=!0,i=!1){try{if(typeof n=="function")try{let s=await Tn(n,e,t);if(!s&&e.length===0)return;n=s??{},r=!0}catch(s){throw console.error(s),console.error(`\x1B[31mError executing function '${t.join(".")}'\x1B[0m`),{code:1,script:t.join(".")}}await b(n,["_pre"],t,!1,!0);let o=e.slice(1);if(e.length===0)await dn(n,t,r,i);else if(e[0]==="*")await Rn(n,o,t,r,!0);else if(!await b(n,e,t,r,!1,i))return console.error(`\x1B[31mScript '${[...t,...e].join(".")}' not found\x1B[0m`),process.exit(127);await b(n,["_post"],t,!1,!0)}catch(o){if(process.env.BSM_ERROR=o.code.toString(),await b(n,["_onError"],t,!1,!0),!await b(n,["_catch"],t,!1))throw o}finally{await b(n,["_finally"],t,!1,!0)}}async function Rn(n,e,t,r,i){if(typeof n=="string")await L(n,e,t);else if(typeof n=="function")process.exit(100);else if(Array.isArray(n))for(let o=0;o<n.length;o++)await L(n[o],e,[...t,o.toString()],r,i);else for(let o in n)o.startsWith("_")||Object.hasOwn(n,o)&&await L(n[o],e,[...t,o],r,i)}async function Tn(n,e,t){return console.log(`> \x1B[93mExecuting JavaScript function\x1B[0m \x1B[90m(${[...t].join(".")})\x1B[0m`),await n.call(null,T["--"])}async function b(n,e,t,r=!0,i=!1,o=!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 c=parseInt(s);await L(n[c],e.slice(1),[...t,s],r,o)}else await L(n[s],e.slice(1),[...t,s],r,o);return!0}async function dn(n,e,t,r){switch(typeof n){case"string":await Un(n,e,t);return;case"object":if(Array.isArray(n))for(let i=0;i<n.length;i++)await L(n[i],[],[...e,i.toString()],t,r);else if(!(rn.isCI&&await b(n,["_ci"],e,t,!1,r))){if(!await b(n,[`_${process.platform}`],e,t,!1,r)){if(!await b(n,["_default"],e,t,!1,r)){if(!r)return console.error(`\x1B[31mScript '${[...e].join(".")}' is not executable\x1B[0m`),process.exit(127)}}}return}}async function Un(n,e,t){var r;if(t&&((r=T["--"])!=null&&r.length)&&(n+=" "+T["--"].join(" ")),console.log(`> ${n} \x1B[90m(${e.join(".")})\x1B[0m`),n!=="")return await new Promise((i,o)=>{tn.default.spawn(n,[],{stdio:"inherit",shell:!0,env:{...process.env,BSM_PATH:e.slice(0,-1).join("."),BSM_SCRIPT:e.join(".")}}).on("close",c=>{c===0?i():o({code:c,script:e.join(".")})})})}pn().catch(n=>{n.code===void 0&&(console.error(n),console.error("\x1B[31mScript failed\x1B[0m"),process.exit(1)),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.6",
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>",
@@ -28,19 +28,18 @@
28
28
  },
29
29
  "devDependencies": {
30
30
  "@types/minimist": "^1.2.2",
31
- "@types/node": "^20.3.1",
32
- "@typescript-eslint/eslint-plugin": "^5.60.0",
33
- "@typescript-eslint/parser": "^5.60.0",
34
- "@under_koen/bsm": "^0.0.3",
31
+ "@types/node": "^20.5.9",
32
+ "@typescript-eslint/eslint-plugin": "^6.6.0",
33
+ "@typescript-eslint/parser": "^6.6.0",
35
34
  "ci-info": "^3.8.0",
36
35
  "defu": "^6.1.2",
37
- "esbuild": "^0.18.6",
38
- "eslint": "^8.43.0",
39
- "eslint-config-prettier": "^8.8.0",
36
+ "esbuild": "^0.19.2",
37
+ "eslint": "^8.48.0",
38
+ "eslint-config-prettier": "^9.0.0",
40
39
  "minimist": "^1.2.8",
41
- "prettier": "2.8.8",
40
+ "prettier": "3.0.3",
42
41
  "prettier-package-json": "^2.8.0",
43
- "typescript": "^5.1.3"
42
+ "typescript": "^5.2.2"
44
43
  },
45
44
  "keywords": [
46
45
  "script",