UNPKG

@lenne.tech/cli

Version:

lenne.Tech CLI: lt

131 lines 13.3 kB
"use strict"; 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 gluegun_1 = require("gluegun"); const path_1 = require("path"); const module_1 = require("./module"); const object_1 = require("./object"); /** * Create a new server module */ const NewCommand = { alias: ['ap'], description: 'Adds a property to a module', hidden: false, name: 'addProp', run: (toolbox) => __awaiter(void 0, void 0, void 0, function* () { // Retrieve the tools we need const { filesystem, print: { divider, error, info, spin, success }, prompt: { ask }, server, } = toolbox; function getModules() { const cwd = filesystem.cwd(); const path = cwd.substr(0, cwd.lastIndexOf('src')); const moduleDirs = (0, path_1.join)(path, 'src', 'server', 'modules'); return filesystem.subdirectories(moduleDirs, true); } function getObjects() { const cwd = filesystem.cwd(); const path = cwd.substr(0, cwd.lastIndexOf('src')); const objectDirs = (0, path_1.join)(path, 'src', 'server', 'common', 'objects'); return filesystem.subdirectories(objectDirs, true); } const objectOrModule = (yield ask([ { choices: ['Module', 'Object'], message: 'What should be updated', name: 'input', type: 'select', }, ])).input; const elementToEdit = (yield ask([ { choices: objectOrModule === 'Module' ? getModules() : getObjects(), message: 'Choose one to update', name: 'input', type: 'select', }, ])).input; // Check if directory const cwd = filesystem.cwd(); const path = cwd.substr(0, cwd.lastIndexOf('src')); if (!filesystem.exists((0, path_1.join)(path, 'src'))) { info(''); error(`No src directory in "${path}".`); return undefined; } const { objectsToAdd, props, referencesToAdd, refsSet, schemaSet } = yield server.addProperties(); const updateSpinner = spin('Updating files...'); const elementClass = objectOrModule === 'Module' ? (0, path_1.join)(path, 'src', 'server', 'modules', elementToEdit, `${elementToEdit}.model.ts`) : (0, path_1.join)(path, 'src', 'server', 'common', 'objects', elementToEdit, `${elementToEdit}.object.ts`); const elementInput = objectOrModule === 'Module' ? (0, path_1.join)(path, 'src', 'server', 'modules', elementToEdit, 'inputs', `${elementToEdit}.input.ts`) : (0, path_1.join)(path, 'src', 'server', 'common', 'objects', elementToEdit, `${elementToEdit}.input.ts`); const elementCreateInput = objectOrModule === 'Module' ? (0, path_1.join)(path, 'src', 'server', 'modules', elementToEdit, 'inputs', `${elementToEdit}-create.input.ts`) : (0, path_1.join)(path, 'src', 'server', 'common', 'objects', elementToEdit, `${elementToEdit}-create.input.ts`); for (const prop in props) { const propObj = props[prop]; if (yield gluegun_1.patching.exists(elementClass, `${propObj.name}`)) { info(''); info(`Property ${propObj.name} already exists`); // Remove the reference for this property from the list const refIndex = referencesToAdd.findIndex(item => item.property === propObj.name); if (refIndex !== -1) { referencesToAdd.splice(refIndex, 1); } // Remove the object for this property from the list const objIndex = objectsToAdd.findIndex(item => item.property === propObj.name); if (objIndex !== -1) { objectsToAdd.splice(objIndex, 1); } // Go on continue; } // Patch the Model yield gluegun_1.patching.patch(elementClass, { after: new RegExp('@Field[\\s\\S]*?undefined;(?![\\s\\S]*@Field)', 'g'), insert: server.constructModelPatchString(propObj, elementToEdit), }); // Patch the normal input.ts yield gluegun_1.patching.patch(elementInput, { after: new RegExp('@Field[\\s\\S]*?undefined;(?![\\s\\S]*@Field)', 'g'), insert: server.constructInputPatchString(propObj, elementToEdit), }); // Patch the create.input.ts yield gluegun_1.patching.patch(elementCreateInput, { after: new RegExp('@Field[\\s\\S]*?undefined;(?![\\s\\S]*@Field)', 'g'), insert: server.constructCreateInputPatchString(propObj, elementToEdit), }); } updateSpinner.succeed('All files updated successfully.'); // Add additional references if (referencesToAdd.length > 0) { divider(); const nextRef = referencesToAdd.shift().reference; yield module_1.default.run(toolbox, { currentItem: nextRef, objectsToAdd, preventExitProcess: true, referencesToAdd }); } // Add additional objects if (objectsToAdd.length > 0) { divider(); const nextObj = objectsToAdd.shift().object; yield object_1.default.run(toolbox, { currentItem: nextObj, objectsToAdd, preventExitProcess: true, referencesToAdd }); } if (refsSet || schemaSet) { success('HINT: References / Schemata have been added, so it is necessary to add the corresponding imports!'); } if (!toolbox.parameters.options.fromGluegunMenu) { process.exit(); } return `properties updated for ${elementToEdit}`; }), }; exports.default = NewCommand; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXByb3BlcnR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL3NlcnZlci9hZGQtcHJvcGVydHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQSxxQ0FBbUQ7QUFDbkQsK0JBQTRCO0FBRzVCLHFDQUFpQztBQUNqQyxxQ0FBaUM7QUFFakM7O0dBRUc7QUFDSCxNQUFNLFVBQVUsR0FBbUI7SUFDakMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDO0lBQ2IsV0FBVyxFQUFFLDZCQUE2QjtJQUMxQyxNQUFNLEVBQUUsS0FBSztJQUNiLElBQUksRUFBRSxTQUFTO0lBQ2YsR0FBRyxFQUFFLENBQU8sT0FBK0IsRUFBRSxFQUFFO1FBQzdDLDZCQUE2QjtRQUM3QixNQUFNLEVBQ0osVUFBVSxFQUNWLEtBQUssRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsRUFDOUMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQ2YsTUFBTSxHQUNQLEdBQUcsT0FBTyxDQUFDO1FBRVosU0FBUyxVQUFVO1lBQ2pCLE1BQU0sR0FBRyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUM3QixNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDbkQsTUFBTSxVQUFVLEdBQUcsSUFBQSxXQUFJLEVBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFFMUQsT0FBTyxVQUFVLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNyRCxDQUFDO1FBRUQsU0FBUyxVQUFVO1lBQ2pCLE1BQU0sR0FBRyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUM3QixNQUFNLElB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