UNPKG

@mail-core/cli

Version:

Инструментарий для написания cli-скриптов

86 lines 2.93 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.npmInstallPackage = exports.npmInstall = exports.npmRun = exports.npxRun = exports.spawn = void 0; const child_process_1 = require("child_process"); const spinner_1 = require("../console/spinner"); const console_1 = require("../console"); function spawn(cmd, args = [], options = {}) { const opts = Object.assign({ cwd: process.cwd(), env: process.env, stdio: options.spinner ? 'ignore' : 'inherit' }, options); let spinner = undefined; let childProcess = {}; const promise = new Promise((resolve, reject) => { var _a, _b; console_1.verbose(`[spawn] ${cmd}:`, args); let stdout = ''; let stderr = ''; childProcess = child_process_1.spawn(cmd, args, opts); (_a = childProcess.stdout) === null || _a === void 0 ? void 0 : _a.on('data', (chunk) => { stdout += chunk; }); (_b = childProcess.stderr) === null || _b === void 0 ? void 0 : _b.on('data', (chunk) => { stderr += chunk; }); childProcess.on('close', (code) => { if (spinner) { spinner[code === 0 ? 'succeed' : 'fail'](); } (code === 0 ? resolve : reject)({ code, stdout, stderr, }); }); }); if (spinner_1.isSpinnerInstance(opts.spinner)) { spinner = opts.spinner; } else if (opts.spinner) { spinner = spinner_1.createSpinner(promise, opts.spinner === true ? {} : opts.spinner); } Object.defineProperties(childProcess, { then: { configurable: false, writable: false, enumerable: false, value: promise.then.bind(promise), }, catch: { configurable: false, writable: false, enumerable: false, value: promise.catch.bind(promise), }, spinner: { configurable: false, writable: false, enumerable: false, value: spinner, }, }); return childProcess; } exports.spawn = spawn; function npxRun(script, cmd, args = [], options) { return spawn('npx', [script, cmd].concat(args), options); } exports.npxRun = npxRun; function npmRun(script, args = [], options) { return spawn('npm', ['run', script, '--'].concat(args), options); } exports.npmRun = npmRun; function npmInstall(options = {}) { return spawn('npm', ['install'], options); } exports.npmInstall = npmInstall; function npmInstallPackage(name, saveAs = true, options = {}) { const args = ['install', name]; if (saveAs === 'dev') { args.push('--save-dev'); } else if (saveAs) { args.push('--save'); } return spawn('npm', args, options); } exports.npmInstallPackage = npmInstallPackage; //# sourceMappingURL=exec.js.map