UNPKG

@jnxplus/nx-gradle

Version:

[![npm version](https://badge.fury.io/js/@jnxplus%2Fnx-gradle.svg)](https://badge.fury.io/js/@jnxplus%2Fnx-gradle)

201 lines 11.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = default_1; const tslib_1 = require("tslib"); const common_1 = require("@jnxplus/common"); const devkit_1 = require("@nx/devkit"); const path = require("path"); const utils_1 = require("../../utils"); const libs_versions_toml_1 = require("../../utils/libs-versions-toml"); function default_1(tree, options) { return tslib_1.__awaiter(this, void 0, void 0, function* () { yield applicationGenerator(tree, options); }); } function normalizeOptions(tree, options) { const simpleProjectName = (0, common_1.generateSimpleProjectName)({ name: options.name, }); const projectName = (0, common_1.generateProjectName)(simpleProjectName, { name: options.name, simpleName: options.simpleName, directory: options.directory, }); const projectDirectory = (0, common_1.generateProjectDirectory)(simpleProjectName, { directory: options.directory, }); const gradleRootDirectory = (0, utils_1.getGradleRootDirectory)(); const projectRoot = (0, common_1.generateProjectRoot)(gradleRootDirectory, projectDirectory); const parsedTags = (0, common_1.parseTags)(options.tags); const appClassName = (0, common_1.generateAppClassName)(projectName, { framework: options.framework, }); const packageName = (0, common_1.generatePackageName)(simpleProjectName, { simplePackageName: options.simplePackageName, groupId: options.groupId, directory: options.directory, }); const packageDirectory = (0, common_1.generatePackageDirectory)(packageName); const isCustomPort = (0, common_1.isCustomPortFunction)({ port: options.port }); const dsl = (0, utils_1.getDsl)(tree, gradleRootDirectory); const kotlinExtension = dsl === 'kotlin' ? '.kts' : ''; const versionManagement = (0, utils_1.getVersionManagement)(tree, gradleRootDirectory); const qVersion = (0, utils_1.findQuarkusVersion)(options.framework, gradleRootDirectory, versionManagement); const basePackage = (0, common_1.generateBasePackage)(options.groupId); const plugin = (0, utils_1.getPlugin)(); const buildTargetName = (0, common_1.getBuildTargetName)(plugin); const buildImageTargetName = (0, common_1.getBuildImageTargetName)(plugin); const serveTargetName = (0, common_1.getServeTargetName)(plugin); const testTargetName = (0, common_1.getTestTargetName)(plugin); const integrationTestTargetName = (0, common_1.getIntegrationTestTargetName)(plugin); return Object.assign(Object.assign({}, options), { projectName, projectRoot, projectDirectory, parsedTags, appClassName, packageName, packageDirectory, isCustomPort, dsl, kotlinExtension, quarkusVersion: qVersion, gradleRootDirectory, versionManagement, basePackage, buildTargetName, buildImageTargetName, serveTargetName, testTargetName, integrationTestTargetName }); } function addFiles(tree, options) { const templateOptions = Object.assign(Object.assign(Object.assign({}, options), (0, devkit_1.names)(options.name)), { offsetFromRoot: (0, devkit_1.offsetFromRoot)(options.projectRoot), template: '' }); if (options.framework === 'spring-boot') { addSpringBootFiles(tree, options, templateOptions); } if (options.framework === 'quarkus') { addQuarkusFiles(tree, options, templateOptions); } if (options.framework === 'micronaut') { addMicronautFiles(tree, options, templateOptions); } if (options.framework === 'none') { addNoneFiles(tree, options, templateOptions); } } function addNoneFiles(tree, options, templateOptions) { (0, devkit_1.generateFiles)(tree, path.join(__dirname, 'files', 'none', options.language), options.projectRoot, templateOptions); const fileExtension = options.language === 'java' ? 'java' : 'kt'; if (options.minimal) { tree.delete((0, devkit_1.joinPathFragments)(options.projectRoot, `/src/main/${options.language}/${options.packageDirectory}/App.${fileExtension}`)); tree.delete((0, devkit_1.joinPathFragments)(options.projectRoot, `/src/test/${options.language}/${options.packageDirectory}/AppTest.${fileExtension}`)); tree.delete((0, devkit_1.joinPathFragments)(options.projectRoot, `/src/test/resources/application${options.configFormat}`)); } } function addSpringBootFiles(tree, options, templateOptions) { (0, devkit_1.generateFiles)(tree, path.join(__dirname, 'files', 'spring-boot', options.language), options.projectRoot, templateOptions); const fileExtension = options.language === 'java' ? 'java' : 'kt'; if (options.packaging === 'jar') { tree.delete((0, devkit_1.joinPathFragments)(options.projectRoot, `/src/main/${options.language}/${options.packageDirectory}/ServletInitializer.${fileExtension}`)); } if (options.minimal) { tree.delete((0, devkit_1.joinPathFragments)(options.projectRoot, `/src/main/${options.language}/${options.packageDirectory}/HelloController.${fileExtension}`)); tree.delete((0, devkit_1.joinPathFragments)(options.projectRoot, `/src/test/${options.language}/${options.packageDirectory}/HelloControllerTests.${fileExtension}`)); tree.delete((0, devkit_1.joinPathFragments)(options.projectRoot, `/src/test/resources/application${options.configFormat}`)); if (options.language === 'kotlin') { tree.delete((0, devkit_1.joinPathFragments)(options.projectRoot, '/src/test/resources/junit-platform.properties')); } } } function addQuarkusFiles(tree, options, templateOptions) { (0, devkit_1.generateFiles)(tree, path.join(__dirname, 'files', 'quarkus', options.language), options.projectRoot, templateOptions); if (options.minimal) { const fileExtension = options.language === 'java' ? 'java' : 'kt'; tree.delete((0, devkit_1.joinPathFragments)(options.projectRoot, `/src/main/${options.language}/${options.packageDirectory}/GreetingResource.${fileExtension}`)); tree.delete((0, devkit_1.joinPathFragments)(options.projectRoot, `/src/test/${options.language}/${options.packageDirectory}/GreetingResourceTest.${fileExtension}`)); tree.delete((0, devkit_1.joinPathFragments)(options.projectRoot, `/src/native-test/${options.language}/${options.packageDirectory}/GreetingResourceIT.${fileExtension}`)); tree.delete((0, devkit_1.joinPathFragments)(options.projectRoot, `/src/main/resources/META-INF/resources/index.html`)); } } function addMicronautFiles(tree, options, templateOptions) { (0, devkit_1.generateFiles)(tree, path.join(__dirname, 'files', 'micronaut', options.language), options.projectRoot, templateOptions); if (options.minimal) { const fileExtension = options.language === 'java' ? 'java' : 'kt'; tree.delete((0, devkit_1.joinPathFragments)(options.projectRoot, `/src/main/${options.language}/${options.packageDirectory}/HelloController.${fileExtension}`)); tree.delete((0, devkit_1.joinPathFragments)(options.projectRoot, `/src/test/${options.language}/${options.packageDirectory}/HelloControllerTest.${fileExtension}`)); } } function applicationGenerator(tree, options) { return tslib_1.__awaiter(this, void 0, void 0, function* () { var _a; const normalizedOptions = normalizeOptions(tree, options); yield (0, libs_versions_toml_1.addMissingCode)(tree, normalizedOptions.versionManagement, normalizedOptions.gradleRootDirectory, options.framework, options.language); const projectConfiguration = { root: normalizedOptions.projectRoot, projectType: 'application', sourceRoot: `./${normalizedOptions.projectRoot}/src`, targets: { [normalizedOptions.buildTargetName]: { executor: '@jnxplus/nx-gradle:run-task', outputs: [`{projectRoot}/build`], options: { task: 'build', }, }, [normalizedOptions.buildImageTargetName]: {}, [normalizedOptions.serveTargetName]: { executor: '@jnxplus/nx-gradle:run-task', options: { task: 'run', }, }, [normalizedOptions.testTargetName]: { executor: '@jnxplus/nx-gradle:run-task', options: { task: 'test', }, }, [normalizedOptions.integrationTestTargetName]: {}, }, tags: normalizedOptions.parsedTags, }; const targets = (_a = projectConfiguration.targets) !== null && _a !== void 0 ? _a : {}; if (options.framework === 'spring-boot') { targets[`${normalizedOptions.buildTargetName}`].options = Object.assign(Object.assign({}, targets[`${normalizedOptions.buildTargetName}`].options), { task: normalizedOptions.packaging === 'war' ? 'bootWar' : 'bootJar' }); targets[`${normalizedOptions.serveTargetName}`].options = Object.assign(Object.assign({}, targets[`${normalizedOptions.serveTargetName}`].options), { task: 'bootRun' }); targets[`${normalizedOptions.buildImageTargetName}`] = { executor: '@jnxplus/nx-gradle:run-task', options: { task: 'bootBuildImage', }, }; } if (options.framework === 'quarkus') { targets[`${normalizedOptions.buildTargetName}`].options = Object.assign(Object.assign({}, targets[`${normalizedOptions.buildTargetName}`].options), { task: 'quarkusBuild' }); targets[`${normalizedOptions.serveTargetName}`].options = Object.assign(Object.assign({}, targets[`${normalizedOptions.serveTargetName}`].options), { task: 'quarkusDev' }); targets[`${normalizedOptions.buildImageTargetName}`] = { executor: '@jnxplus/nx-gradle:quarkus-build-image', }; targets[`${normalizedOptions.integrationTestTargetName}`] = { executor: '@jnxplus/nx-gradle:run-task', options: { task: 'quarkusIntTest', }, }; } if (options.framework === 'micronaut') { targets[`${normalizedOptions.buildImageTargetName}`] = { executor: '@jnxplus/nx-gradle:run-task', options: { task: 'dockerBuild', }, }; } (0, common_1.clearEmpties)(targets); (0, devkit_1.addProjectConfiguration)(tree, normalizedOptions.projectName, projectConfiguration); addFiles(tree, normalizedOptions); (0, utils_1.addProjectToGradleSetting)(tree, normalizedOptions); if (!options.skipFormat) { yield (0, devkit_1.formatFiles)(tree); } }); } //# sourceMappingURL=generator.js.map