@nxrocks/nx-quarkus
Version:
Nx Plugin to generate, run, package, build (and more) Quarkus projects inside your Nx workspace
98 lines • 4.44 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getProjectTypeAndTargetsFromFile = getProjectTypeAndTargetsFromFile;
exports.getProjectTypeAndTargetsFromOptions = getProjectTypeAndTargetsFromOptions;
const devkit_1 = require("@nx/devkit");
const common_jvm_1 = require("@nxrocks/common-jvm");
const __1 = require("..");
const plugin_1 = require("../graph/plugin");
function getProjectTypeAndTargetsFromFile(projectRootFile, options) {
const { root, name } = (0, common_jvm_1.getNameAndRoot)(projectRootFile);
const buildSystem = (0, common_jvm_1.hasMavenProject)(root)
? 'MAVEN'
: name.endsWith('.kts')
? 'GRADLE_KOTLIN_DSL'
: 'GRADLE';
const runFromParentModule = !(0, common_jvm_1.hasMavenWrapper)(root) && !(0, common_jvm_1.hasGradleWrapper)(root);
let skipFormat = true;
let projectType = 'library';
if (buildSystem === 'MAVEN') {
skipFormat = (0, common_jvm_1.hasMavenPlugin)(root, common_jvm_1.SPOTLESS_MAVEN_PLUGIN_GROUP_ID, common_jvm_1.SPOTLESS_MAVEN_PLUGIN_ARTIFACT_ID);
projectType = (0, common_jvm_1.hasMavenPlugin)(root, '${quarkus.platform.group-id}', 'quarkus-maven-plugin')
? 'application'
: 'library';
}
else {
const projectContent = (0, common_jvm_1.getProjectFileContent)({ root }, `build${(0, common_jvm_1.getGradleBuildFilesExtension)({ root })}`);
skipFormat = (0, common_jvm_1.hasGradlePlugin)(projectContent, common_jvm_1.SPOTLESS_GRADLE_PLUGIN_ID);
projectType =
(0, common_jvm_1.getGradlePlugin)(projectContent, 'io.quarkus')?.applied === false
? 'library'
: 'application';
}
return getProjectTypeAndTargets(root, projectType, buildSystem, runFromParentModule, skipFormat, (0, plugin_1.normalizePluginOptions)(options));
}
function getProjectTypeAndTargetsFromOptions(options) {
return getProjectTypeAndTargets(options.projectRoot, options.projectType, options.buildSystem, !options.keepProjectLevelWrapper, options.skipFormat, (0, plugin_1.normalizePluginOptions)());
}
function getProjectTypeAndTargets(projectRoot, projectType, buildSystem, runFromParentModule, skipFormat, pluginOptions) {
const commands = [
pluginOptions.buildTargetName,
pluginOptions.installTargetName,
pluginOptions.testTargetName,
pluginOptions.cleanTargetName,
];
if (!skipFormat) {
commands.push(pluginOptions.formatTargetName, pluginOptions.applyFormatTargetName, pluginOptions.checkFormatTargetName);
}
const appOnlyCommands = [
pluginOptions.devTargetName,
pluginOptions.serveTargetName,
pluginOptions.remoteDevTargetName,
pluginOptions.packageTargetName,
pluginOptions.addExtensionTargetName,
pluginOptions.listExtensionsTargetName,
];
if (projectType === 'application') {
//only 'application' projects should have 'quarkus' related commands
commands.push(...appOnlyCommands);
}
const targets = {};
for (const command of commands) {
targets[command] = {
executor: `${__1.NX_QUARKUS_PKG}:${command}`,
options: {
root: projectRoot,
runFromParentModule,
},
...([
pluginOptions.buildTargetName,
pluginOptions.installTargetName,
].includes(command)
? { cache: true }
: {}),
...([
pluginOptions.buildTargetName,
pluginOptions.installTargetName,
pluginOptions.devTargetName,
pluginOptions.remoteDevTargetName,
pluginOptions.serveTargetName,
].includes(command)
? { dependsOn: [`^${pluginOptions.installTargetName}`] }
: {}),
...([
pluginOptions.buildTargetName,
pluginOptions.installTargetName,
pluginOptions.testTargetName,
].includes(command)
? {
outputs: [
(0, devkit_1.joinPathFragments)('{workspaceRoot}', projectRoot, buildSystem === 'MAVEN' ? 'target' : 'build'),
],
}
: {}),
};
}
return { projectType, targets };
}
//# sourceMappingURL=plugin-utils.js.map