UNPKG

@veecode-platform/safira-cli

Version:

Generate a microservice project from your spec.

56 lines (55 loc) 4.04 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.GenerateProjectImpl = void 0; const tslib_1 = require("tslib"); const language_support_1 = require("../language-support"); const file_system_utils_1 = require("../utils/file-system-utils"); const string_utils_1 = require("../utils/string-utils"); const properties = tslib_1.__importStar(require("../properties.json")); const openapi_to_kong_1 = require("../openapi/openapi-to-kong"); const validate_spec_1 = require("../openapi/validate-spec"); const openapi_exception_1 = require("../exception/openapi-exception"); const okteto_file_1 = require("./template/okteto-file"); const okteto_image_1 = require("../okteto/okteto-image"); class GenerateProjectImpl { async newProject(params) { const newParam = params; console.log(`COMPARE ROOT FOLDER: ${file_system_utils_1.FileSystemUtils.getHighFolderFromPath(newParam.newProjectRoot)}`); console.log(`COMPARE PROJECT NAME: ${newParam.projectName}`); const projectFolderAlreadyExists = file_system_utils_1.FileSystemUtils.getHighFolderFromPath(newParam.newProjectRoot) === newParam.projectName; console.log(`PROJECT FOLDER ALREADY EXISTS: ${projectFolderAlreadyExists}`); newParam.newProjectRoot = file_system_utils_1.FileSystemUtils.fullPath(projectFolderAlreadyExists ? string_utils_1.StringUtils.removeLastFolderFromStringPath(file_system_utils_1.FileSystemUtils.getCurrentPath()) : params.newProjectRoot); const projectPath = file_system_utils_1.FileSystemUtils.buildPath(newParam.newProjectRoot, newParam.projectName); console.log("=============================================="); console.log(`folder Name: ${file_system_utils_1.FileSystemUtils.getHighFolderFromPath(newParam.newProjectRoot)}`); console.log(`projectName: ${newParam.projectName}`); console.log(`projectPath: ${projectPath}`); console.log(`newProjectRoot: ${newParam.newProjectRoot}`); console.log("=============================================="); newParam.projectPathDetails = this.generateProjectFolder(projectPath); if (params.kongKubernetes) { const kongForKubernetesFolder = file_system_utils_1.FileSystemUtils.buildPath(newParam.projectPathDetails.projectSafiraPath, "k8s"); const kongForKubernetes = file_system_utils_1.FileSystemUtils.buildPath(kongForKubernetesFolder, `${properties.inso["kong-for-kubernetes"]}.yaml`); file_system_utils_1.FileSystemUtils.createFolder(kongForKubernetesFolder); openapi_to_kong_1.OpenApiToKong.instance.export(params.openapiFilePath, kongForKubernetes, openapi_to_kong_1.ResultType.kongForKubernetes); } const result = validate_spec_1.OpenapiValidator.instance.validate(params.openapiFilePath); if (!result.valid) { throw new openapi_exception_1.InvalidOpenApiException(result.errors.join("\n")); } newParam.javaPackage += ("." + newParam.projectName.replaceAll("-", "")); await language_support_1.LanguageSupportEnumHelper.getSpecializedProject(language_support_1.LanguageSupportEnum[params.language]).newProject(newParam); const image = okteto_image_1.OktetoRuntimeImage[newParam.javaVersion || "java11"]; new okteto_file_1.OktetoTemplate().create(newParam.projectName, image, okteto_file_1.OktetoSupport.fromPackageManager(newParam.javaManagement), newParam.applicationPort, newParam.applicationPort, newParam.projectPathDetails.projectPath); } generateProjectFolder(projectPath) { const projectFullPath = file_system_utils_1.FileSystemUtils.fullPath(projectPath); const projectSafiraPath = file_system_utils_1.FileSystemUtils.buildPath(projectFullPath, ".safira"); file_system_utils_1.FileSystemUtils.createFolder(projectSafiraPath); return { projectPath: projectFullPath, projectSafiraPath: projectSafiraPath, }; } } exports.GenerateProjectImpl = GenerateProjectImpl;