UNPKG

@jnxplus/nx-gradle

Version:

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

206 lines 11.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.addLibsVersionsToml = addLibsVersionsToml; exports.addMissingCode = addMissingCode; const tslib_1 = require("tslib"); const common_1 = require("@jnxplus/common"); const devkit_1 = require("@nx/devkit"); const regex1 = /\[versions]/; const regex2 = /\[libraries]/; const regex3 = /\[plugins]/; const regex = /plugins\s*{/; function addLibsVersionsToml(tree, gradleRootDirectory, javaVersion, preset, language) { const libsVersionsTomlPath = (0, devkit_1.joinPathFragments)(gradleRootDirectory, 'gradle', 'libs.versions.toml'); const libsVersionsTomlContent = getLibsVersionsTomlContent(javaVersion, preset, language); if (!tree.exists(libsVersionsTomlPath)) { tree.write(libsVersionsTomlPath, libsVersionsTomlContent); } } function getLibsVersionsTomlContent(javaVersion, preset, language) { const elements = getElements(javaVersion, preset, language); return `[versions]\n${elements.versions.join('\n')}\n\n[libraries]\n${elements.libraries.join('\n')}\n\n[plugins]\n${elements.plugins.join('\n')}`; } function getElements(javaVersion, preset, language, // eslint-disable-next-line @typescript-eslint/no-explicit-any catalog) { const elements = { versions: [], libraries: [], plugins: [] }; if (!(catalog === null || catalog === void 0 ? void 0 : catalog.versions['java'])) { elements.versions.push(`java = "${javaVersion}"`); } if (!(catalog === null || catalog === void 0 ? void 0 : catalog.plugins['github-khalilou88-jnxplus'])) { elements.plugins.push(`github-khalilou88-jnxplus = { id = "io.github.khalilou88.jnxplus", version = "${common_1.jnxplusGradlePluginVersion}" }`); } if (language === 'kotlin') { if (!(catalog === null || catalog === void 0 ? void 0 : catalog.versions['kotlin'])) { elements.versions.push(`kotlin = "${common_1.kotlinVersion}"`); } if (!(catalog === null || catalog === void 0 ? void 0 : catalog.plugins['jetbrains-kotlin-jvm'])) { elements.plugins.push('jetbrains-kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }'); } } if (preset === 'spring-boot') { if (!(catalog === null || catalog === void 0 ? void 0 : catalog.versions['spring-boot'])) { elements.versions.push(`spring-boot = "${common_1.springBootVersion}"`); } if (!(catalog === null || catalog === void 0 ? void 0 : catalog.plugins['springframework-boot'])) { elements.plugins.push('springframework-boot = { id = "org.springframework.boot", version.ref = "spring-boot" }'); } if (!(catalog === null || catalog === void 0 ? void 0 : catalog.plugins['spring-dependency-management'])) { elements.plugins.push(`spring-dependency-management = { id = "io.spring.dependency-management", version = "${common_1.springDependencyManagementVersion}" }`); } if (language === 'kotlin' && !(catalog === null || catalog === void 0 ? void 0 : catalog.plugins['jetbrains-kotlin-plugin-spring'])) { elements.plugins.push('jetbrains-kotlin-plugin-spring = { id = "org.jetbrains.kotlin.plugin.spring", version.ref = "kotlin" }'); } } if (preset === 'quarkus') { if (!(catalog === null || catalog === void 0 ? void 0 : catalog.versions['quarkus'])) { elements.versions.push(`quarkus = "${common_1.quarkusVersion}"`); } if (!(catalog === null || catalog === void 0 ? void 0 : catalog.libraries['quarkus-platform-quarkus-bom'])) { elements.libraries.push('quarkus-platform-quarkus-bom = { module = "io.quarkus.platform:quarkus-bom", version.ref = "quarkus" }'); } if (language === 'kotlin' && !(catalog === null || catalog === void 0 ? void 0 : catalog.plugins['jetbrains-kotlin-plugin-allopen'])) { elements.plugins.push('jetbrains-kotlin-plugin-allopen = { id = "org.jetbrains.kotlin.plugin.allopen", version.ref = "kotlin" }'); } if (!(catalog === null || catalog === void 0 ? void 0 : catalog.plugins['quarkus'])) { elements.plugins.push('quarkus = { id = "io.quarkus", version.ref = "quarkus" }'); } } if (preset === 'micronaut') { if (!(catalog === null || catalog === void 0 ? void 0 : catalog.versions['micronaut'])) { elements.versions.push(`micronaut = "${common_1.micronautVersion}"`); } if (language === 'kotlin' && !(catalog === null || catalog === void 0 ? void 0 : catalog.plugins['jetbrains-kotlin-plugin-allopen'])) { elements.plugins.push('jetbrains-kotlin-plugin-allopen = { id = "org.jetbrains.kotlin.plugin.allopen", version.ref = "kotlin" }'); } if (!(catalog === null || catalog === void 0 ? void 0 : catalog.plugins['micronaut-aot'])) { elements.plugins.push('micronaut-aot = { id = "io.micronaut.aot", version = "4.2.1" }'); } if (!(catalog === null || catalog === void 0 ? void 0 : catalog.plugins['micronaut-application'])) { elements.plugins.push('micronaut-application = { id = "io.micronaut.application", version = "4.2.1" }'); } if (!(catalog === null || catalog === void 0 ? void 0 : catalog.plugins['micronaut-library'])) { elements.plugins.push('micronaut-library = { id = "io.micronaut.library", version = "4.2.1" }'); } if (!(catalog === null || catalog === void 0 ? void 0 : catalog.plugins['google-devtools-ksp'])) { elements.plugins.push(`google-devtools-ksp = { id = "com.google.devtools.ksp", version = "${common_1.kspVersion}" }`); } if (!(catalog === null || catalog === void 0 ? void 0 : catalog.plugins['github-johnrengelman-shadow'])) { elements.plugins.push(`github-johnrengelman-shadow = { id = "com.github.johnrengelman.shadow", version = "${common_1.shadowVersion}" }`); } } return elements; } function addMissingCode(tree, versionManagement, gradleRootDirectory, framework, language) { return tslib_1.__awaiter(this, void 0, void 0, function* () { if (versionManagement !== 'version-catalog') { return; } const { parse } = yield Function("return import('smol-toml')")(); const libsVersionsTomlPath = (0, devkit_1.joinPathFragments)(gradleRootDirectory, 'gradle', 'libs.versions.toml'); const libsVersionsTomlContent = tree.read(libsVersionsTomlPath, 'utf-8') || ''; const catalog = parse(libsVersionsTomlContent); const elements = getElements('17', framework, language, catalog); updateLibsVersionsToml(tree, libsVersionsTomlPath, libsVersionsTomlContent, elements); updateBuildGradle(tree, gradleRootDirectory, elements.plugins); updateSettingsGradle(tree, gradleRootDirectory, framework); }); } function updateLibsVersionsToml(tree, libsVersionsTomlPath, libsVersionsTomlContent, elements) { let fileChanged = false; let newLibsVersionsTomlContent1; if (elements.versions.length > 0) { newLibsVersionsTomlContent1 = libsVersionsTomlContent.replace(regex1, `[versions]\n${elements.versions.join('\n')}`); fileChanged = true; } else { newLibsVersionsTomlContent1 = libsVersionsTomlContent; } let newLibsVersionsTomlContent2; if (elements.libraries.length > 0) { newLibsVersionsTomlContent2 = newLibsVersionsTomlContent1.replace(regex2, `[libraries]\n${elements.libraries.join('\n')}`); fileChanged = true; } else { newLibsVersionsTomlContent2 = newLibsVersionsTomlContent1; } let newLibsVersionsTomlContent; if (elements.plugins.length > 0) { newLibsVersionsTomlContent = newLibsVersionsTomlContent2.replace(regex3, `[plugins]\n${elements.plugins.join('\n')}`); fileChanged = true; } else { newLibsVersionsTomlContent = newLibsVersionsTomlContent2; } if (fileChanged) { tree.write(libsVersionsTomlPath, newLibsVersionsTomlContent); } } function updateBuildGradle(tree, gradleRootDirectory, plugins) { if (plugins.length > 0) { const buildGradlePath = (0, devkit_1.joinPathFragments)(gradleRootDirectory, 'build.gradle'); const buildGradleKtsPath = (0, devkit_1.joinPathFragments)(gradleRootDirectory, 'build.gradle.kts'); const pluginAlias = plugins.map((p) => `libs.plugins.${p.split('=')[0].trim().replace(new RegExp(/-/, 'g'), '.')}`); if (tree.exists(buildGradlePath)) { const buildGradleContent = tree.read(buildGradlePath, 'utf-8') || ''; const plugins = pluginAlias.map((alias) => `alias ${alias} apply false`); const newBuildGradleContent = buildGradleContent.replace(regex, `plugins {\n${plugins.join('\n')}`); tree.write(buildGradlePath, newBuildGradleContent); } if (tree.exists(buildGradleKtsPath)) { const buildGradleKtsContent = tree.read(buildGradleKtsPath, 'utf-8') || ''; const plugins = pluginAlias.map((alias) => `alias(${alias}) apply false`); const newBuildGradleKtsContent = buildGradleKtsContent.replace(regex, `plugins {\n${plugins.join('\n')}`); tree.write(buildGradleKtsPath, newBuildGradleKtsContent); } } } function updateSettingsGradle(tree, gradleRootDirectory, framework) { if (framework === 'micronaut') { const settingsGradlePath = (0, devkit_1.joinPathFragments)(gradleRootDirectory, 'settings.gradle'); const settingsGradleKtsPath = (0, devkit_1.joinPathFragments)(gradleRootDirectory, 'settings.gradle.kts'); if (tree.exists(settingsGradlePath)) { const settingsGradleContent = tree.read(settingsGradlePath, 'utf-8') || ''; const plugins = parsePluginIds(settingsGradleContent); if (plugins.includes('io.micronaut.platform.catalog')) { return; } let newSettingsGradleContent; if (plugins.length === 0) { newSettingsGradleContent = settingsGradleContent.replace(regex, `plugins {\n\tid 'io.micronaut.platform.catalog' version '${common_1.micronautPlatformCatalog}'\n}`); } else { newSettingsGradleContent = settingsGradleContent.replace(regex, `plugins {\n\tid 'io.micronaut.platform.catalog' version '${common_1.micronautPlatformCatalog}'\n`); } tree.write(settingsGradlePath, newSettingsGradleContent); } if (tree.exists(settingsGradleKtsPath)) { const settingsGradleKtsContent = tree.read(settingsGradleKtsPath, 'utf-8') || ''; const plugins = parsePluginIds(settingsGradleKtsContent); if (plugins.includes('io.micronaut.platform.catalog')) { return; } let newSettingsGradleKtsContent; if (plugins.length === 0) { newSettingsGradleKtsContent = settingsGradleKtsContent.replace(regex, `plugins {\n\tid("io.micronaut.platform.catalog") version "${common_1.micronautPlatformCatalog}"\n}`); } else { newSettingsGradleKtsContent = settingsGradleKtsContent.replace(regex, `plugins {\n\tid("io.micronaut.platform.catalog") version "${common_1.micronautPlatformCatalog}"\n`); } tree.write(settingsGradleKtsPath, newSettingsGradleKtsContent); } } } function parsePluginIds(newSettingsGradle) { const pluginIdsRegex = /id\s*\(*['"]([^'"]+)['"]/g; const pluginIds = []; let match; while ((match = pluginIdsRegex.exec(newSettingsGradle)) !== null) { pluginIds.push(match[1]); } return pluginIds; } //# sourceMappingURL=libs-versions-toml.js.map