jsii-release
Version:
Release jsii modules to multiple package managers
101 lines • 8.42 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
exports.run = run;
exports.check = check;
exports.which = which;
const child = __importStar(require("child_process"));
const shlex = __importStar(require("shlex"));
/**
* Run a shell command and return the output.
* Throws if the command fails.
*
* @param command command (e.g 'git commit -m')
*/
function run(command, options = {}) {
const shsplit = shlex.split(command);
const pipeOrInherit = (options.capture ?? false) ? 'pipe' : 'inherit';
const env = { ...process.env, ...options.modEnv };
const result = child.spawnSync(shsplit[0], shsplit.slice(1), {
stdio: ['ignore', pipeOrInherit, pipeOrInherit],
cwd: options.cwd,
shell: options.shell,
env,
});
if (result.error) {
throw result.error;
}
const stdout = result.stdout?.toString();
const stderr = result.stderr?.toString();
if (result.status !== 0) {
const message = `
Command failed: ${command}.
Output: ${stdout}
Error: ${stderr}`;
throw new Error(message);
}
return stdout;
}
/**
* Run a shell command and return a boolean indicating success or failure.
*
* Use this is when the result of the command informs a decision but is otherwise inconsequential.
*
* @param command command (e.g 'git ls-remote --exit-code')
*/
function check(command, options = {}) {
try {
run(command, options);
return true;
}
catch (e) {
return false;
}
}
/**
* Return the path under which a program is available.
* Empty string if the program is not installed.
*
* @param program program to check (e.g 'git')
*/
function which(program) {
try {
return run(`which ${program}`, { capture: true });
}
catch (err) {
return '';
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlbGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaGVscC9zaGVsbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXlDQSxrQkF5QkM7QUFTRCxzQkFPQztBQVFELHNCQU1DO0FBaEdELHFEQUF1QztBQUN2Qyw2Q0FBK0I7QUFrQy9COzs7OztHQUtHO0FBQ0gsU0FBZ0IsR0FBRyxDQUFDLE9BQWUsRUFBRSxVQUFzQixFQUFFO0lBQzNELE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDckMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUEsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNyRSxNQUFNLEdBQUcsR0FBRyxFQUFFLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNsRCxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQzNELEtBQUssRUFBRSxDQUFDLFFBQVEsRUFBRSxhQUFhLEVBQUUsYUFBYSxDQUFDO1FBQy9DLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRztRQUNoQixLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7UUFDcEIsR0FBRztLQUNKLENBQUMsQ0FBQztJQUNILElBQUksTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2pCLE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQztJQUNyQixDQUFDO0lBRUQsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsQ0FBQztJQUN6QyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDO0lBRXpDLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN4QixNQUFNLE9BQU8sR0FBRztzQkFDRSxPQUFPO2dCQUNiLE1BQU07ZUFDUCxNQUFNLEVBQUUsQ0FBQztRQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsU0FBZ0IsS0FBSyxDQUFDLE9BQWUsRUFBRSxVQUFzQixFQUFFO0lBQzdELElBQUksQ0FBQztRQUNILEdBQUcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDdEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNYLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztBQUNILENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQWdCLEtBQUssQ0FBQyxPQUFlO0lBQ25DLElBQUksQ0FBQztRQUNILE9BQU8sR0FBRyxDQUFDLFNBQVMsT0FBTyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjaGlsZCBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCAqIGFzIHNobGV4IGZyb20gJ3NobGV4JztcblxuLyoqXG4gKiBPcHRpb25zIGZvciB0aGUgYHJ1bmAgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUnVuT3B0aW9ucyB7XG5cbiAgLyoqXG4gICAqIFdva3JpbmcgZGlyZWN0b3J5LlxuICAgKlxuICAgKiBAZGVmYXVsdCBwcm9jZXNzLmN3ZCgpXG4gICAqL1xuICByZWFkb25seSBjd2Q/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENhcHR1cmUgdGhlIG91dHB1dCBvZiB0aGUgY29tbWFuZCBhbmQgcmV0dXJuIHRvIGNhbGxlci5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBjYXB0dXJlLCBvdXRwdXQgaXMgcHJpbnRlZCB0byBzdGRvdXQuXG4gICAqL1xuICByZWFkb25seSBjYXB0dXJlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUnVuIHRoZSBjb21tYW5kIGluc2lkZSBhIHNoZWxsLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc2hlbGw/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBQcm9wZXJ0aWVzIHRvIGFkZCB0byAnZW52J1xuICAgKi9cbiAgcmVhZG9ubHkgbW9kRW52PzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbn1cblxuLyoqXG4gKiBSdW4gYSBzaGVsbCBjb21tYW5kIGFuZCByZXR1cm4gdGhlIG91dHB1dC5cbiAqIFRocm93cyBpZiB0aGUgY29tbWFuZCBmYWlscy5cbiAqXG4gKiBAcGFyYW0gY29tbWFuZCBjb21tYW5kIChlLmcgJ2dpdCBjb21taXQgLW0nKVxuICovXG5leHBvcnQgZnVuY3Rpb24gcnVuKGNvbW1hbmQ6IHN0cmluZywgb3B0aW9uczogUnVuT3B0aW9ucyA9IHt9KTogc3RyaW5nIHtcbiAgY29uc3Qgc2hzcGxpdCA9IHNobGV4LnNwbGl0KGNvbW1hbmQpO1xuICBjb25zdCBwaXBlT3JJbmhlcml0ID0gKG9wdGlvbnMuY2FwdHVyZSA/PyBmYWxzZSkgPyAncGlwZSc6ICdpbmhlcml0JztcbiAgY29uc3QgZW52ID0geyAuLi5wcm9jZXNzLmVudiwgLi4ub3B0aW9ucy5tb2RFbnYgfTtcbiAgY29uc3QgcmVzdWx0ID0gY2hpbGQuc3Bhd25TeW5jKHNoc3BsaXRbMF0sIHNoc3BsaXQuc2xpY2UoMSksIHtcbiAgICBzdGRpbzogWydpZ25vcmUnLCBwaXBlT3JJbmhlcml0LCBwaXBlT3JJbmhlcml0XSxcbiAgICBjd2Q6IG9wdGlvbnMuY3dkLFxuICAgIHNoZWxsOiBvcHRpb25zLnNoZWxsLFxuICAgIGVudixcbiAgfSk7XG4gIGlmIChyZXN1bHQuZXJyb3IpIHtcbiAgICB0aHJvdyByZXN1bHQuZXJyb3I7XG4gIH1cblxuICBjb25zdCBzdGRvdXQgPSByZXN1bHQuc3Rkb3V0Py50b1N0cmluZygpO1xuICBjb25zdCBzdGRlcnIgPSByZXN1bHQuc3RkZXJyPy50b1N0cmluZygpO1xuXG4gIGlmIChyZXN1bHQuc3RhdHVzICE9PSAwKSB7XG4gICAgY29uc3QgbWVzc2FnZSA9IGBcbiAgICBDb21tYW5kIGZhaWxlZDogJHtjb21tYW5kfS5cbiAgICAgIE91dHB1dDogJHtzdGRvdXR9XG4gICAgICBFcnJvcjogJHtzdGRlcnJ9YDtcbiAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gIH1cbiAgcmV0dXJuIHN0ZG91dDtcbn1cblxuLyoqXG4gKiBSdW4gYSBzaGVsbCBjb21tYW5kIGFuZCByZXR1cm4gYSBib29sZWFuIGluZGljYXRpbmcgc3VjY2VzcyBvciBmYWlsdXJlLlxuICpcbiAqIFVzZSB0aGlzIGlzIHdoZW4gdGhlIHJlc3VsdCBvZiB0aGUgY29tbWFuZCBpbmZvcm1zIGEgZGVjaXNpb24gYnV0IGlzIG90aGVyd2lzZSBpbmNvbnNlcXVlbnRpYWwuXG4gKlxuICogQHBhcmFtIGNvbW1hbmQgY29tbWFuZCAoZS5nICdnaXQgbHMtcmVtb3RlIC0tZXhpdC1jb2RlJylcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrKGNvbW1hbmQ6IHN0cmluZywgb3B0aW9uczogUnVuT3B0aW9ucyA9IHt9KTogYm9vbGVhbiB7XG4gIHRyeSB7XG4gICAgcnVuKGNvbW1hbmQsIG9wdGlvbnMpO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogUmV0dXJuIHRoZSBwYXRoIHVuZGVyIHdoaWNoIGEgcHJvZ3JhbSBpcyBhdmFpbGFibGUuXG4gKiBFbXB0eSBzdHJpbmcgaWYgdGhlIHByb2dyYW0gaXMgbm90IGluc3RhbGxlZC5cbiAqXG4gKiBAcGFyYW0gcHJvZ3JhbSBwcm9ncmFtIHRvIGNoZWNrIChlLmcgJ2dpdCcpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3aGljaChwcm9ncmFtOiBzdHJpbmcpOiBzdHJpbmcge1xuICB0cnkge1xuICAgIHJldHVybiBydW4oYHdoaWNoICR7cHJvZ3JhbX1gLCB7IGNhcHR1cmU6IHRydWUgfSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHJldHVybiAnJztcbiAgfVxufVxuXG4iXX0=