UNPKG

@veecode-platform/safira-cli

Version:

Generate a microservice project from your spec.

71 lines (70 loc) 4.75 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.QuarkusGeneratorImpl = void 0; const tslib_1 = require("tslib"); const file_system_utils_1 = require("../../../utils/file-system-utils"); const uuid = tslib_1.__importStar(require("uuid")); const fs_1 = require("fs"); const code_quarkus_service_1 = require("./code-quarkus-service"); const application_properties_1 = require("../application-properties"); const codegen_quarkus_1 = require("./codegen-quarkus"); const decompress_1 = tslib_1.__importDefault(require("decompress")); const quarkus_dependency_updater_1 = require("./quarkus-dependency-updater"); const create_test_file_1 = require("../../template/java/quarkus/create-test-file"); const controller_creator_1 = require("../../template/java/quarkus/controller-creator"); const service_creator_1 = require("../../template/java/quarkus/service-creator"); const exception_mapper_creator_1 = require("../../template/java/quarkus/exception-mapper-creator"); class QuarkusGeneratorImpl { async generate(param) { const openapiFullPath = file_system_utils_1.FileSystemUtils.fullPath(param.openapiFilePath); const random = uuid.v4(); const tmpFolder = file_system_utils_1.FileSystemUtils.buildPath(param.projectSafiraPath, "tmp"); const tmpKeyFolder = file_system_utils_1.FileSystemUtils.buildPath(tmpFolder, random); const zipFolder = file_system_utils_1.FileSystemUtils.buildPath(tmpKeyFolder, "code-quarkus"); const zipFile = file_system_utils_1.FileSystemUtils.buildPath(zipFolder, `${param.projectName}.zip`); file_system_utils_1.FileSystemUtils.createFolder(zipFolder); await new Promise((resolve, reject) => { code_quarkus_service_1.CodeQuarkusService.instance.getCode(param.projectName, { packageManager: param.javaPackManager, packageName: param.javaPackage, javaVersion: param.javaVersion, quarkusVersion: param.quarkusVersion, }, param.dataBase).pipe((0, fs_1.createWriteStream)(zipFile)) .on("close", async () => { await (0, decompress_1.default)(zipFile, param.newProjectRoot); resolve("SUCCESS"); }) .on("error", err => { console.log("ERROR: " + err); reject(err); }); }); const openapiGenerated = file_system_utils_1.FileSystemUtils.buildPath(tmpKeyFolder, "openapi-project"); file_system_utils_1.FileSystemUtils.createFolder(openapiGenerated); const codegen = new codegen_quarkus_1.CodegenQuarkus(); console.log("FINISH SwaggerCodegenCli process"); const swaggerSrcFolder = file_system_utils_1.FileSystemUtils.buildPath(openapiGenerated, "src", "gen", "java"); const destinyMainFolder = file_system_utils_1.FileSystemUtils.buildPath(param.projectPath, "src", "main"); const destinySrcFolder = file_system_utils_1.FileSystemUtils.buildPath(param.projectPath, "src", "main", "java"); file_system_utils_1.FileSystemUtils.createFolder(destinySrcFolder); file_system_utils_1.FileSystemUtils.copyFolderRecursiveSync(swaggerSrcFolder, destinyMainFolder); const resourcesFile = file_system_utils_1.FileSystemUtils.buildPath(param.projectPath, "src", "main", "resources"); const properties = new application_properties_1.DefaultApplicationProperties(); const quarkusProperties = [ { key: "quarkus.http.port", value: param.applicationPort }, { key: "%okteto.quarkus.http.host", value: "0.0.0.0" }, { key: "%okteto.quarkus.devservices.enable", value: "false" }, ]; if (param.useDataBase) { quarkusProperties.push({ key: "quarkus.datasource.jdbc.url", value: `jdbc:${param.dataBase}://${param.dataBaseUrl}` }, { key: "quarkus.datasource.db-kind", value: param.dataBase }, { key: "quarkus.datasource.username", value: param.dataBaseUser }, { key: "quarkus.datasource.password", value: param.dataBasePassword }); } await properties.addProperties(resourcesFile, quarkusProperties); new quarkus_dependency_updater_1.QuarkusDependencyUpdater().update(param.projectPath, param.javaPackManager); new create_test_file_1.QuarkusTestFile().create(param.projectPath); new controller_creator_1.QuarkusControllerCreator().create(param.projectPath); new service_creator_1.ServiceCreator().create(param.projectPath); new exception_mapper_creator_1.ExceptionMapperCreator().create(param.projectPath); file_system_utils_1.FileSystemUtils.deleteFolder(tmpFolder); } } exports.QuarkusGeneratorImpl = QuarkusGeneratorImpl;