@under_koen/bsm 0.0.6 → 1.0.1

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 +14 -0
  2. package/dist/index.js +3 -3
  3. package/package.json +15 -3
package/README.md CHANGED
@@ -492,6 +492,20 @@ bsm test
492
492
 
493
493
  The above command will execute `echo Hello World!`.
494
494
 
495
+ ## Trouble shooting
496
+
497
+ ### `Script '/home/runner' not found`
498
+
499
+ When using a unix based OS, you might get the following error:
500
+
501
+ ```bash
502
+ Script '{home}' not found
503
+ ```
504
+
505
+ This is caused by the `~` prefix being expanded by the shell.
506
+ You can fix this by using `bsm \~` instead of `bsm ~`.
507
+ In version `1.0.1` and above we try to detect this and fix it automatically.
508
+
495
509
  ## Future plans
496
510
 
497
511
  - [ ] Have support for workspaces / lerna
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
1
  #! /usr/bin/env node
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)});
2
+ "use strict";var on=Object.create;var j=Object.defineProperty;var sn=Object.getOwnPropertyDescriptor;var cn=Object.getOwnPropertyNames;var fn=Object.getPrototypeOf,un=Object.prototype.hasOwnProperty;var x=(n,e)=>()=>(e||n((e={exports:{}}).exports,e),e.exports);var an=(n,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of cn(e))!un.call(n,i)&&i!==t&&j(n,i,{get:()=>e[i],enumerable:!(r=sn(e,i))||r.enumerable});return n};var b=(n,e,t)=>(t=n!=null?on(fn(n)):{},an(e||!n||!n.__esModule?j(t,"default",{value:n,enumerable:!0}):t,n));var Y=x((Tn,K)=>{"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 Q(n){return typeof n=="number"||/^0x[0-9a-f]+$/i.test(n)?!0:/^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(n)}function V(n,e){return e==="constructor"&&typeof n[e]=="function"||e==="__proto__"}K.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(c){t.bools[c]=!0});var r={};function i(c){return r[c].some(function(m){return t.bools[m]})}Object.keys(e.alias||{}).forEach(function(c){r[c]=[].concat(e.alias[c]),r[c].forEach(function(m){r[m]=[c].concat(r[c].filter(function(v){return m!==v}))})}),[].concat(e.string).filter(Boolean).forEach(function(c){t.strings[c]=!0,r[c]&&[].concat(r[c]).forEach(function(m){t.strings[m]=!0})});var s=e.default||{},o={_:[]};function f(c,m){return t.allBools&&/^--[^=]+$/.test(m)||t.strings[c]||t.bools[c]||r[c]}function p(c,m,v){for(var a=c,O=0;O<m.length-1;O++){var R=m[O];if(V(a,R))return;a[R]===void 0&&(a[R]={}),(a[R]===Object.prototype||a[R]===Number.prototype||a[R]===String.prototype)&&(a[R]={}),a[R]===Array.prototype&&(a[R]=[]),a=a[R]}var A=m[m.length-1];V(a,A)||((a===Object.prototype||a===Number.prototype||a===String.prototype)&&(a={}),a===Array.prototype&&(a=[]),a[A]===void 0||t.bools[A]||typeof a[A]=="boolean"?a[A]=v:Array.isArray(a[A])?a[A].push(v):a[A]=[a[A],v])}function E(c,m,v){if(!(v&&t.unknownFn&&!f(c,v)&&t.unknownFn(v)===!1)){var a=!t.strings[c]&&Q(m)?Number(m):m;p(o,c.split("."),a),(r[c]||[]).forEach(function(O){p(o,O.split("."),a)})}}Object.keys(t.bools).forEach(function(c){E(c,s[c]===void 0?!1:s[c])});var w=[];n.indexOf("--")!==-1&&(w=n.slice(n.indexOf("--")+1),n=n.slice(0,n.indexOf("--")));for(var I=0;I<n.length;I++){var u=n[I],l,C;if(/^--.+=/.test(u)){var G=u.match(/^--([^=]+)=([\s\S]*)$/);l=G[1];var y=G[2];t.bools[l]&&(y=y!=="false"),E(l,y,u)}else if(/^--no-.+/.test(u))l=u.match(/^--no-(.+)/)[1],E(l,!1,u);else if(/^--.+/.test(u))l=u.match(/^--(.+)/)[1],C=n[I+1],C!==void 0&&!/^(-|--)[^-]/.test(C)&&!t.bools[l]&&!t.allBools&&(!r[l]||!i(l))?(E(l,C,u),I+=1):/^(true|false)$/.test(C)?(E(l,C==="true",u),I+=1):E(l,t.strings[l]?"":!0,u);else if(/^-[^-]+/.test(u)){for(var T=u.slice(1,-1).split(""),D=!1,S=0;S<T.length;S++){if(C=u.slice(S+2),C==="-"){E(T[S],C,u);continue}if(/[A-Za-z]/.test(T[S])&&C[0]==="="){E(T[S],C.slice(1),u),D=!0;break}if(/[A-Za-z]/.test(T[S])&&/-?\d+(\.\d*)?(e-?\d+)?$/.test(C)){E(T[S],C,u),D=!0;break}if(T[S+1]&&T[S+1].match(/\W/)){E(T[S],u.slice(S+2),u),D=!0;break}else E(T[S],t.strings[T[S]]?"":!0,u)}l=u.slice(-1)[0],!D&&l!=="-"&&(n[I+1]&&!/^(-|--)[^-]/.test(n[I+1])&&!t.bools[l]&&(!r[l]||!i(l))?(E(l,n[I+1],u),I+=1):n[I+1]&&/^(true|false)$/.test(n[I+1])?(E(l,n[I+1]==="true",u),I+=1):E(l,t.strings[l]?"":!0,u))}else if((!t.unknownFn||t.unknownFn(u)!==!1)&&o._.push(t.strings._||!Q(u)?u:Number(u)),e.stopEarly){o._.push.apply(o._,n.slice(I+1));break}}return Object.keys(s).forEach(function(c){ln(o,c.split("."))||(p(o,c.split("."),s[c]),(r[c]||[]).forEach(function(m){p(o,m.split("."),s[c])}))}),e["--"]?o["--"]=w.slice():w.forEach(function(c){o._.push(c)}),o}});var z=x((Ln,pn)=>{pn.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 nn=x(_=>{"use strict";var k=z(),d=process.env;Object.defineProperty(_,"_vendors",{value:k.map(function(n){return n.constant})});_.name=null;_.isPR=null;k.forEach(function(n){let t=(Array.isArray(n.env)?n.env:[n.env]).every(function(r){return Z(r)});if(_[n.constant]=t,!!t)switch(_.name=n.name,typeof n.pr){case"string":_.isPR=!!d[n.pr];break;case"object":"env"in n.pr?_.isPR=n.pr.env in d&&d[n.pr.env]!==n.pr.ne:"any"in n.pr?_.isPR=n.pr.any.some(function(r){return!!d[r]}):_.isPR=Z(n.pr);break;default:_.isPR=null}});_.isCI=!!(d.CI!=="false"&&(d.BUILD_ID||d.BUILD_NUMBER||d.CI||d.CI_APP_ID||d.CI_BUILD_ID||d.CI_BUILD_NUMBER||d.CI_NAME||d.CONTINUOUS_INTEGRATION||d.RUN_ID||_.name));function Z(n){return typeof n=="string"?!!d[n]:"env"in n?d[n.env]&&d[n.env].includes(n.includes):"any"in n?n.any.some(function(e){return!!d[e]}):Object.keys(n).every(function(e){return d[e]===n[e]})}});var rn=b(Y()),h=b(require("node:fs")),B=b(require("path"));function N(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`),W(n.scripts);else for(let i of r){console.log(`
4
+ \x1B[1mAvailable commands: \x1B[90m${i}\x1B[0m`);let s=i.split("."),o=[[n.scripts,[],s]];for(;o.length>0;){let f=o.shift();if(f)if(f[2].length===0)W(f[0],f[1]);else if(f[2][0]==="*"){if(typeof f[0]=="object")if(Array.isArray(f[0]))for(let p=0;p<f[0].length;p++)o.push([f[0][p],[...f[1],p.toString()],[]]);else for(let p in f[0])Object.hasOwn(f[0],p)&&o.push([f[0][p],[...f[1],p],f[2].slice(1)])}else{let p=f[2][0];if(typeof f[0]=="object")if(Array.isArray(f[0])){let E=parseInt(p);o.push([f[0][E],[...f[1],E.toString()],f[2].slice(1)])}else o.push([f[0][p],[...f[1],p],f[2].slice(1)])}}}process.exit(0)}function W(n,e=[]){if(Array.isArray(n))n.forEach((t,r)=>{P(t,[...e,r.toString()])});else if(typeof n=="object"){e.length>0&&P(n,[...e]);for(let t in n)Object.hasOwn(n,t)&&P(n[t],[...e,t])}else P(n,e)}function P(n,e){if(n===void 0){console.error(`\x1B[31mScript '${e.join(".")}' not found\x1B[0m`);return}if(e[e.length-1]==="$description")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`:Object.hasOwn(n,"$description")?r=`\x1B[90m${n.$description}\x1B[0m`:r=`\x1B[90m{${Object.keys(n).join(", ")}}\x1B[0m`,console.log(`${t}${r}`)}function F(n){return n!==null&&typeof n=="object"}function M(n,e,t=".",r){if(!F(e))return M(n,{},t,r);let i=Object.assign({},e);for(let s in n){if(s==="__proto__"||s==="constructor")continue;let o=n[s];o!=null&&(r&&r(i,s,o,t)||(Array.isArray(o)&&Array.isArray(i[s])?i[s]=[...o,...i[s]]:F(o)&&F(i[s])?i[s]=M(o,i[s],(t?`${t}.`:"")+s.toString(),r):i[s]=o))}return i}function H(n){return(...e)=>e.reduce((t,r)=>M(t,r,"",n),{})}var X=H(),vn=H((n,e,t)=>{if(typeof n[e]<"u"&&typeof t=="function")return n[e]=t(n[e]),!0}),An=H((n,e,t)=>{if(Array.isArray(n[e])&&typeof t=="function")return n[e]=t(n[e]),!0});var En={scripts:{},config:{allowFunction:!1}};function mn(n){return Array.isArray(n)?n[0]:n}function dn(n){return!Object.hasOwn(n,"extends")||!n.extends?[]:n.extends.map(e=>J(e,!1))}function J(n,e=!0){if(!n)return;let t=mn(n);try{t=require.resolve(t,{paths:[process.cwd()]});let r=require(t);typeof r=="function"&&(r=r(...Array.isArray(n)?n.slice(1):[]));let i=dn(r);return X(r,...i,En)}catch(r){if((r==null?void 0:r.code)==="MODULE_NOT_FOUND"){if(e)return;console.error(`\x1B[31mCannot find config '${t}' to extend\x1B[0m`),process.exit(1)}console.error(r),Array.isArray(n)&&(n=n[0]),console.error(`\x1B[31mError loading config '${n}'\x1B[0m`),process.exit(1)}}function q(n){let e=[n.config,process.env.BSM_CONFIG,"./package.scripts.js","./package.scripts.json"].filter(t=>t!==void 0);for(let t of e){let r=J(t);if(r)return process.env.BSM_CONFIG=t,r}console.error(`\x1B[31mCannot find config ${e.filter(t=>t!==void 0).map(t=>`'${t}'`).join(" or ")}\x1B[0m`),process.exit(1)}var en=b(require("node:child_process")),tn=b(nn()),L=class n{static async runScript(e,t,r,i){typeof e=="function"?await n.executeFunction(e,t,r,i):typeof e=="string"?await n.executeString(e,t,r,i):typeof e=="object"?Array.isArray(e)?await n.executeArray(e,t,r,i):await n.executeObject(e,t,r,i):n.notFound(r,i)}static notFound(e,t){t.ignoreNotFound||(console.error(`\x1B[31mScript '${e.join(".")}' not found\x1B[0m`),process.exit(127))}static async executeFunction(e,t,r,i){var o;console.log(`> \x1B[93mExecuting JavaScript function\x1B[0m \x1B[90m(${[...r].join(".")})\x1B[0m`);let s;try{s=await e.call(null,process.argv)}catch(f){throw f instanceof Error&&(f.stack=(o=f.stack)==null?void 0:o.split(" at executeFunction")[0]),{function:f,script:r.join(".")}}if(s==null){t.length>0&&n.notFound([...r,...t],i);return}await n.runScript(s,t,r,{...i,excludeArgs:!0})}static async executeString(e,t,r,i){var s;if(t.length>0)return n.notFound([...r,...t],i);if(!i.excludeArgs&&((s=process.argv)!=null&&s.length)&&(e+=" "+process.argv.join(" ")),console.log(`> ${e} \x1B[90m(${r.join(".")})\x1B[0m`),e!=="")return e=e.replace(/bsm ~/g,"bsm \\~"),await new Promise((o,f)=>{en.default.spawn(e,[],{stdio:"inherit",shell:!0,env:{...process.env,BSM_PATH:r.slice(0,-1).join("."),BSM_SCRIPT:r.join(".")}}).on("close",E=>{E===0?o():f({code:E,script:r.join(".")})})})}static async executeArray(e,t,r,i){if(t.length===0||t[0]==="*"){for(let s=0;s<e.length;s++)await n.runScript(e[s],t.slice(1),[...r,s.toString()],{...i,ignoreNotFound:t[0]==="*"?!0:i.ignoreNotFound});return}else{let s=t[0],o=e[parseInt(s)];if(o===void 0)return n.notFound([...r,s],i);await n.runScript(o,t.slice(1),[...r,s],i)}}static async executeObject(e,t,r,i){var s;try{if(await n.executeHook(e,"_pre",r,i),t.length===0)await n.runObject(e,r,i);else if(t[0]==="*")for(let o in e)o.startsWith("_")||o.startsWith("$")||Object.hasOwn(e,o)&&await n.runScript(e[o],t.slice(1),[...r,o],{...i,ignoreNotFound:!0});else{let o=t[0];if(Object.hasOwn(e,o))await n.runScript(e[o],t.slice(1),[...r,o],i);else return n.notFound([...r,o],i)}await n.executeHook(e,"_post",r,i)}catch(o){if(process.env.BSM_ERROR=((s=o.code)==null?void 0:s.toString())??"1",await n.executeHook(e,"_onError",r,i),!await n.executeHook(e,"_catch",r,i))throw o}finally{await n.executeHook(e,"_finally",r,i)}}static async executeHook(e,t,r,i){return Object.hasOwn(e,t)?(await n.runScript(e[t],[],[...r,t],{...i,excludeArgs:!0}),!0):!1}static get _isCI(){return tn.isCI}static async runObject(e,t,r){let i=`_${process.platform}`;n._isCI&&Object.hasOwn(e,"_ci")?await n.runScript(e._ci,[],[...t,"_ci"],r):Object.hasOwn(e,i)?await n.runScript(e[i],[],[...t,i],r):Object.hasOwn(e,"_default")?await n.runScript(e._default,[],[...t,"_default"],r):n.notFound(t,r)}};var U=(0,rn.default)(process.argv.slice(2),{"--":!0});process.argv=U["--"]??[];var g=q(U);async function In(){N(g,U,U.h),N(g,U,U.help),N(g,U,U._.length===0),Sn(process.env,await Cn());for(let n of U._){if(n=n.replace(/^\\~/g,"~"),n.startsWith("~")&&process.env.BSM_PATH){let e=process.env.BSM_PATH.split("."),t=$(g.scripts,e);if(t){await L.runScript(t,n.split(".").splice(1),e,{});continue}}await L.runScript(g.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 h.promises.access(B.default.join(n,"node_modules/.bin"),h.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))}In().catch(n=>{n.function&&(console.error(n.function),console.error(`\x1B[31mError executing function '${n.script}'\x1B[0m`),process.exit(1)),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.6",
3
+ "version": "1.0.1",
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>",
@@ -20,17 +20,25 @@
20
20
  "dist"
21
21
  ],
22
22
  "scripts": {
23
- "build": "bsm build",
23
+ "bsm": "bsm",
24
+ "build": "bsm build.prod",
24
25
  "build:dev": "bsm build.dev",
25
26
  "build:watch": "bsm build.watch",
26
27
  "prettier": "bsm prettier",
27
28
  "prepublishOnly": "bsm build.prod"
28
29
  },
29
30
  "devDependencies": {
31
+ "@semantic-release/changelog": "^6.0.3",
32
+ "@semantic-release/exec": "^6.0.3",
33
+ "@semantic-release/git": "^10.0.1",
34
+ "@semantic-release/github": "^8.0.7",
30
35
  "@types/minimist": "^1.2.2",
31
36
  "@types/node": "^20.5.9",
37
+ "@types/sinon": "^10.0.16",
32
38
  "@typescript-eslint/eslint-plugin": "^6.6.0",
33
39
  "@typescript-eslint/parser": "^6.6.0",
40
+ "@under_koen/bsm": "^1.0.0",
41
+ "c8": "^8.0.1",
34
42
  "ci-info": "^3.8.0",
35
43
  "defu": "^6.1.2",
36
44
  "esbuild": "^0.19.2",
@@ -39,7 +47,11 @@
39
47
  "minimist": "^1.2.8",
40
48
  "prettier": "3.0.3",
41
49
  "prettier-package-json": "^2.8.0",
42
- "typescript": "^5.2.2"
50
+ "semantic-release": "^21.0.1",
51
+ "sinon": "^15.2.0",
52
+ "tsm": "^2.3.0",
53
+ "typescript": "^5.2.2",
54
+ "uvu": "^0.5.6"
43
55
  },
44
56
  "keywords": [
45
57
  "script",