@jnxplus/nx-maven
Version:
[](https://badge.fury.io/js/@jnxplus%2Fnx-maven)
146 lines • 7.79 kB
JavaScript
;
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