kui-shell
Version:
This is the monorepo for Kui, the hybrid command-line/GUI electron-based Kubernetes tool
86 lines • 2.88 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const debug_1 = require("debug");
const fs_1 = require("fs");
const events_1 = require("@kui-shell/core/api/events");
const strings_1 = require("./strings");
const debug = debug_1.default('plugins/editor/persisters');
const FilePersister = {
getCode: (entity) => entity,
saveString: strings_1.default.saveLocalFile,
save: (entity, editor) => new Promise((resolve, reject) => {
const rawText = editor.getValue();
fs_1.writeFile(entity.filepath, rawText, err => {
if (err) {
reject(err);
}
else {
if (entity.extract) {
const newEntity = entity.extract(rawText, entity);
Object.assign(entity, newEntity);
}
resolve(entity);
}
});
}),
revert: (entity) => new Promise((resolve, reject) => {
fs_1.readFile(entity.filepath, (err, data) => {
if (err) {
reject(err);
}
else {
entity.exec.code = data.toString();
resolve(entity);
}
});
})
};
exports.persisters = {
files: FilePersister
};
exports.save = ({ getEntity, editor, eventBus }) => {
const entityRightNow = getEntity();
const mode = (entityRightNow.persister && entityRightNow.persister.saveString) || strings_1.default.save;
return {
mode,
actAsButton: true,
flush: 'right',
direct: () => {
const entity = getEntity();
const persister = entity.persister;
debug('persister', persister, entity);
const { save } = entity.persister;
entity.exec.code = editor.getValue();
return save(entity, editor).then(entity => {
entity.persister = persister;
eventBus.emit('/editor/save', entity, { event: 'save' });
events_1.default.emit('/editor/save', entity, { event: 'save' });
return entity;
});
}
};
};
exports.revert = (state) => ({
mode: strings_1.default.revert,
actAsButton: true,
flush: 'right',
direct: () => {
const entity = state.getEntity();
const persister = entity.persister;
debug('revert', entity);
if (persister.revert) {
return persister
.revert(entity, state)
.then(entity => {
entity.persister = persister;
state.editor.updateText(entity);
state.eventBus.emit('/editor/save', entity, { event: 'revert' });
})
.then(() => true);
}
else {
debug('no registered reverter');
}
}
});
//# sourceMappingURL=persisters.js.map