UNPKG

a2r

Version:
48 lines (47 loc) 1.59 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const child_process_1 = require("child_process"); /** * Executes command on terminal passing all received arguments * * If you want to run something like `mkdir -m 777 mydir` you'll need to call this method like * `exec('mkdir', ['-m', '777', 'mydir'])`. * @param {string} command Command to execute (i.e. `mkdir`) * @param {readonly string[]} args Arguments for command (i.e `-m` and `777`) * @param {SpawnOptionsWithoutStdio | undefined} options Spawn options (https://nodejs.org/api/child_process.html#child_process_child_process_spawn_command_args_options) * @returns {Promise<CommandResponse>} Command response */ const exec = (command, args, options) => new Promise((resolve, reject) => { const res = { command, args: args.join(' '), closeCode: null, exitCode: null, stdout: '', closeSignal: null, exitSignal: null, error: null, }; let closed = false; const cmd = (0, child_process_1.spawn)(command, args, options); cmd.stdout.on('data', (data) => { if (!closed) { res.stdout += data.toString(); } }); cmd.on('error', (err) => { res.error = err; reject(res); }); cmd.on('close', (code, signal) => { closed = true; res.closeCode = code; res.closeSignal = signal; }); cmd.on('exit', (code, signal) => { res.exitCode = code; res.exitSignal = signal; resolve(res); }); }); exports.default = exec;