UNPKG

binci

Version:

Utility for running containerized development workflows

41 lines (37 loc) 1.17 kB
'use strict' const cp = require('child_process') const Promise = require('bluebird') const proc = { /** * Runs a process and returns promise which reolves or rejects based on process exit * @param {array} args Arguments to pass to command * @param {boolean} silent Silences output, used primarily for services * @returns {object} promise */ run: (args, silent = false) => new Promise((resolve, reject) => { const opts = { env: process.env, cwd: process.env.HOME } opts.stdio = silent ? [null, null, null] : ['inherit', process.stdout, process.stdout] // Start const p = cp.spawn('docker', args, opts) // Handle close p.on('close', (code) => { code === 0 || code === 130 ? resolve() : reject(code) }) }), /** * Creates a detached process which will run outside of parent process * @param {string} cmd Command to execute */ runDetached: (cmd) => { const p = cp.spawn('sh', ['-c', cmd], { detached: true, stdio: 'ignore' }) p.unref() }, /** * @property {function} Node child_process.exec, promisified */ exec: Promise.promisify(cp.exec) } module.exports = proc