UNPKG

@jnxplus/nx-maven

Version:

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

146 lines 7.79 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"); function default_1(tree, options) { return tslib_1.__awaiter(this, void 0, void 0, function* () { yield libraryGenerator(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 mavenRootDirectory = (0, utils_1.getMavenRootDirectory)(); const projectRoot = (0, common_1.generateProjectRoot)(mavenRootDirectory, projectDirectory); const parsedTags = (0, common_1.parseTags)(options.tags); const packageName = (0, common_1.generatePackageName)(simpleProjectName, { simplePackageName: options.simplePackageName, groupId: options.groupId, directory: options.directory, }); const packageDirectory = (0, common_1.generatePackageDirectory)(packageName); const parsedProjects = (0, common_1.parseProjects)(options.projects); const [relativePath, parentProjectName, parentGroupId, parentProjectVersion] = (0, utils_1.getParentProjectValues)(tree, mavenRootDirectory, projectRoot, options.parentProject); const plugin = (0, utils_1.getPlugin)(); const buildTargetName = (0, common_1.getBuildTargetName)(plugin); const testTargetName = (0, common_1.getTestTargetName)(plugin); const aggregatorProjectRoot = (0, utils_1.getAggregatorProjectRoot)(tree, options.aggregatorProject, mavenRootDirectory); return Object.assign(Object.assign({}, options), { projectName, projectRoot, projectDirectory, parsedTags, packageName, packageDirectory, parsedProjects, parentGroupId, parentProjectName, parentProjectVersion, relativePath, mavenRootDirectory, buildTargetName, testTargetName, aggregatorProjectRoot }); } function addSpringBootFiles(tree, options, templateOptions) { (0, devkit_1.generateFiles)(tree, path.join(__dirname, 'files', 'spring-boot', options.language), options.projectRoot, templateOptions); if (options.skipStarterCode) { const fileExtension = options.language === 'java' ? 'java' : 'kt'; tree.delete((0, devkit_1.joinPathFragments)(options.projectRoot, `/src/main/${options.language}/${options.packageDirectory}/HelloService.${fileExtension}`)); tree.delete((0, devkit_1.joinPathFragments)(options.projectRoot, `/src/test/${options.language}/${options.packageDirectory}/HelloServiceTests.${fileExtension}`)); tree.delete((0, devkit_1.joinPathFragments)(options.projectRoot, `/src/test/${options.language}/${options.packageDirectory}/TestConfiguration.${fileExtension}`)); 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.skipStarterCode) { const fileExtension = options.language === 'java' ? 'java' : 'kt'; tree.delete((0, devkit_1.joinPathFragments)(options.projectRoot, `/src/main/${options.language}/${options.packageDirectory}/GreetingService.${fileExtension}`)); tree.delete((0, devkit_1.joinPathFragments)(options.projectRoot, `/src/test/${options.language}/${options.packageDirectory}/GreetingServiceTest.${fileExtension}`)); } } function addMicronautFiles(tree, options, templateOptions) { (0, devkit_1.generateFiles)(tree, path.join(__dirname, 'files', 'micronaut', options.language), options.projectRoot, templateOptions); if (options.skipStarterCode) { const fileExtension = options.language === 'java' ? 'java' : 'kt'; tree.delete((0, devkit_1.joinPathFragments)(options.projectRoot, `/src/main/${options.language}/${options.packageDirectory}/HelloService.${fileExtension}`)); tree.delete((0, devkit_1.joinPathFragments)(options.projectRoot, `/src/test/${options.language}/${options.packageDirectory}/HelloServiceTest.${fileExtension}`)); } } function addNoneFiles(tree, options, templateOptions) { (0, devkit_1.generateFiles)(tree, path.join(__dirname, 'files', 'none', options.language), options.projectRoot, templateOptions); if (options.skipStarterCode) { const fileExtension = options.language === 'java' ? 'java' : 'kt'; tree.delete((0, devkit_1.joinPathFragments)(options.projectRoot, `/src/main/${options.language}/${options.packageDirectory}/Library.${fileExtension}`)); tree.delete((0, devkit_1.joinPathFragments)(options.projectRoot, `/src/test/${options.language}/${options.packageDirectory}/LibraryTest.${fileExtension}`)); } } 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 libraryGenerator(tree, options) { return tslib_1.__awaiter(this, void 0, void 0, function* () { const normalizedOptions = normalizeOptions(tree, options); const projectConfiguration = { root: normalizedOptions.projectRoot, projectType: 'library', sourceRoot: `./${normalizedOptions.projectRoot}/src`, targets: { [normalizedOptions.buildTargetName]: { executor: '@jnxplus/nx-maven:run-task', outputs: ['{projectRoot}/target', '{options.outputDirLocalRepo}'], options: { task: 'install -DskipTests=true', }, }, [normalizedOptions.testTargetName]: { executor: '@jnxplus/nx-maven:run-task', options: { task: 'test', }, dependsOn: [`^${normalizedOptions.buildTargetName}`], }, }, tags: normalizedOptions.parsedTags, }; (0, devkit_1.addProjectConfiguration)(tree, normalizedOptions.projectName, projectConfiguration); addFiles(tree, normalizedOptions); (0, utils_1.addProjectToAggregator)(tree, { projectRoot: normalizedOptions.projectRoot, aggregatorProjectRoot: normalizedOptions.aggregatorProjectRoot, mavenRootDirectory: normalizedOptions.mavenRootDirectory, }); (0, utils_1.addLibraryToProjects)(tree, normalizedOptions); if (!options.skipFormat) { yield (0, devkit_1.formatFiles)(tree); } }); } //# sourceMappingURL=generator.js.map