pooliot-client
Version:
89 lines (68 loc) • 3.04 kB
JavaScript
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
;