UNPKG

snyk-go-plugin

Version:
69 lines 2.56 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.runGo = exports.execute = void 0; const childProcess = require("child_process"); const debug_1 = require("./debug"); async function execute(command, args, options, shell = false) { const spawnOptions = { shell, env: { ...process.env }, }; if (options === null || options === void 0 ? void 0 : options.cwd) { spawnOptions.cwd = options.cwd; } if (options === null || options === void 0 ? void 0 : options.env) { spawnOptions.env = { ...process.env, ...options.env }; } // Ensure env is defined (it always is due to initialization above) const env = spawnOptions.env; // Before spawning an external process, we look if we need to restore the system proxy configuration, // which overides the cli internal proxy configuration. if (process.env.SNYK_SYSTEM_HTTP_PROXY !== undefined) { env.HTTP_PROXY = process.env.SNYK_SYSTEM_HTTP_PROXY; } if (process.env.SNYK_SYSTEM_HTTPS_PROXY !== undefined) { env.HTTPS_PROXY = process.env.SNYK_SYSTEM_HTTPS_PROXY; } if (process.env.SNYK_SYSTEM_NO_PROXY !== undefined) { env.NO_PROXY = process.env.SNYK_SYSTEM_NO_PROXY; } return new Promise((resolve, reject) => { let stdout = ''; let stderr = ''; const proc = childProcess.spawn(command, args, spawnOptions); if (proc.stdout) { proc.stdout.on('data', (data) => { stdout = stdout + data; }); } if (proc.stderr) { proc.stderr.on('data', (data) => { stderr = stderr + data; }); } proc.on('close', (code) => { if (code !== 0) { return reject(stdout || stderr); } resolve(stdout || stderr); }); }); } exports.execute = execute; async function runGo(args, options, additionalGoCommands = []) { try { return await execute('go', args, options); } catch (err) { const [command] = /(go mod download)|(go get [^"]*)/.exec(err) || []; if (command && !additionalGoCommands.includes(command)) { (0, debug_1.debug)('running command:', command); const newArgs = command.split(' ').slice(1); await execute('go', newArgs, options); return runGo(args, options, additionalGoCommands.concat(command)); } throw err; } } exports.runGo = runGo; //# sourceMappingURL=sub-process.js.map