UNPKG

@altostra/core

Version:

Core library for shared types and logic

1 lines 1.78 kB
"use strict";var __rest=this&&this.__rest||function(t,r){var e={};for(var s in t)Object.prototype.hasOwnProperty.call(t,s)&&r.indexOf(s)<0&&(e[s]=t[s]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(s=Object.getOwnPropertySymbols(t);o<s.length;o++)r.indexOf(s[o])<0&&Object.prototype.propertyIsEnumerable.call(t,s[o])&&(e[s[o]]=t[s[o]])}return e};Object.defineProperty(exports,"__esModule",{value:!0}),exports.pipeChildProcStdio=exports.spawnAndWait=void 0;const child_process_1=require("child_process"),AltoError_1=require("../Errors/AltoError");function spawnAndWait(t,r,e){let s=void 0,o=void 0;if(e||r&&Array.isArray(r)){if(!Array.isArray(r))throw AltoError_1.AltoError.create({message:"Invalid spawn args.",data:{arguments:[...arguments]}});s=r,o=e}else o=r;const i=null!=o?o:{},{throwOnNoZeroExit:n,handleChildProcess:d}=i,c=__rest(i,["throwOnNoZeroExit","handleChildProcess"]);return new Promise((r,e)=>{const i=s?(0,child_process_1.spawn)(t,s,c):(0,child_process_1.spawn)(t,c);i.on("error",e).on("close",(i,d)=>n&&0!==i&&null!==i?e(AltoError_1.AltoError.create({message:`Process ${t} exited with non-zero exit code.`,data:Object.assign(Object.assign({existStatus:{code:i,signal:d},cmd:t},s&&{args:s}),o&&{options:o})})):r({code:i,signal:d})),null==d||d(i)})}exports.spawnAndWait=spawnAndWait;const defaultPipeChildProcStdioOptions={stderr:!0,stdin:!0,stdout:!0};function pipeChildProcStdio(t,r){const{stderr:e,stdin:s,stdout:o}=Object.assign(Object.assign({},defaultPipeChildProcStdioOptions),r);return Object.assign(Object.assign(Object.assign({},e&&t.stderr&&{stderr:t.stderr.pipe(process.stderr)}),s&&t.stdin&&{stdin:process.stdin.pipe(t.stdin)}),o&&t.stdout&&{stdout:t.stdout.pipe(process.stdout)})}exports.pipeChildProcStdio=pipeChildProcStdio;