@lenne.tech/cli
Version:
lenne.Tech CLI: lt
131 lines • 13.3 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 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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