@veecode-platform/safira-cli
Version:
Generate a microservice project from your spec.
71 lines (70 loc) • 4.75 kB
JavaScript
"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;