123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- "use strict";
- var __importDefault = (this && this.__importDefault) || function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
- };
- Object.defineProperty(exports, "__esModule", { value: true });
- const child_process_1 = require("child_process");
- const path_1 = __importDefault(require("path"));
- const common_1 = require("./common");
- const loggerAlias = common_1.logger;
- function runSync(command, options) {
- try {
- const nextOptions = {
- cwd: options.cwd,
- env: options.env,
- stdio: options.stdio,
- timeout: options.timeout
- };
- const buffer = child_process_1.execSync(command, nextOptions);
- if (buffer) {
- return buffer.toString();
- }
- return null;
- }
- catch (error) {
- throw new common_1.RunJSError(error.message);
- }
- }
- function runAsync(command, options) {
- return new Promise((resolve, reject) => {
- const nextOptions = {
- cwd: options.cwd,
- env: options.env,
- shell: true,
- stdio: options.stdio
- };
- const asyncProcess = child_process_1.spawn(command, nextOptions);
- let output = null;
- asyncProcess.on("error", (error) => {
- reject(new Error(`Failed to start command: ${command}; ${error.toString()}`));
- });
- asyncProcess.on("close", (exitCode) => {
- if (exitCode === 0) {
- resolve(output);
- }
- else {
- reject(new Error(`Command failed: ${command} with exit code ${exitCode}`));
- }
- });
- if (options.stdio === "pipe") {
- asyncProcess.stdout.on("data", (buffer) => {
- output = buffer.toString();
- });
- }
- if (options.timeout) {
- setTimeout(() => {
- asyncProcess.kill();
- reject(new Error(`Command timeout: ${command}`));
- }, options.timeout);
- }
- });
- }
- function run(command, options = {}, logger = loggerAlias) {
- const binPath = path_1.default.resolve("./node_modules/.bin");
- // Pick relevant option keys and set default values
- const nextOptions = {
- async: !!options.async,
- cwd: options.cwd,
- env: options.env || process.env,
- stdio: options.stdio || "inherit",
- timeout: options.timeout
- };
- const env = nextOptions.env;
- // Include in PATH node_modules bin path
- if (env) {
- env.PATH = [binPath, env.PATH || process.env.PATH].join(path_1.default.delimiter);
- }
- logger.title(command);
- // Handle async call
- if (options.async) {
- return runAsync(command, nextOptions);
- }
- // Handle sync call by default
- return runSync(command, nextOptions);
- }
- exports.run = run;
- /**
- * @deprecated
- */
- function option(thisObj, name = "") {
- return (thisObj && thisObj.options && thisObj.options[name]) || null;
- }
- exports.option = option;
- function options(thisObj) {
- return (thisObj && thisObj.options) || {};
- }
- exports.options = options;
- function help(func, annotation) {
- // Because the validation above currently gets compiled out,
- // Explictly validate the function input
- if (typeof func === "function") {
- func.help = annotation;
- }
- else {
- throw new Error("first help() argument must be a function");
- }
- }
- exports.help = help;
- //# sourceMappingURL=index.js.map
|