@jnxplus/nx-gradle
Version:
[](https://badge.fury.io/js/@jnxplus%2Fnx-gradle)
147 lines • 7.86 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");
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