buildstamp
Version:
Buildstamp JS/TS API
21 lines (18 loc) • 4.01 kB
JavaScript
;var D=Object.create;var b=Object.defineProperty;var j=Object.getOwnPropertyDescriptor;var S=Object.getOwnPropertyNames,B=Object.getOwnPropertySymbols,N=Object.getPrototypeOf,y=Object.prototype.hasOwnProperty,E=Object.prototype.propertyIsEnumerable;var h=(t,s,r)=>s in t?b(t,s,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[s]=r,O=(t,s)=>{for(var r in s||(s={}))y.call(s,r)&&h(t,r,s[r]);if(B)for(var r of B(s))E.call(s,r)&&h(t,r,s[r]);return t};var G=(t,s,r,e)=>{if(s&&typeof s=="object"||typeof s=="function")for(let o of S(s))!y.call(t,o)&&o!==r&&b(t,o,{get:()=>s[o],enumerable:!(e=j(s,o))||e.enumerable});return t};var l=(t,s,r)=>(r=t!=null?D(N(t)):{},G(s||!t||!t.__esModule?b(r,"default",{value:t,enumerable:!0}):r,t));var m=(t,s,r)=>new Promise((e,o)=>{var a=i=>{try{u(r.next(i))}catch(n){o(n)}},c=i=>{try{u(r.throw(i))}catch(n){o(n)}},u=i=>i.done?e(i.value):Promise.resolve(i.value).then(a,c);u((r=r.apply(t,s)).next())});var T=require("node:module"),C=l(require("minimist"),1);var R=l(require("node:child_process"),1),I=l(require("node:fs/promises"),1),_=l(require("node:path"),1),d=l(require("node:process"),1);var H=({cwd:t=d.cwd(),output:s="buildstamp.json",ci:r=!0,git:e=!0,date:o=!0,safe:a=!1,extra:c={}}={})=>({ci:r,cwd:t,output:s,git:e,date:o,extra:c,safe:a}),w=t=>m(void 0,null,function*(){let{ci:s,git:r,date:e,cwd:o,output:a,extra:c,safe:u}=H(t),i=O({},c),n=u?A:p=>p;if(e&&(i.date=new Date().toISOString()),r&&Object.assign(i,yield n($)(o,d.env)),s&&Object.assign(i,n(z)(d.env)),a){let p=n(_.resolve)(o,a);yield n(I.mkdir)(n(_.dirname)(p),{recursive:!0}),yield n(I.writeFile)(p,JSON.stringify(i,null,2))}return i}),P=(t,s)=>m(void 0,null,function*(){return s.CI_COMMIT_BRANCH||s.GITHUB_REF_NAME||(yield f("git",["rev-parse","--abbrev-ref","HEAD"],t)).stdout}),$=(t,s)=>m(void 0,null,function*(){let{stdout:r}=yield f("git",["rev-parse","HEAD"],t),e=yield v(t),o=yield P(t,s),a=(e.match(/([^./:]+\/[^./]+)(\.git)?$/)||[])[1];return{git_commit_branch:o,git_commit_id:r,git_repo_url:e,git_repo_name:a}}),v=t=>m(void 0,null,function*(){let s=(yield f("git",["remote","show"],t)).stdout.split(`
`)[0],{stdout:r}=yield f("git",["config","--get",`remote.${s}.url`],t);return r}),z=t=>({ci_run_id:t.BUILD_NUMBER||t.CI_JOB_ID||t.GITHUB_RUN_ID,ci_run_url:t.BUILD_URL||t.CI_JOB_URL||t.GITHUB_RUN_ID&&`${t.GITHUB_SERVER_URL}/${t.GITHUB_REPOSITORY}/actions/runs/${t.GITHUB_RUN_ID}`}),f=(t,s,r)=>new Promise((e,o)=>{let a=0,c=Date.now(),u=[],i=[],n=R.spawn(t,s,{cwd:r});n.stdout.on("data",p=>i.push(p.toString())),n.stderr.on("data",p=>u.push(p.toString())),n.on("error",p=>u.push(p.toString())).on("exit",p=>{a=p}).on("close",()=>{(a?o:e)({stderr:u.join("").trim(),stdout:i.join("").trim(),status:a,signalCode:n.signalCode,duration:Date.now()-c})})}),A=(t,s={})=>(...r)=>{try{let e=t(...r);return(e==null?void 0:e.then(o=>o,()=>s))||e}catch(e){return s}};var g=l(require("node:process"),1),U={};var J=t=>t.replace(/-./g,s=>s[1].toUpperCase()),L=(t={})=>Object.fromEntries(Object.entries(t).map(([s,r])=>[J(s),r==="false"?!1:r])),{cwd:M,git:F,date:k,output:q,version:V,help:Y,extra:x,safe:K}=L((0,C.default)(g.argv.slice(2),{alias:{help:["h"],version:["v"],output:["o"]}}));m(void 0,null,function*(){if(Y){console.log(`
Usage:
$ buildstamp [opts]
Options:
--output Specify the output file. Defaults to 'buildstamp.json'
--git Inject git info. True by default
--date Inject date. True by default
--extra JSON to mixin
--safe Suppress any errors. Defaults to false
--help, -h Print help digest
--version, -v Print version
Examples:
$ buildstamp --output=stamp.json
$ buildstamp --extra='{"foo": "bar"}'
`);return}if(V){console.log((U.url?(0,T.createRequire)(U.url):require)("../../package.json").version);return}try{yield w({cwd:M,date:k,git:F,output:q,safe:K,extra:x?JSON.parse(x):{}}),g.exit(0)}catch(t){console.error(t),g.exit(1)}});
//# sourceMappingURL=cli.cjs.map