aws-cdk
Version:
AWS CDK Toolkit CLI, the command line tool for CDK apps
35 lines • 3.99 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.shell = shell;
const toolkit_lib_1 = require("@aws-cdk/toolkit-lib");
const chalk_1 = __importDefault(require("chalk"));
const tools_1 = require("../../private/tools");
/**
* OS helpers
*
* Executes the given command (argv array, never through a shell) while both
* printing its stdout in real-time and collecting it into the returned
* string. stderr goes straight to the terminal.
*/
async function shell(ioHelper, command) {
await ioHelper.defaults.debug(`Executing ${chalk_1.default.blue((0, tools_1.renderForDisplay)(command))}`);
try {
// stderr stays attached to the terminal so tools like npm keep their
// progress rendering; stdout is echoed in real time and also collected.
const result = await (0, tools_1.run)(command, {
stdio: 'inherit-stderr',
onOutput: (_stream, data) => process.stdout.write(data),
});
return result.stdout;
}
catch (e) {
if (e instanceof tools_1.SubprocessError && e.kind === 'exited') {
throw new toolkit_lib_1.ToolkitError('CommandFailed', e.message);
}
throw e;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJvcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQVlBLHNCQWlCQztBQTdCRCxzREFBb0Q7QUFDcEQsa0RBQTBCO0FBRTFCLCtDQUE2RTtBQUU3RTs7Ozs7O0dBTUc7QUFDSSxLQUFLLFVBQVUsS0FBSyxDQUFDLFFBQWtCLEVBQUUsT0FBaUI7SUFDL0QsTUFBTSxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxhQUFhLGVBQUssQ0FBQyxJQUFJLENBQUMsSUFBQSx3QkFBZ0IsRUFBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUVwRixJQUFJLENBQUM7UUFDSCxxRUFBcUU7UUFDckUsd0VBQXdFO1FBQ3hFLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBQSxXQUFHLEVBQUMsT0FBTyxFQUFFO1lBQ2hDLEtBQUssRUFBRSxnQkFBZ0I7WUFDdkIsUUFBUSxFQUFFLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO1NBQ3hELENBQUMsQ0FBQztRQUNILE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBQUMsT0FBTyxDQUFNLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsWUFBWSx1QkFBZSxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDeEQsTUFBTSxJQUFJLDBCQUFZLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyRCxDQUFDO1FBQ0QsTUFBTSxDQUFDLENBQUM7SUFDVixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRvb2xraXRFcnJvciB9IGZyb20gJ0Bhd3MtY2RrL3Rvb2xraXQtbGliJztcbmltcG9ydCBjaGFsayBmcm9tICdjaGFsayc7XG5pbXBvcnQgdHlwZSB7IElvSGVscGVyIH0gZnJvbSAnLi4vLi4vYXBpLXByaXZhdGUnO1xuaW1wb3J0IHsgcnVuLCByZW5kZXJGb3JEaXNwbGF5LCBTdWJwcm9jZXNzRXJyb3IgfSBmcm9tICcuLi8uLi9wcml2YXRlL3Rvb2xzJztcblxuLyoqXG4gKiBPUyBoZWxwZXJzXG4gKlxuICogRXhlY3V0ZXMgdGhlIGdpdmVuIGNvbW1hbmQgKGFyZ3YgYXJyYXksIG5ldmVyIHRocm91Z2ggYSBzaGVsbCkgd2hpbGUgYm90aFxuICogcHJpbnRpbmcgaXRzIHN0ZG91dCBpbiByZWFsLXRpbWUgYW5kIGNvbGxlY3RpbmcgaXQgaW50byB0aGUgcmV0dXJuZWRcbiAqIHN0cmluZy4gc3RkZXJyIGdvZXMgc3RyYWlnaHQgdG8gdGhlIHRlcm1pbmFsLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2hlbGwoaW9IZWxwZXI6IElvSGVscGVyLCBjb21tYW5kOiBzdHJpbmdbXSk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGF3YWl0IGlvSGVscGVyLmRlZmF1bHRzLmRlYnVnKGBFeGVjdXRpbmcgJHtjaGFsay5ibHVlKHJlbmRlckZvckRpc3BsYXkoY29tbWFuZCkpfWApO1xuXG4gIHRyeSB7XG4gICAgLy8gc3RkZXJyIHN0YXlzIGF0dGFjaGVkIHRvIHRoZSB0ZXJtaW5hbCBzbyB0b29scyBsaWtlIG5wbSBrZWVwIHRoZWlyXG4gICAgLy8gcHJvZ3Jlc3MgcmVuZGVyaW5nOyBzdGRvdXQgaXMgZWNob2VkIGluIHJlYWwgdGltZSBhbmQgYWxzbyBjb2xsZWN0ZWQuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcnVuKGNvbW1hbmQsIHtcbiAgICAgIHN0ZGlvOiAnaW5oZXJpdC1zdGRlcnInLFxuICAgICAgb25PdXRwdXQ6IChfc3RyZWFtLCBkYXRhKSA9PiBwcm9jZXNzLnN0ZG91dC53cml0ZShkYXRhKSxcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0LnN0ZG91dDtcbiAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgaWYgKGUgaW5zdGFuY2VvZiBTdWJwcm9jZXNzRXJyb3IgJiYgZS5raW5kID09PSAnZXhpdGVkJykge1xuICAgICAgdGhyb3cgbmV3IFRvb2xraXRFcnJvcignQ29tbWFuZEZhaWxlZCcsIGUubWVzc2FnZSk7XG4gICAgfVxuICAgIHRocm93IGU7XG4gIH1cbn1cbiJdfQ==