UNPKG

@agatee/cli

Version:

CLI for Agatee App

109 lines (108 loc) 6.49 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.checkGenerateComponentsError = exports.generateGraphqlComponent = exports.generateRestComponent = exports.generateComponents = void 0; var fs_1 = require("fs"); var path_1 = __importDefault(require("path")); var generales_1 = require("../../generales"); var console_1 = require("../../utils/console"); var envparser_1 = require("../../utils/envparser"); var file_1 = require("../../utils/file"); var text_1 = require("../../utils/text"); var controller_starter_1 = require("./starter-code/controller.starter"); var model_starter_1 = require("./starter-code/model.starter"); var resolver_starter_1 = require("./starter-code/resolver.starter"); var router_starter_1 = require("./starter-code/router.starter"); var service_starter_1 = require("./starter-code/service.starter"); var generateComponents = function (params) { (0, exports.checkGenerateComponentsError)(params); var componentsPath = params.params.slice(1); var resolvedComponentsPaths = []; var apiStyle = (0, file_1.getAppApiStyle)(); // Resolve path and check if there is some error if (componentsPath.length == 0) { throw new Error('Please give 1 or many component\'s path !'); } for (var _i = 0, componentsPath_1 = componentsPath; _i < componentsPath_1.length; _i++) { var componentPath = componentsPath_1[_i]; if (componentPath.includes('..')) { throw new Error('Invalide path for ' + componentPath + ', path with .. is not supported'); } componentPath = componentPath[0] === '/' ? "./app/" + componentPath : "./app/components/" + componentPath; componentPath = path_1.default.resolve(componentPath); if ((0, fs_1.existsSync)(componentPath)) { throw new Error("Directory " + componentPath + " already exist !"); } resolvedComponentsPaths.push(componentPath); } if (apiStyle === 'graphql') { delete params.additionalParams['endpoint']; delete params.additionalParams['e']; } switch (apiStyle) { case 'graphql': for (var _a = 0, resolvedComponentsPaths_1 = resolvedComponentsPaths; _a < resolvedComponentsPaths_1.length; _a++) { var resolvedPath = resolvedComponentsPaths_1[_a]; (0, exports.generateGraphqlComponent)(params, resolvedPath); } break; default: for (var _b = 0, resolvedComponentsPaths_2 = resolvedComponentsPaths; _b < resolvedComponentsPaths_2.length; _b++) { var resolvedPath = resolvedComponentsPaths_2[_b]; (0, exports.generateRestComponent)(params, resolvedPath); } break; } }; exports.generateComponents = generateComponents; var generateRestComponent = function (params, componentPath) { var pathName = process.platform === 'win32' ? path_1.default.win32.basename(componentPath) : path_1.default.basename(componentPath); var name = (0, text_1.camelCase)(pathName); (0, fs_1.mkdirSync)(componentPath, { recursive: true }); var routerStarterContent = (0, router_starter_1.routerStarterCode)(params, pathName); var controllerStarterContent = (0, controller_starter_1.controllerStarterCode)(params, pathName); var serviceStarterContent = (0, service_starter_1.serviceStarterCode)(params, pathName); var modelStarterContent = (0, model_starter_1.modelStarterCode)(params, pathName); if (params.additionalParams['mongoose-model'] || params.additionalParams['mm']) { (0, file_1.createFile)(componentPath + "/" + pathName + ".model.ts", modelStarterContent.trim()); } (0, file_1.createFile)(componentPath + "/" + pathName + ".router.ts", routerStarterContent.trim()); (0, file_1.createFile)(componentPath + "/" + pathName + ".controller.ts", controllerStarterContent.trim()); (0, file_1.createFile)(componentPath + "/" + pathName + ".service.ts", serviceStarterContent.trim()); (0, console_1.logSuccess)("\u2705 Component " + name + " generated: \u26A0\uFE0F Don't for get to add the router to the @GatModule routes array."); }; exports.generateRestComponent = generateRestComponent; var generateGraphqlComponent = function (params, componentPath) { var pathName = process.platform === 'win32' ? path_1.default.win32.basename(componentPath) : path_1.default.basename(componentPath); var name = (0, text_1.camelCase)(pathName); (0, fs_1.mkdirSync)(componentPath, { recursive: true }); var serviceStarterContent = (0, service_starter_1.serviceStarterCode)(params, name); var modelStarterContent = (0, model_starter_1.modelStarterCode)(params, name); var resolverStarterContent = (0, resolver_starter_1.resolverStarterCode)(name); if (params.additionalParams['mongoose-model'] || params.additionalParams['mm']) { (0, file_1.createFile)(componentPath + "/" + pathName + ".model.ts", modelStarterContent.trim()); } (0, file_1.createFile)(componentPath + "/" + pathName + ".resolver.ts", resolverStarterContent.trim()); (0, file_1.createFile)(componentPath + "/" + pathName + ".service.ts", serviceStarterContent.trim()); (0, file_1.createFile)(componentPath + "/" + pathName + ".graphql", ''); (0, console_1.logSuccess)("\u2705 Component " + pathName + " generated: \u26A0\uFE0F Don't for get to add the resolver to the @GatGraphql resolvers array."); }; exports.generateGraphqlComponent = generateGraphqlComponent; var checkGenerateComponentsError = function (params) { if ((params.additionalParams['endpoints'] || params.additionalParams['e']) && (!(params.additionalParams['mongoose-model'] || params.additionalParams['mm']))) { throw new Error('To generate component with endpoint please add option --mongoose-model'); } if ((params.additionalParams['mongoose-model'] || params.additionalParams['mm'])) { var config = {}; if ((0, fs_1.existsSync)(generales_1.dotenvPath)) { config = (0, envparser_1.parseEnv)((0, fs_1.readFileSync)(generales_1.dotenvPath).toString()); } if (!config.DB_HOST && !config.DB_URI) { throw new Error('You need to add mongoose before adding mongoose component'); } } }; exports.checkGenerateComponentsError = checkGenerateComponentsError;