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