UNPKG

generator-begcode

Version:

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

108 lines (107 loc) 5.06 kB
import { existsSync } from 'fs'; import chalk from 'chalk'; import { convertSecretToBase64, createBase64Secret, removeFieldsWithNullishValues } from '../../base/support/index.js'; import { applicationTypes, buildToolTypes, getConfigWithDefaults } from '../../../jdl/jhipster/index.js'; import { GENERATOR_JHIPSTER } from '../../generator-constants.js'; import { loadDeploymentConfig } from '../../base-workspaces/internal/index.js'; import { loadDerivedAppConfig } from '../../app/support/index.js'; import { loadDerivedPlatformConfig, loadDerivedServerConfig } from '../../server/support/index.js'; const { MAVEN } = buildToolTypes; const { MONOLITH, MICROSERVICE, GATEWAY } = applicationTypes; export { checkDocker } from '../../docker/support/index.js'; export function checkImages() { this.log.log('\nChecking Docker images in applications directories...'); let imagePath = ''; let runCommand = ''; this.hasWarning = false; this.warningMessage = 'To generate the missing Docker image(s), please run:\n'; this.appsFolders.forEach((appsFolder, index) => { const appConfig = this.appConfigs[index]; if (appConfig.buildTool === MAVEN) { imagePath = this.destinationPath(`${this.directoryPath + appsFolder}/target/jib-cache`); runCommand = `./mvnw -ntp -Pprod verify jib:dockerBuild${process.arch === 'arm64' ? ' -Djib-maven-plugin.architecture=arm64' : ''}`; } else { imagePath = this.destinationPath(`${this.directoryPath + appsFolder}/build/jib-cache`); runCommand = `./gradlew bootJar -Pprod jibDockerBuild${process.arch === 'arm64' ? ' -PjibArchitecture=arm64' : ''}`; } if (!existsSync(imagePath)) { this.hasWarning = true; this.warningMessage += ` ${chalk.cyan(runCommand)} in ${this.destinationPath(this.directoryPath + appsFolder)}\n`; } }); } export function generateJwtSecret() { if (this.jwtSecretKey === undefined) { this.jwtSecretKey = this.jhipsterConfig.jwtSecretKey = createBase64Secret(this.options.reproducibleTests); } } export function configureImageNames() { for (let i = 0; i < this.appsFolders.length; i++) { const originalImageName = this.appConfigs[i].baseName.toLowerCase(); const targetImageName = this.dockerRepositoryName ? `${this.dockerRepositoryName}/${originalImageName}` : originalImageName; this.appConfigs[i].targetImageName = targetImageName; } } export function loadConfigs() { this.appConfigs = []; this.gatewayNb = 0; this.monolithicNb = 0; this.microserviceNb = 0; const serverPort = 8080; const getJhipsterConfig = yoRcPath => this.createStorage(yoRcPath, GENERATOR_JHIPSTER); this.log.debug(`Apps folders: ${this.appsFolders}`); this.appsFolders.forEach((appFolder, index) => { const path = this.destinationPath(`${this.directoryPath + appFolder}`); this.log.debug(chalk.red.bold(`App folder ${path}`)); if (this.fs.exists(`${path}/.yo-rc.json`)) { const config = getConfigWithDefaults(removeFieldsWithNullishValues(getJhipsterConfig(`${path}/.yo-rc.json`).getAll())); config.composePort = serverPort + index; this.log.debug(chalk.red.bold(`${config.baseName} has compose port ${config.composePort} and appIndex ${config.applicationIndex}`)); loadDerivedAppConfig({ application: config }); loadDerivedPlatformConfig({ application: config }); loadDerivedServerConfig({ application: config }); if (config.applicationType === MONOLITH) { this.monolithicNb++; } else if (config.applicationType === GATEWAY) { this.gatewayNb++; } else if (config.applicationType === MICROSERVICE) { this.microserviceNb++; } this.portsToBind = this.monolithicNb + this.gatewayNb; config.appFolder = appFolder; this.appConfigs.push(config); } else { throw new Error(`Application '${appFolder}' is not found in the path '${this.directoryPath}'`); } }); } export function setClusteredApps() { for (let i = 0; i < this.appsFolders.length; i++) { for (let j = 0; j < this.clusteredDbApps.length; j++) { this.appConfigs[i].clusteredDb = this.appsFolders[i] === this.clusteredDbApps[j]; } } } export function loadFromYoRc() { loadDeploymentConfig.call(this); this.useKafka = false; this.usePulsar = false; this.useMemcached = false; this.useRedis = false; loadConfigs.call(this); if (this.microserviceNb > 0 || this.gatewayNb > 0) { this.deploymentApplicationType = MICROSERVICE; } else { this.deploymentApplicationType = MONOLITH; } setClusteredApps.call(this); if (!this.adminPassword) { this.adminPassword = 'admin'; this.adminPasswordBase64 = convertSecretToBase64(this.adminPassword); } }