kui-shell
Version:
This is the monorepo for Kui, the hybrid command-line/GUI electron-based Kubernetes tool
83 lines • 3.61 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const debug_1 = require("debug");
const debug = debug_1.default('webapp/oops');
debug('loading');
const prompt_1 = require("./prompt");
const status_1 = require("./status");
const listen_1 = require("./listen");
const block_1 = require("./block");
const popup_core_1 = require("./popup-core");
const popup_1 = require("./popup");
const types_1 = require("../util/types");
const oops_1 = require("../core/oops");
const usage_error_1 = require("../core/usage-error");
const errors_1 = require("../models/errors");
function isPopupError(err) {
return err.content !== undefined;
}
exports.oops = (command, block, nextBlock) => (err) => __awaiter(void 0, void 0, void 0, function* () {
if (!block)
return;
if (!nextBlock) {
nextBlock = block.cloneNode(true);
nextBlock.querySelector('input').value = '';
}
if (prompt_1.getPrompt(block).value === '') {
prompt_1.getPrompt(block).value = command;
}
status_1.setStatus(block, "error");
const resultDom = popup_core_1.isPopup() ? popup_1.createPopupContentContainer(['error']) : block.querySelector('.repl-result');
const oopsDom = document.createElement('div');
oopsDom.className = 'oops';
resultDom.appendChild(oopsDom);
if (errors_1.isHideError(err)) {
debug('we were instructed to hide this error', err);
}
else if (usage_error_1.default.isUsageError(err)) {
oopsDom.appendChild(yield usage_error_1.default.getFormattedMessage(err));
}
else if (types_1.isHTML(err)) {
oopsDom.appendChild(err);
}
else {
const message = oops_1.oopsMessage(err);
const span = document.createElement('pre');
span.appendChild(document.createTextNode(message));
oopsDom.appendChild(span);
}
if (errors_1.isCodedError(err)) {
oopsDom.setAttribute('data-status-code', (err.statusCode || err.code).toString());
}
else {
oopsDom.setAttribute('data-status-code', '0');
}
if (resultDom.hasAttribute('data-stream')) {
const streamingOutput = resultDom.querySelector('.streaming-output');
if (streamingOutput) {
oopsDom.appendChild(streamingOutput);
}
}
if (popup_core_1.isPopup()) {
yield popup_1.renderPopupContent(command, (isPopupError(err) && err.content) || resultDom, {}, isPopupError(err) && err.modes);
listen_1.popupListen(undefined, command);
}
block_1.installBlock(block.parentNode, block, nextBlock)();
return false;
});
exports.showHelp = (command, block, nextBlock, error) => {
const baseMessage = 'Enter help to see your options.';
if (error.message && error.message === 'Command not found')
error.message += `\n${baseMessage}`;
return exports.oops(command, block, nextBlock)(error) && false;
};
//# sourceMappingURL=oops.js.map