UNPKG

@roots/dependencies

Version:

Automated package installation

45 lines (44 loc) 1.36 kB
import { spawn } from 'child_process'; /** * Base command */ export class Command { path; onMessage; onError; constructor(path, onMessage, onError) { this.path = path; this.onMessage = onMessage; this.onError = onError; } async execute(commandArgs) { const [bin, ...args] = commandArgs; return new Promise((resolve, reject) => { const message = []; const command = spawn(bin, args); command.stdout.on(`data`, incoming => { message.push(incoming.toString()); this.onMessage && this.onMessage(incoming.toString()); }); command.stderr.on(`data`, incoming => { message.push(incoming.toString()); this.onError && this.onError(incoming.toString()); }); command.on(`close`, () => resolve(message)); command.on(`error`, () => reject()); }); } normalizeDependencies(dependencies) { return dependencies .reduce((acc, dependency) => { if (Array.isArray(dependency)) { acc.push(`${dependency[0]}@${dependency[1]}`); } else { acc.push(dependency); } return acc; }, []) .filter(Boolean); } }