kui-shell
Version:
This is the monorepo for Kui, the hybrid command-line/GUI electron-based Kubernetes tool
66 lines • 2.81 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 i18n_1 = require("@kui-shell/core/api/i18n");
const strings = i18n_1.i18n('plugin-k8s');
const debug = debug_1.default('k8s/view/modes/last-applied');
function getLastAppliedRaw(resource) {
return (resource.metadata.annotations && resource.metadata.annotations['kubectl.kubernetes.io/last-applied-configuration']);
}
function hasLastApplied(resource) {
return getLastAppliedRaw(resource) !== undefined;
}
exports.lastAppliedMode = {
when: hasLastApplied,
mode: (command, resource) => {
debug('lastApplied', resource);
try {
return {
mode: 'last applied',
label: strings('lastApplied'),
leaveBottomStripeAlone: true,
direct: {
plugin: 'k8s/dist/index',
operation: 'renderAndViewLastApplied',
parameters: { command, resource }
}
};
}
catch (err) {
debug('error rendering last applied', err);
}
}
};
function respondWith(lastRaw, fullResource) {
return __awaiter(this, void 0, void 0, function* () {
const { safeDump } = yield Promise.resolve().then(() => require('js-yaml'));
const resource = JSON.parse(lastRaw);
const content = safeDump(resource);
if (!resource.metadata.creationTimestamp) {
resource.metadata.creationTimestamp = fullResource.metadata.creationTimestamp;
}
return {
type: 'custom',
isEntity: true,
name: resource.metadata.name,
contentType: 'yaml',
content,
resource
};
});
}
exports.renderAndViewLastApplied = (tab, parameters) => __awaiter(void 0, void 0, void 0, function* () {
const { command, resource } = parameters;
debug('renderAndViewLastApplied', command, resource);
return respondWith(getLastAppliedRaw(resource.resource), resource.resource);
});
//# sourceMappingURL=last-applied.js.map