UNPKG

kui-shell

Version:

This is the monorepo for Kui, the hybrid command-line/GUI electron-based Kubernetes tool

86 lines 2.88 kB
"use strict"; 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