UNPKG

@jnxplus/nx-gradle

Version:

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

147 lines 7.86 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 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 gradleRootDirectory = (0, utils_1.getGradleRootDirectory)(); const projectRoot = (0, common_1.generateProjectRoot)(gradleRootDirectory, 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 dsl = (0, utils_1.getDsl)(tree, gradleRootDirectory); const kotlinExtension = dsl === 'kotlin' ? '.kts' : ''; const versionManagement = (0, utils_1.getVersionManagement)(tree, gradleRootDirectory); const plugin = (0, utils_1.getPlugin)(); const buildTargetName = (0, common_1.getBuildTargetName)(plugin); const testTargetName = (0, common_1.getTestTargetName)(plugin); return Object.assign(Object.assign({}, options), { projectName, projectRoot, projectDirectory, parsedTags, packageName, packageDirectory, parsedProjects, dsl, kotlinExtension, gradleRootDirectory, versionManagement, buildTargetName, testTargetName }); } 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); 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 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 libraryGenerator(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: 'library', sourceRoot: `./${normalizedOptions.projectRoot}/src`, targets: { [normalizedOptions.buildTargetName]: { executor: '@jnxplus/nx-gradle:run-task', outputs: [`{projectRoot}/build`], options: { task: 'build', }, }, [normalizedOptions.testTargetName]: { executor: '@jnxplus/nx-gradle:run-task', options: { task: 'test', }, }, }, tags: normalizedOptions.parsedTags, }; const targets = (_a = projectConfiguration.targets) !== null && _a !== void 0 ? _a : {}; if (options.framework === 'spring-boot') { targets['build'].options = Object.assign(Object.assign({}, targets['build'].options), { task: 'jar' }); } (0, devkit_1.addProjectConfiguration)(tree, normalizedOptions.projectName, projectConfiguration); addFiles(tree, normalizedOptions); (0, utils_1.addProjectToGradleSetting)(tree, normalizedOptions); (0, utils_1.addLibraryToProjects)(tree, normalizedOptions); if (!options.skipFormat) { yield (0, devkit_1.formatFiles)(tree); } }); } //# sourceMappingURL=generator.js.map