UNPKG

generator-begcode

Version:

Spring Boot + Angular/React/Vue in one handy generator

39 lines (38 loc) 2.03 kB
import { applicationTypes, deploymentOptions } from '../../../jhipster/index.js'; import Validator from './validator.js'; const { Options } = deploymentOptions; const { MICROSERVICE } = applicationTypes; export default class DeploymentValidator extends Validator { constructor() { super('deployment', ['deploymentType', 'appsFolders', 'directoryPath']); } validate(jdlDeployment, options = {}) { super.validate(jdlDeployment); switch (jdlDeployment.deploymentType) { case Options.deploymentType.dockerCompose: validateDockerComposeRelatedDeployment(jdlDeployment, options); break; case Options.deploymentType.kubernetes: validateKubernetesRelatedDeployment(jdlDeployment); break; default: throw new Error(`The deployment type ${jdlDeployment.deploymentType} isn't supported.`); } } } function validateDockerComposeRelatedDeployment(jdlDeployment, options = {}) { if (jdlDeployment.gatewayType !== Options.gatewayType.springCloudGateway && options.applicationType === MICROSERVICE) { throw new Error('A gateway type must be provided when dealing with microservices and the deployment type is docker-compose.'); } } function validateKubernetesRelatedDeployment(jdlDeployment) { if (!jdlDeployment.kubernetesServiceType) { throw new Error('A kubernetes service type must be provided when dealing with kubernetes-related deployments.'); } if (jdlDeployment.istio && !jdlDeployment.ingressDomain) { throw new Error('An ingress domain must be provided when dealing with kubernetes-related deployments, with istio and when the service type is ingress.'); } if (jdlDeployment.kubernetesServiceType === Options.kubernetesServiceType.ingress && !jdlDeployment.ingressType) { throw new Error('An ingress type is required when dealing with kubernetes-related deployments and when the service type is ingress.'); } }