@agatee/cli
Version:
CLI for Agatee App
109 lines (108 loc) • 6.49 kB
JavaScript
"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;