UNPKG

pot-js

Version:

Process management module

80 lines (56 loc) 2.27 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; exports.default = createScriptRunner; var _potLogger = require('pot-logger'); var _potLogger2 = _interopRequireDefault(_potLogger); var _crossSpawn = require('cross-spawn'); var _crossSpawn2 = _interopRequireDefault(_crossSpawn); var _npmPath = require('npm-path'); var _npmPath2 = _interopRequireDefault(_npmPath); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; } function createScriptRunner() { let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; return function runScript(command) { if (!command) return; var _options$logger = options.logger; const logger = _options$logger === undefined ? _potLogger2.default : _options$logger, silence = options.silence, spawnOptions = _objectWithoutProperties(options, ['logger', 'silence']); let env = spawnOptions.env; const $PATH = _npmPath2.default.getSync(spawnOptions); if (env) { env[_npmPath2.default.PATH] = $PATH; } else { env = _extends({}, process.env, { [_npmPath2.default.PATH]: $PATH }); } for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { args[_key - 1] = arguments[_key]; } const child = (0, _crossSpawn2.default)(command, args, _extends({}, spawnOptions, { env, shell: true })); if (!silence) { if (child.stdout) { child.stdout.on('data', data => { logger.info(`${data}`); }); } if (child.stderr) { child.stderr.on('data', data => { logger.error(`${data}`); }); } child.on('close', code => { logger.info(`child process exited with code ${code}`); }); } return child; }; }