UNPKG

nve

Version:

Run any command on specific Node.js versions

85 lines (69 loc) 1.33 kB
import{execa}from"execa"; import nvexeca from"nvexeca"; import{cancelOnError}from"./abort.js"; import{printVersions}from"./dry.js"; import{handleSerialError}from"./error.js"; import{printVersionHeader}from"./header.js"; import{getSerialStdinOptions}from"./stdin.js"; export const runSerial=async({ versionRanges, command, args, opts, controller, continueOpt })=>{ if(command===undefined){ return printVersions(versionRanges,opts,controller) } const stdinOptions=await getSerialStdinOptions(); const optsA={ ...opts, dry:true, ...stdinOptions, stdout:"inherit", stderr:"inherit", reject:true, buffer:false }; const versions=await cancelOnError( versionRanges.map((versionRange)=> nvexeca(versionRange,command,args,optsA) ), controller ); const state={}; await runProcesses({versions,state,continueOpt}); return state.exitCode }; const runProcesses=async({versions,state,continueOpt})=>{ for(const{version,command,args,execaOptions}of versions){ printVersionHeader(version); const shouldStop=await runProcess({ version, command, args, execaOptions, state, continueOpt }); if(shouldStop){ return } } }; const runProcess=async({ version, command, args, execaOptions, state, continueOpt })=>{ try{ await execa(command,args,execaOptions) }catch(error){ handleSerialError(error,version,state); return!continueOpt } };