UNPKG

buildstamp

Version:
4 lines (3 loc) 1.82 kB
import*as I from"node:child_process";import*as g from"node:fs/promises";import*as l from"node:path";import*as m from"node:process";var _=({cwd:t=m.cwd(),output:s="buildstamp.json",ci:i=!0,git:o=!0,date:e=!0,safe:a=!1,extra:u={}}={})=>({ci:i,cwd:t,output:s,git:o,date:e,extra:u,safe:a}),f=async t=>{let{ci:s,git:i,date:o,cwd:e,output:a,extra:u,safe:c}=_(t),p={...u},n=c?O:r=>r;if(o&&(p.date=new Date().toISOString()),i&&Object.assign(p,await n(R)(e,m.env)),s&&Object.assign(p,n(U)(m.env)),a){let r=n(l.resolve)(e,a);await n(g.mkdir)(n(l.dirname)(r),{recursive:!0}),await n(g.writeFile)(r,JSON.stringify(p,null,2))}return p},B=async(t,s)=>s.CI_COMMIT_BRANCH||s.GITHUB_REF_NAME||(await d("git",["rev-parse","--abbrev-ref","HEAD"],t)).stdout,R=async(t,s)=>{let{stdout:i}=await d("git",["rev-parse","HEAD"],t),o=await w(t),e=await B(t,s),a=(o.match(/([^./:]+\/[^./]+)(\.git)?$/)||[])[1];return{git_commit_branch:e,git_commit_id:i,git_repo_url:o,git_repo_name:a}},w=async t=>{let s=(await d("git",["remote","show"],t)).stdout.split(` `)[0],{stdout:i}=await d("git",["config","--get",`remote.${s}.url`],t);return i},U=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}`}),d=(t,s,i)=>new Promise((o,e)=>{let a=0,u=Date.now(),c=[],p=[],n=I.spawn(t,s,{cwd:i});n.stdout.on("data",r=>p.push(r.toString())),n.stderr.on("data",r=>c.push(r.toString())),n.on("error",r=>c.push(r.toString())).on("exit",r=>{a=r}).on("close",()=>{(a?e:o)({stderr:c.join("").trim(),stdout:p.join("").trim(),status:a,signalCode:n.signalCode,duration:Date.now()-u})})}),O=(t,s={})=>(...i)=>{try{let o=t(...i);return o?.then(e=>e,()=>s)||o}catch{return s}};export{f as buildstamp}; //# sourceMappingURL=index.mjs.map