@freik/node-utils
Version:
My personal set of utilities for NodeJS
2 lines (1 loc) • 922 B
JavaScript
import*as c from"child_process";async function w(p,s,r){return new Promise((e,a)=>{const n={output:[],stdout:"",stderr:"",signal:null,status:null},i=s?c.spawn(p,s,r):c.spawn(p,r);if(!i.stdout)return{error:"no stdout"};if(i.stdout.on("data",o=>{n.stdout=n.stdout.toString()+o.toString()}),!i.stderr)return{error:"no stderr"};i.stderr.on("data",o=>{n.stderr=n.stderr.toString()+o.toString()}),i.on("close",(o,u)=>{u?a(u):(n.status=o,n.signal=u,n.output=["",n.stdout.toString(),n.stderr.toString()],e(n))}),i.on("error",o=>{a(o)})})}function d(p,s,r){s||(s=[]);let t=r;t?t.cwd||(t.cwd=process.cwd()):t={cwd:process.cwd()};const e=s?c.spawnSync(p,s,t):c.spawnSync(p,t);return!e.error&&!e.status}async function S(p,s,r){s||(s=[]);let t=r;t?t.cwd||(t.cwd=process.cwd()):t={cwd:process.cwd(),stdio:["pipe","pipe","pipe"]};const e=await w(p,s,r);return!e.error&&!e.status}export{w as spawnAsync,d as spawnRes,S as spawnResAsync};