UNPKG

pooliot-client

Version:
89 lines (68 loc) 3.04 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.runPipeAsUser = exports.runPipe = exports.runAsyncAsUser = exports.runAsync = exports.runSyncAsUser = exports.runSyncOk = exports.runSync = undefined; var _child_process = require('child_process'); var _nightingale = require('nightingale'); var _nightingale2 = _interopRequireDefault(_nightingale); var _argv = require('../argv'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const logger = new _nightingale2.default('app:exec'); const scriptDirname = `${__dirname}/../../scripts/`; const escapeArgs = args => args.map(arg => typeof arg !== 'string' ? arg : `"${arg.replace('"', '\\"')}"`).join(' '); const runSync = exports.runSync = (script, args = [], { cwd, env } = {}) => { logger.debug('run', { script, args, cwd, env }); const result = (0, _child_process.spawnSync)(script, args, { cwd: cwd || scriptDirname, env: env && Object.assign({}, process.env, env) }); if (result.error) { logger.error(result.error.message); } if (result.stderr) { const stderr = result.stderr.toString(); if (stderr) { logger.error(stderr, { script, args, env }); } } if (result.stdout) { const stdout = result.stdout.toString().trim(); logger.debug(stdout, { script, args }); return stdout; } }; const runSyncOk = exports.runSyncOk = (script, args = [], { cwd, env } = {}) => { const result = (0, _child_process.spawnSync)(script, args, { cwd: cwd || scriptDirname, env }); return !result.status; }; const runSyncAsUser = exports.runSyncAsUser = (script, args, { cwd, env } = {}) => { if (env) throw new Error('env not supported in runSyncAsUser'); return runSync('su', ['-c', `${script} ${escapeArgs(args)}`, _argv.user], { cwd }); }; const runAsync = exports.runAsync = (script, args, { cwd, env } = {}) => { logger.info('exec', { script, args }); const childProcess = (0, _child_process.spawn)(script, args, { cwd: cwd || scriptDirname, env, stdio: 'pipe' }); childProcess.stdout.on('data', data => logger.debug(data.toString())); childProcess.stderr.on('data', data => logger.error(data.toString())); return childProcess; }; const runAsyncAsUser = exports.runAsyncAsUser = (script, args) => runAsync('su', ['-c', `${script} ${escapeArgs(args)}`, _argv.user]); const runPipe = exports.runPipe = (script, args, { cwd, env } = {}) => { logger.debug('pipe', { script, args, cwd, env }); const result = (0, _child_process.spawnSync)(script, args, { cwd: cwd || scriptDirname, env }); if (result.error) { logger.error(result.error.message); return null; } if (result.stderr) { const stderr = result.stderr.toString(); if (stderr) { logger.error(stderr, { script, args }); return null; } } return result.stdout; }; const runPipeAsUser = exports.runPipeAsUser = (script, args) => runPipe('su', ['-c', `${script} ${escapeArgs(args)}`, _argv.user]); //# sourceMappingURL=exec.js.map