UNPKG

@alessiofrittoli/node-scripts

Version:
4 lines 3.48 kB
import {execSync,execFileSync}from'child_process';import T from'fs';import O from'path';var k=()=>process.env.INIT_CWD||process.cwd(),P=()=>new Map(process.argv.map(e=>({value:e,isValue:!e.startsWith("-")})).map((e,t,s)=>{switch(t){case 0:return ["--executable",e.value];case 1:return ["--scriptPath",e.value];default:{let a=s[t+1];if(!e.isValue)return a!=null&&a.isValue?[e.value,a.value]:[e.value,"true"]}}}).filter(Boolean));var R=e=>JSON.parse(T.readFileSync(O.resolve(e,"package.json")).toString());var N=e=>{let t=e.match(/-(\w+)\.\d+/);return t?t[1]:null};var J=()=>{let t=execSync("git remote -v",{encoding:"buffer"}).toString().split(` `),s=new Map;return t.map(a=>{var m;let[n,r]=a.split(" ");if(!n||!r)return null;let o=s.get(n)||new Map,c=o.get("urls")||new Map,p=r.split(" "),l=((m=p.at(1))==null?void 0:m.replace(/\(|\)/g,""))||"fetch",d=c.has(l)?l==="fetch"?"push":"fetch":l,g=p.at(0);if(!g)return null;c.set(d,g),o.set("name",n),o.set("urls",c),s.has(n)||s.set(n,o);}),s},I=()=>{var e,t,s;return ((s=(t=(e=execSync("git branch -rl '*/HEAD'"))==null?void 0:e.toString().split(` `).filter(Boolean).at(0))==null?void 0:t.split(" -> ").at(1))==null?void 0:s.split("/"))||[null,null]},$=()=>{var t;let[e]=I();return e?J().get(e):(t=J().entries().next().value)==null?void 0:t[1]},V=()=>execSync("git stash list").toString().split(` `).map(E).filter(Boolean),E=e=>{var r;if(!e)return null;let t=e.split(": "),s=Number(t.at(0).split("@{").pop().split("}").at(0)||"invalid");if(isNaN(s))return null;let a=(t.at(2)?t.at(1).split(" ").pop():null)||"main",n=t.at(2)||((r=t.at(1))==null?void 0:r.split(" ").pop())||null;return {index:s,branch:a,name:n}};var w=e=>V().find(t=>"name"in e?t.name===e.name:t.index===e.index),B=e=>execFileSync("git",["stash","pop","--index",e.toString()],{stdio:"inherit"});var A=e=>JSON.parse(execSync(`npm list --json${" -g"}`).toString()),G=(e,t)=>e in(A().dependencies||{});var ee=e=>{var g,m,x,y,S,v,b;let t=null;try{t=R(k());}catch(i){}let s=P(),a=(g=e==null?void 0:e.verbose)!=null?g:s.has("--verbose"),n=(m=e==null?void 0:e.build)!=null?m:s.get("--build")||"build",r=(x=e==null?void 0:e.version)!=null?x:s.get("--version")||(t==null?void 0:t.version),o=(S=e==null?void 0:e.origin)!=null?S:s.get("--origin")||s.get("--o")||((y=$())==null?void 0:y.get("name"))||"origin",c=(v=e==null?void 0:e.npm)!=null?v:s.has("--npm"),p=(b=e==null?void 0:e.access)!=null?b:s.get("--access")||"public",l="pre-release",d="npm run";try{d=G("pnpm",!0)?"pnpm":"npm run";}catch(i){let f=i;console.log({package:t==null?void 0:t.name,message:"Couldn't check if `pnpm` is installed. Using `npm` instead.",error:f.message});}if((!r||typeof r!="string")&&(console.error("No `version` found in `package.json`"),process.exit(1)),c)switch(p){case "public":break;case "restricted":break;default:console.error("Invalid `--access` option. `public` or `restricted` accepted."),process.exit(1);}try{let i=N(r);if(execSync(`git stash save -u -m "${l}"`,{stdio:"inherit"}),execSync(`${d} ${n}`,{stdio:"inherit"}),execSync(`git tag v${r}`,{stdio:"inherit"}),execSync(`git push ${o} tag v${r}`,{stdio:"inherit"}),c){let M=[`--access ${p}`,i&&`--tag ${i}`].filter(Boolean).join(" ");execSync(`npm publish ${M}`,{stdio:"inherit"});}let f=w({name:l});f&&B(f.index),a&&console.log({package:t==null?void 0:t.name,message:`Released version ${r}`,origin:o,tag:`v${r}`,npmPublish:c});}catch(i){console.error("Error during release process:",i),process.exit(1);}};export{ee as release};