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