From 09d5aff5aca85674f3f3de0c6c068ae8dc270be4 Mon Sep 17 00:00:00 2001 From: Georgi Christov Date: Sun, 11 May 2025 21:55:45 +0200 Subject: [PATCH 1/9] Remove mavenCentral and add a WIP version catalog --- common/build.gradle.kts | 6 --- common/settings.gradle.kts | 24 +++++++---- gradle-plugins/build.gradle.kts | 41 ------------------- gradle-plugins/conventions/build.gradle.kts | 38 +++++++++++++++++ .../thecodinglove/gradleplugins/BasePlugin.kt | 0 .../gradleplugins/BinaryPlugin.kt | 0 .../gradleplugins/BuildConfigPlugin.kt | 0 .../thecodinglove/gradleplugins/Deps.kt | 0 .../gradleplugins/ModulePlugin.kt | 0 .../thecodinglove/gradleplugins/ProjectExt.kt | 6 +++ gradle-plugins/gradle.properties | 1 + gradle-plugins/settings.gradle.kts | 13 ++++++ gradle/libs.versions.toml | 21 ++++++++++ landing-page-web/build.gradle.kts | 6 --- landing-page-web/settings.gradle.kts | 14 +++++-- proxy-web/build.gradle.kts | 6 --- proxy-web/settings.gradle.kts | 12 ++++-- search/build.gradle.kts | 6 --- search/settings.gradle.kts | 22 ++++++---- self-destruct/build.gradle.kts | 6 --- self-destruct/settings.gradle.kts | 20 +++++---- settings.gradle.kts | 20 +++++---- slack-web/build.gradle.kts | 6 --- slack-web/settings.gradle.kts | 20 +++++---- slack/build.gradle.kts | 6 --- slack/settings.gradle.kts | 20 +++++---- statistics/build.gradle.kts | 6 --- statistics/settings.gradle.kts | 20 +++++---- 28 files changed, 190 insertions(+), 150 deletions(-) create mode 100644 gradle-plugins/conventions/build.gradle.kts rename gradle-plugins/{ => conventions}/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/BasePlugin.kt (100%) rename gradle-plugins/{ => conventions}/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/BinaryPlugin.kt (100%) rename gradle-plugins/{ => conventions}/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/BuildConfigPlugin.kt (100%) rename gradle-plugins/{ => conventions}/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/Deps.kt (100%) rename gradle-plugins/{ => conventions}/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/ModulePlugin.kt (100%) rename gradle-plugins/{ => conventions}/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/ProjectExt.kt (70%) create mode 100644 gradle/libs.versions.toml diff --git a/common/build.gradle.kts b/common/build.gradle.kts index db4f750a..1bff563c 100644 --- a/common/build.gradle.kts +++ b/common/build.gradle.kts @@ -1,9 +1,3 @@ -allprojects { - repositories { - mavenCentral() - } -} - val taskNames = listOf("clean", "assemble", "jsTest", "kotlinUpgradeYarnLock") taskNames.forEach { taskName -> tasks.register("${taskName}All") { diff --git a/common/settings.gradle.kts b/common/settings.gradle.kts index b59ec104..314bcedd 100644 --- a/common/settings.gradle.kts +++ b/common/settings.gradle.kts @@ -8,6 +8,20 @@ plugins { id("com.gradle.develocity") version("3.18.1") } +dependencyResolutionManagement { + repositories { + gradlePluginPortal() + } +} + +develocity { + buildScan { + termsOfUseUrl.set("https://gradle.com/help/legal-terms-of-use") + termsOfUseAgree.set("yes") + publishing.onlyIf { true } + } +} + rootProject.name = "common" include("analytics") @@ -19,12 +33,4 @@ include("network") include("network-testfixtures") include("pubsub") include("pubsub-testfixtures") -include("test") - -develocity { - buildScan { - termsOfUseUrl.set("https://gradle.com/help/legal-terms-of-use") - termsOfUseAgree.set("yes") - publishing.onlyIf { true } - } -} \ No newline at end of file +include("test") \ No newline at end of file diff --git a/gradle-plugins/build.gradle.kts b/gradle-plugins/build.gradle.kts index a1e58de3..1bff563c 100644 --- a/gradle-plugins/build.gradle.kts +++ b/gradle-plugins/build.gradle.kts @@ -1,44 +1,3 @@ -plugins { - `kotlin-dsl` -} - -gradlePlugin { - plugins.register("base-node-plugin") { - id = "base-node-plugin" - implementationClass = "com.gchristov.thecodinglove.gradleplugins.BaseNodePlugin" - } - plugins.register("base-browser-plugin") { - id = "base-browser-plugin" - implementationClass = "com.gchristov.thecodinglove.gradleplugins.BaseBrowserPlugin" - } - plugins.register("node-module-plugin") { - id = "node-module-plugin" - implementationClass = "com.gchristov.thecodinglove.gradleplugins.NodeModulePlugin" - } - plugins.register("build-config-plugin") { - id = "build-config-plugin" - implementationClass = "com.gchristov.thecodinglove.gradleplugins.BuildConfigPlugin" - } - plugins.register("browser-binary-plugin") { - id = "browser-binary-plugin" - implementationClass = "com.gchristov.thecodinglove.gradleplugins.BrowserBinaryPlugin" - } - plugins.register("node-binary-plugin") { - id = "node-binary-plugin" - implementationClass = "com.gchristov.thecodinglove.gradleplugins.NodeBinaryPlugin" - } -} - -repositories { - mavenCentral() -} - -dependencies { - implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.21") - implementation("org.jetbrains.kotlin:kotlin-serialization:1.9.21") - implementation("com.codingfeline.buildkonfig:buildkonfig-gradle-plugin:0.15.0") -} - val taskNames = listOf("clean", "assemble", "jsTest", "kotlinUpgradeYarnLock") taskNames.forEach { taskName -> tasks.register("${taskName}All") { diff --git a/gradle-plugins/conventions/build.gradle.kts b/gradle-plugins/conventions/build.gradle.kts new file mode 100644 index 00000000..fbfcbd34 --- /dev/null +++ b/gradle-plugins/conventions/build.gradle.kts @@ -0,0 +1,38 @@ +plugins { + `kotlin-dsl` +} + +gradlePlugin { + plugins.register("base-node-plugin") { + id = "base-node-plugin" + implementationClass = "com.gchristov.thecodinglove.gradleplugins.BaseNodePlugin" + } + plugins.register("base-browser-plugin") { + id = "base-browser-plugin" + implementationClass = "com.gchristov.thecodinglove.gradleplugins.BaseBrowserPlugin" + } + plugins.register("node-module-plugin") { + id = "node-module-plugin" + implementationClass = "com.gchristov.thecodinglove.gradleplugins.NodeModulePlugin" + } + plugins.register("build-config-plugin") { + id = "build-config-plugin" + implementationClass = "com.gchristov.thecodinglove.gradleplugins.BuildConfigPlugin" + } + plugins.register("browser-binary-plugin") { + id = "browser-binary-plugin" + implementationClass = "com.gchristov.thecodinglove.gradleplugins.BrowserBinaryPlugin" + } + plugins.register("node-binary-plugin") { + id = "node-binary-plugin" + implementationClass = "com.gchristov.thecodinglove.gradleplugins.NodeBinaryPlugin" + } +} + +dependencies { + compileOnly(libs.kotlin.gradlePlugin) + // TODO: Setup in a different way, figure out why it doesn't work + implementation(libs.kotlin.serialization) + // TODO: Setup in a different way, figure out why it doesn't work + implementation(libs.buildKonfig) +} \ No newline at end of file diff --git a/gradle-plugins/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/BasePlugin.kt b/gradle-plugins/conventions/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/BasePlugin.kt similarity index 100% rename from gradle-plugins/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/BasePlugin.kt rename to gradle-plugins/conventions/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/BasePlugin.kt diff --git a/gradle-plugins/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/BinaryPlugin.kt b/gradle-plugins/conventions/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/BinaryPlugin.kt similarity index 100% rename from gradle-plugins/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/BinaryPlugin.kt rename to gradle-plugins/conventions/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/BinaryPlugin.kt diff --git a/gradle-plugins/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/BuildConfigPlugin.kt b/gradle-plugins/conventions/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/BuildConfigPlugin.kt similarity index 100% rename from gradle-plugins/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/BuildConfigPlugin.kt rename to gradle-plugins/conventions/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/BuildConfigPlugin.kt diff --git a/gradle-plugins/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/Deps.kt b/gradle-plugins/conventions/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/Deps.kt similarity index 100% rename from gradle-plugins/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/Deps.kt rename to gradle-plugins/conventions/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/Deps.kt diff --git a/gradle-plugins/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/ModulePlugin.kt b/gradle-plugins/conventions/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/ModulePlugin.kt similarity index 100% rename from gradle-plugins/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/ModulePlugin.kt rename to gradle-plugins/conventions/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/ModulePlugin.kt diff --git a/gradle-plugins/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/ProjectExt.kt b/gradle-plugins/conventions/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/ProjectExt.kt similarity index 70% rename from gradle-plugins/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/ProjectExt.kt rename to gradle-plugins/conventions/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/ProjectExt.kt index 2082e032..1a90239e 100644 --- a/gradle-plugins/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/ProjectExt.kt +++ b/gradle-plugins/conventions/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/ProjectExt.kt @@ -1,10 +1,16 @@ package com.gchristov.thecodinglove.gradleplugins import org.gradle.api.Project +import org.gradle.api.artifacts.VersionCatalog +import org.gradle.api.artifacts.VersionCatalogsExtension +import org.gradle.kotlin.dsl.getByType import org.gradle.api.file.Directory import java.io.FileInputStream import java.util.* +internal val Project.libs + get(): VersionCatalog = extensions.getByType().named("libs") + fun Project.binaryRootDirectory(): Directory = layout.buildDirectory.dir("dist/js").get() fun Project.envSecret(key: String): String { diff --git a/gradle-plugins/gradle.properties b/gradle-plugins/gradle.properties index 32bb9a03..caef76b2 100644 --- a/gradle-plugins/gradle.properties +++ b/gradle-plugins/gradle.properties @@ -1,6 +1,7 @@ #Gradle org.gradle.jvmargs=-Xmx4g "-XX:MaxMetaspaceSize=2g" org.gradle.caching=true +org.gradle.configuration-cache=true org.gradle.parallel=true #Kotlin diff --git a/gradle-plugins/settings.gradle.kts b/gradle-plugins/settings.gradle.kts index 5aba803e..ac816e34 100644 --- a/gradle-plugins/settings.gradle.kts +++ b/gradle-plugins/settings.gradle.kts @@ -1,3 +1,16 @@ enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS") +dependencyResolutionManagement { + repositories { + gradlePluginPortal() + } + versionCatalogs { + create("libs") { + from(files("../gradle/libs.versions.toml")) + } + } +} + rootProject.name = "gradle-plugins" + +include(":conventions") \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml new file mode 100644 index 00000000..2119d46b --- /dev/null +++ b/gradle/libs.versions.toml @@ -0,0 +1,21 @@ +[versions] +buildKonfig = "0.15.0" +kotlin = "1.9.21" + +[libraries] +buildKonfig = { module = "com.codingfeline.buildkonfig:buildkonfig-gradle-plugin", version.ref = "buildKonfig" } +kotlin-serialization = { module = "org.jetbrains.kotlin:kotlin-serialization", version.ref = "kotlin" } + +# Dependencies of the included gradle-plugins +kotlin-gradlePlugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" } + +[plugins] + +# Plugins defined by this project +// TODO: Figure out how to do the below for multi-project setup +thecodinglove-base-node = { id = "base-node-plugin", version = "unspecified" } +thecodinglove-base-browser = { id = "base-browser-plugin", version = "unspecified" } +thecodinglove-node-module = { id = "node-module-plugin", version = "unspecified" } +thecodinglove-build-config = { id = "build-config-plugin", version = "unspecified" } +thecodinglove-browser-binary = { id = "browser-binary-plugin", version = "unspecified" } +thecodinglove-node-binary = { id = "node-binary-plugin", version = "unspecified" } \ No newline at end of file diff --git a/landing-page-web/build.gradle.kts b/landing-page-web/build.gradle.kts index db4f750a..1bff563c 100644 --- a/landing-page-web/build.gradle.kts +++ b/landing-page-web/build.gradle.kts @@ -1,9 +1,3 @@ -allprojects { - repositories { - mavenCentral() - } -} - val taskNames = listOf("clean", "assemble", "jsTest", "kotlinUpgradeYarnLock") taskNames.forEach { taskName -> tasks.register("${taskName}All") { diff --git a/landing-page-web/settings.gradle.kts b/landing-page-web/settings.gradle.kts index cb668fa1..c0e5b365 100644 --- a/landing-page-web/settings.gradle.kts +++ b/landing-page-web/settings.gradle.kts @@ -8,9 +8,11 @@ plugins { id("com.gradle.develocity") version("3.18.1") } -rootProject.name = "landing-page-web" - -include("service") +dependencyResolutionManagement { + repositories { + gradlePluginPortal() + } +} develocity { buildScan { @@ -18,4 +20,8 @@ develocity { termsOfUseAgree.set("yes") publishing.onlyIf { true } } -} \ No newline at end of file +} + +rootProject.name = "landing-page-web" + +include("service") \ No newline at end of file diff --git a/proxy-web/build.gradle.kts b/proxy-web/build.gradle.kts index db4f750a..1bff563c 100644 --- a/proxy-web/build.gradle.kts +++ b/proxy-web/build.gradle.kts @@ -1,9 +1,3 @@ -allprojects { - repositories { - mavenCentral() - } -} - val taskNames = listOf("clean", "assemble", "jsTest", "kotlinUpgradeYarnLock") taskNames.forEach { taskName -> tasks.register("${taskName}All") { diff --git a/proxy-web/settings.gradle.kts b/proxy-web/settings.gradle.kts index 8b730c55..bca07773 100644 --- a/proxy-web/settings.gradle.kts +++ b/proxy-web/settings.gradle.kts @@ -8,9 +8,11 @@ plugins { id("com.gradle.develocity") version("3.18.1") } -rootProject.name = "proxy-web" - -include("service") +dependencyResolutionManagement { + repositories { + gradlePluginPortal() + } +} develocity { buildScan { @@ -19,3 +21,7 @@ develocity { publishing.onlyIf { true } } } + +rootProject.name = "proxy-web" + +include("service") \ No newline at end of file diff --git a/search/build.gradle.kts b/search/build.gradle.kts index db4f750a..1bff563c 100644 --- a/search/build.gradle.kts +++ b/search/build.gradle.kts @@ -1,9 +1,3 @@ -allprojects { - repositories { - mavenCentral() - } -} - val taskNames = listOf("clean", "assemble", "jsTest", "kotlinUpgradeYarnLock") taskNames.forEach { taskName -> tasks.register("${taskName}All") { diff --git a/search/settings.gradle.kts b/search/settings.gradle.kts index 86039beb..7dd533bc 100644 --- a/search/settings.gradle.kts +++ b/search/settings.gradle.kts @@ -8,13 +8,11 @@ plugins { id("com.gradle.develocity") version("3.18.1") } -rootProject.name = "search" - -includeBuild("../common") -include("adapter") -include("domain") -include("service") -include("test-fixtures") +dependencyResolutionManagement { + repositories { + gradlePluginPortal() + } +} develocity { buildScan { @@ -22,4 +20,12 @@ develocity { termsOfUseAgree.set("yes") publishing.onlyIf { true } } -} \ No newline at end of file +} + +rootProject.name = "search" + +includeBuild("../common") +include("adapter") +include("domain") +include("service") +include("test-fixtures") \ No newline at end of file diff --git a/self-destruct/build.gradle.kts b/self-destruct/build.gradle.kts index db4f750a..1bff563c 100644 --- a/self-destruct/build.gradle.kts +++ b/self-destruct/build.gradle.kts @@ -1,9 +1,3 @@ -allprojects { - repositories { - mavenCentral() - } -} - val taskNames = listOf("clean", "assemble", "jsTest", "kotlinUpgradeYarnLock") taskNames.forEach { taskName -> tasks.register("${taskName}All") { diff --git a/self-destruct/settings.gradle.kts b/self-destruct/settings.gradle.kts index 46d9bf43..e63dbbeb 100644 --- a/self-destruct/settings.gradle.kts +++ b/self-destruct/settings.gradle.kts @@ -8,12 +8,11 @@ plugins { id("com.gradle.develocity") version("3.18.1") } -rootProject.name = "self-destruct" - -includeBuild("../common") -include("adapter") -include("domain") -include("service") +dependencyResolutionManagement { + repositories { + gradlePluginPortal() + } +} develocity { buildScan { @@ -21,4 +20,11 @@ develocity { termsOfUseAgree.set("yes") publishing.onlyIf { true } } -} \ No newline at end of file +} + +rootProject.name = "self-destruct" + +includeBuild("../common") +include("adapter") +include("domain") +include("service") \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts index c564dc5c..dda49009 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,8 +1,18 @@ +enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS") + plugins { // Allows publishing build scans when common tasks run from the project root, eg jsTest id("com.gradle.develocity") version("3.18.1") } +develocity { + buildScan { + termsOfUseUrl.set("https://gradle.com/help/legal-terms-of-use") + termsOfUseAgree.set("yes") + publishing.onlyIf { true } + } +} + rootProject.name = "thecodinglove-kotlinjs" // Add or remove projects here from the common build. Alternatively, each project can be opened in isolation. @@ -14,12 +24,4 @@ includeBuild("search") includeBuild("self-destruct") includeBuild("slack") includeBuild("slack-web") -includeBuild("statistics") - -develocity { - buildScan { - termsOfUseUrl.set("https://gradle.com/help/legal-terms-of-use") - termsOfUseAgree.set("yes") - publishing.onlyIf { true } - } -} \ No newline at end of file +includeBuild("statistics") \ No newline at end of file diff --git a/slack-web/build.gradle.kts b/slack-web/build.gradle.kts index db4f750a..1bff563c 100644 --- a/slack-web/build.gradle.kts +++ b/slack-web/build.gradle.kts @@ -1,9 +1,3 @@ -allprojects { - repositories { - mavenCentral() - } -} - val taskNames = listOf("clean", "assemble", "jsTest", "kotlinUpgradeYarnLock") taskNames.forEach { taskName -> tasks.register("${taskName}All") { diff --git a/slack-web/settings.gradle.kts b/slack-web/settings.gradle.kts index 2f593513..a6cbed6b 100644 --- a/slack-web/settings.gradle.kts +++ b/slack-web/settings.gradle.kts @@ -8,12 +8,11 @@ plugins { id("com.gradle.develocity") version("3.18.1") } -rootProject.name = "slack-web" - -includeBuild("../common") -include("adapter") -include("domain") -include("service") +dependencyResolutionManagement { + repositories { + gradlePluginPortal() + } +} develocity { buildScan { @@ -21,4 +20,11 @@ develocity { termsOfUseAgree.set("yes") publishing.onlyIf { true } } -} \ No newline at end of file +} + +rootProject.name = "slack-web" + +includeBuild("../common") +include("adapter") +include("domain") +include("service") \ No newline at end of file diff --git a/slack/build.gradle.kts b/slack/build.gradle.kts index db4f750a..1bff563c 100644 --- a/slack/build.gradle.kts +++ b/slack/build.gradle.kts @@ -1,9 +1,3 @@ -allprojects { - repositories { - mavenCentral() - } -} - val taskNames = listOf("clean", "assemble", "jsTest", "kotlinUpgradeYarnLock") taskNames.forEach { taskName -> tasks.register("${taskName}All") { diff --git a/slack/settings.gradle.kts b/slack/settings.gradle.kts index 0de2aa1d..e91acf54 100644 --- a/slack/settings.gradle.kts +++ b/slack/settings.gradle.kts @@ -8,12 +8,11 @@ plugins { id("com.gradle.develocity") version("3.18.1") } -rootProject.name = "slack" - -includeBuild("../common") -include("adapter") -include("domain") -include("service") +dependencyResolutionManagement { + repositories { + gradlePluginPortal() + } +} develocity { buildScan { @@ -21,4 +20,11 @@ develocity { termsOfUseAgree.set("yes") publishing.onlyIf { true } } -} \ No newline at end of file +} + +rootProject.name = "slack" + +includeBuild("../common") +include("adapter") +include("domain") +include("service") \ No newline at end of file diff --git a/statistics/build.gradle.kts b/statistics/build.gradle.kts index db4f750a..1bff563c 100644 --- a/statistics/build.gradle.kts +++ b/statistics/build.gradle.kts @@ -1,9 +1,3 @@ -allprojects { - repositories { - mavenCentral() - } -} - val taskNames = listOf("clean", "assemble", "jsTest", "kotlinUpgradeYarnLock") taskNames.forEach { taskName -> tasks.register("${taskName}All") { diff --git a/statistics/settings.gradle.kts b/statistics/settings.gradle.kts index 72f78bb4..3064136a 100644 --- a/statistics/settings.gradle.kts +++ b/statistics/settings.gradle.kts @@ -8,12 +8,11 @@ plugins { id("com.gradle.develocity") version("3.18.1") } -rootProject.name = "statistics" - -includeBuild("../common") -include("adapter") -include("domain") -include("service") +dependencyResolutionManagement { + repositories { + gradlePluginPortal() + } +} develocity { buildScan { @@ -21,4 +20,11 @@ develocity { termsOfUseAgree.set("yes") publishing.onlyIf { true } } -} \ No newline at end of file +} + +rootProject.name = "statistics" + +includeBuild("../common") +include("adapter") +include("domain") +include("service") \ No newline at end of file From 8878674c3036b8b395681af24ef2150a41499b23 Mon Sep 17 00:00:00 2001 From: Georgi Christov Date: Tue, 11 Nov 2025 22:32:41 +0100 Subject: [PATCH 2/9] Fix build --- common/firebase/build.gradle.kts | 1 + .../kotlin/com/gchristov/thecodinglove/gradleplugins/Deps.kt | 1 + gradle/libs.versions.toml | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/common/firebase/build.gradle.kts b/common/firebase/build.gradle.kts index a165988b..8dfddf29 100644 --- a/common/firebase/build.gradle.kts +++ b/common/firebase/build.gradle.kts @@ -17,6 +17,7 @@ kotlin { val jsMain by getting { dependencies { implementation(npm(Deps.Google.firebaseAdmin.name, Deps.Google.firebaseAdmin.version)) + implementation(npm(Deps.Google.firestore.name, Deps.Google.firestore.version)) } } } diff --git a/gradle-plugins/conventions/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/Deps.kt b/gradle-plugins/conventions/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/Deps.kt index ccb8cfb9..495e1f80 100644 --- a/gradle-plugins/conventions/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/Deps.kt +++ b/gradle-plugins/conventions/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/Deps.kt @@ -26,6 +26,7 @@ class Deps { object Google { val firebaseAdmin = NpmDependency("firebase-admin", "11.11.1") + val firestore = NpmDependency("@google-cloud/firestore", "6.8.0") val pubSub = NpmDependency("@google-cloud/pubsub", "4.0.7") } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 2119d46b..cbfd0e9d 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -12,7 +12,7 @@ kotlin-gradlePlugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", ve [plugins] # Plugins defined by this project -// TODO: Figure out how to do the below for multi-project setup +# TODO: Figure out how to do the below for multi-project setup thecodinglove-base-node = { id = "base-node-plugin", version = "unspecified" } thecodinglove-base-browser = { id = "base-browser-plugin", version = "unspecified" } thecodinglove-node-module = { id = "node-module-plugin", version = "unspecified" } From 88e9c192c9a7d7987fd5c8577ffa4611e418e1e9 Mon Sep 17 00:00:00 2001 From: Georgi Christov Date: Tue, 11 Nov 2025 22:50:06 +0100 Subject: [PATCH 3/9] Replace serveo.net with localhost.run --- tools/scripts/run_local.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/scripts/run_local.sh b/tools/scripts/run_local.sh index a2840578..52a35995 100644 --- a/tools/scripts/run_local.sh +++ b/tools/scripts/run_local.sh @@ -5,7 +5,7 @@ set -e # folder. A single Gradle worker avoids this at the cost of a slower build but this is okay for now. echo "๐Ÿ›  Build project" && ./gradlew --max-workers=1 assemble echo "๐Ÿงน Clean up old Docker resources" && (docker image prune -af) -echo "๐Ÿ Start local tunnel" && (ssh -tt -R codinglove.serveo.net:80:localhost:8080 serveo.net &) +echo "๐Ÿ Start local tunnel" && (ssh -R 80:localhost:8080 localhost.run &) sleep 1 echo "๐Ÿ Start app" && echo "" && docker compose \ -f tools/docker/landing-page-web-compose.yaml \ From 158941d0d92081cc2f0708e3370060cab5a3b4a5 Mon Sep 17 00:00:00 2001 From: Georgi Christov Date: Fri, 14 Nov 2025 23:26:40 +0100 Subject: [PATCH 4/9] migrate non-npm dependencie to tomp. some todos left and the npm ones --- common/kotlin/build.gradle.kts | 18 ++++---- common/network/build.gradle.kts | 10 ++--- common/settings.gradle.kts | 5 +++ common/test/build.gradle.kts | 6 +-- .../thecodinglove/gradleplugins/Deps.kt | 41 ------------------- .../gradleplugins/ModulePlugin.kt | 2 +- gradle/libs.versions.toml | 28 +++++++++++++ search/settings.gradle.kts | 5 +++ self-destruct/settings.gradle.kts | 5 +++ slack-web/settings.gradle.kts | 5 +++ slack/settings.gradle.kts | 5 +++ statistics/settings.gradle.kts | 5 +++ 12 files changed, 76 insertions(+), 59 deletions(-) diff --git a/common/kotlin/build.gradle.kts b/common/kotlin/build.gradle.kts index eac02385..705d44e1 100644 --- a/common/kotlin/build.gradle.kts +++ b/common/kotlin/build.gradle.kts @@ -11,15 +11,15 @@ kotlin { sourceSets { val commonMain by getting { dependencies { - api(Deps.Kodein.di) - api(Deps.Kermit.logger) - api(Deps.Kotlin.coroutinesCore) - api(Deps.Kotlin.dateTime) - api(Deps.Kotlin.serialization) - api(Deps.Uuid.uuid) - api(Deps.Arrow.core) - api(Deps.Crypto.mac) - api(Deps.Crypto.encoding) + api(libs.kodein) + api(libs.touchlab.kermit) + api(libs.kotlinx.coroutines.core) + api(libs.kotlinx.datetime) + api(libs.kotlinx.serialization.json) + api(libs.uuid) + api(libs.arrow.core) + api(libs.diglol.crypto) + api(libs.diglol.encoding) } } } diff --git a/common/network/build.gradle.kts b/common/network/build.gradle.kts index 437cb97c..3ebddbc9 100644 --- a/common/network/build.gradle.kts +++ b/common/network/build.gradle.kts @@ -12,11 +12,11 @@ kotlin { val commonMain by getting { dependencies { implementation(projects.kotlin) - api(Deps.Ktor.client) - implementation(Deps.Ktor.contentNegotiation) - implementation(Deps.Ktor.serialization) - implementation(Deps.Ktor.logging) - implementation(Deps.Ktor.logback) + api(libs.ktor.client.core) + implementation(libs.ktor.client.contentNegotiation) + implementation(libs.ktor.client.serializationJson) + implementation(libs.ktor.client.logging) + implementation(libs.logback) } } val jsMain by getting { diff --git a/common/settings.gradle.kts b/common/settings.gradle.kts index 314bcedd..91f1108b 100644 --- a/common/settings.gradle.kts +++ b/common/settings.gradle.kts @@ -12,6 +12,11 @@ dependencyResolutionManagement { repositories { gradlePluginPortal() } + versionCatalogs { + create("libs") { + from(files("../gradle/libs.versions.toml")) + } + } } develocity { diff --git a/common/test/build.gradle.kts b/common/test/build.gradle.kts index 3fb97637..e88c7326 100644 --- a/common/test/build.gradle.kts +++ b/common/test/build.gradle.kts @@ -11,9 +11,9 @@ kotlin { sourceSets { val commonMain by getting { dependencies { - implementation(Deps.Kermit.logger) - implementation(Deps.Kotlin.coroutinesCore) - api(Deps.Kotlin.test) + implementation(libs.touchlab.kermit) + implementation(libs.kotlinx.coroutines.core) + api(libs.kotlin.test) } } } diff --git a/gradle-plugins/conventions/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/Deps.kt b/gradle-plugins/conventions/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/Deps.kt index 495e1f80..1602ae74 100644 --- a/gradle-plugins/conventions/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/Deps.kt +++ b/gradle-plugins/conventions/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/Deps.kt @@ -15,57 +15,16 @@ class Deps { const val test = "$group:test" } - object Arrow { - const val core = "io.arrow-kt:arrow-core:1.2.1" - } - - object Crypto { - const val mac = "com.diglol.crypto:mac:0.1.5" - const val encoding = "com.diglol.encoding:encoding:0.3.0" - } - object Google { val firebaseAdmin = NpmDependency("firebase-admin", "11.11.1") val firestore = NpmDependency("@google-cloud/firestore", "6.8.0") val pubSub = NpmDependency("@google-cloud/pubsub", "4.0.7") } - object Kermit { - private const val kermitVersion = "2.0.2" - const val logger = "co.touchlab:kermit:$kermitVersion" - } - - object Kodein { - const val di = "org.kodein.di:kodein-di:7.21.0" - } - - object Kotlin { - private const val coroutinesVersion = "1.7.3" - - const val coroutinesCore = "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutinesVersion" - const val coroutinesTest = "org.jetbrains.kotlinx:kotlinx-coroutines-test:${coroutinesVersion}" - const val test = "org.jetbrains.kotlin:kotlin-test" - const val dateTime = "org.jetbrains.kotlinx:kotlinx-datetime:0.4.1" - const val serialization = "org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.1" - } - - object Ktor { - private const val ktorVersion = "2.3.6" - const val client = "io.ktor:ktor-client-core:$ktorVersion" - const val contentNegotiation = "io.ktor:ktor-client-content-negotiation:$ktorVersion" - const val serialization = "io.ktor:ktor-serialization-kotlinx-json:$ktorVersion" - const val logging = "io.ktor:ktor-client-logging:$ktorVersion" - const val logback = "ch.qos.logback:logback-classic:1.4.11" - } - object Node { val htmlParser = NpmDependency("node-html-parser", "6.1.11") val express = NpmDependency("express", "4.18.2") } - - object Uuid { - const val uuid = "com.benasher44:uuid:0.8.2" - } } data class NpmDependency( diff --git a/gradle-plugins/conventions/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/ModulePlugin.kt b/gradle-plugins/conventions/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/ModulePlugin.kt index 8b332c53..7d371c10 100644 --- a/gradle-plugins/conventions/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/ModulePlugin.kt +++ b/gradle-plugins/conventions/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/ModulePlugin.kt @@ -11,7 +11,7 @@ class NodeModulePlugin : Plugin { plugins.apply("org.jetbrains.kotlin.plugin.serialization") extensions.configure(KotlinMultiplatformExtension::class.java) { sourceSets.maybeCreate("commonTest").dependencies { - api(Deps.Kotlin.coroutinesTest) + api(libs.findLibrary("kotlinx-coroutines-test").get()) } } } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index cbfd0e9d..ed8f865e 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,10 +1,38 @@ [versions] buildKonfig = "0.15.0" kotlin = "1.9.21" +kotlinx-coroutines = "1.7.3" +kotlinx-datetime = "0.4.1" +kotlinx-serialization = "1.7.1" +arrow = "1.2.3" +uuid = "0.8.2" +diglolCrypto = "0.1.5" +diglolEncoding = "0.3.0" +kodein = "7.21.2" +touchlab-kermit = "2.0.3" +ktor = "2.3.9" +logback = "1.4.11" [libraries] buildKonfig = { module = "com.codingfeline.buildkonfig:buildkonfig-gradle-plugin", version.ref = "buildKonfig" } kotlin-serialization = { module = "org.jetbrains.kotlin:kotlin-serialization", version.ref = "kotlin" } +kotlin-test = { module = "org.jetbrains.kotlin:kotlin-test" } +kotlinx-coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "kotlinx-coroutines" } +#noinspection UnusedVersionCatalogEntry +kotlinx-coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "kotlinx-coroutines" } +kotlinx-datetime = { module = "org.jetbrains.kotlinx:kotlinx-datetime", version.ref = "kotlinx-datetime" } +kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kotlinx-serialization" } +arrow-core = { module = "io.arrow-kt:arrow-core", version.ref = "arrow" } +uuid = { module = "com.benasher44:uuid", version.ref = "uuid" } +diglol-crypto = { module = "com.diglol.crypto:mac", version.ref = "diglolCrypto" } +diglol-encoding = { module = "com.diglol.encoding:encoding", version.ref = "diglolEncoding" } +kodein = { module = "org.kodein.di:kodein-di", version.ref = "kodein" } +touchlab-kermit = { module = "co.touchlab:kermit", version.ref = "touchlab-kermit" } +ktor-client-core = { module = "io.ktor:ktor-client-core", version.ref = "ktor" } +ktor-client-contentNegotiation = { module = "io.ktor:ktor-client-content-negotiation", version.ref = "ktor" } +ktor-client-serializationJson = { module = "io.ktor:ktor-serialization-kotlinx-json", version.ref = "ktor" } +ktor-client-logging = { module = "io.ktor:ktor-client-logging", version.ref = "ktor" } +logback = { module = "ch.qos.logback:logback-classic", version.ref = "logback" } # Dependencies of the included gradle-plugins kotlin-gradlePlugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" } diff --git a/search/settings.gradle.kts b/search/settings.gradle.kts index 7dd533bc..5d7e817d 100644 --- a/search/settings.gradle.kts +++ b/search/settings.gradle.kts @@ -12,6 +12,11 @@ dependencyResolutionManagement { repositories { gradlePluginPortal() } + versionCatalogs { + create("libs") { + from(files("../gradle/libs.versions.toml")) + } + } } develocity { diff --git a/self-destruct/settings.gradle.kts b/self-destruct/settings.gradle.kts index e63dbbeb..a220f943 100644 --- a/self-destruct/settings.gradle.kts +++ b/self-destruct/settings.gradle.kts @@ -12,6 +12,11 @@ dependencyResolutionManagement { repositories { gradlePluginPortal() } + versionCatalogs { + create("libs") { + from(files("../gradle/libs.versions.toml")) + } + } } develocity { diff --git a/slack-web/settings.gradle.kts b/slack-web/settings.gradle.kts index a6cbed6b..a6adeb9f 100644 --- a/slack-web/settings.gradle.kts +++ b/slack-web/settings.gradle.kts @@ -12,6 +12,11 @@ dependencyResolutionManagement { repositories { gradlePluginPortal() } + versionCatalogs { + create("libs") { + from(files("../gradle/libs.versions.toml")) + } + } } develocity { diff --git a/slack/settings.gradle.kts b/slack/settings.gradle.kts index e91acf54..ac6171f2 100644 --- a/slack/settings.gradle.kts +++ b/slack/settings.gradle.kts @@ -12,6 +12,11 @@ dependencyResolutionManagement { repositories { gradlePluginPortal() } + versionCatalogs { + create("libs") { + from(files("../gradle/libs.versions.toml")) + } + } } develocity { diff --git a/statistics/settings.gradle.kts b/statistics/settings.gradle.kts index 3064136a..ba05e0a4 100644 --- a/statistics/settings.gradle.kts +++ b/statistics/settings.gradle.kts @@ -12,6 +12,11 @@ dependencyResolutionManagement { repositories { gradlePluginPortal() } + versionCatalogs { + create("libs") { + from(files("../gradle/libs.versions.toml")) + } + } } develocity { From 8b860d71753541288b4deca341f6b6684b3dcb0c Mon Sep 17 00:00:00 2001 From: Georgi Christov Date: Sat, 15 Nov 2025 19:13:47 +0100 Subject: [PATCH 5/9] migrate npm dependencies to toml --- common/firebase/build.gradle.kts | 4 ++-- common/network/build.gradle.kts | 2 +- common/pubsub/build.gradle.kts | 2 +- .../thecodinglove/gradleplugins/Deps.kt | 18 +----------------- gradle/libs.versions.toml | 12 +++++++++++- search/adapter/build.gradle.kts | 2 +- 6 files changed, 17 insertions(+), 23 deletions(-) diff --git a/common/firebase/build.gradle.kts b/common/firebase/build.gradle.kts index 8dfddf29..d8166d2e 100644 --- a/common/firebase/build.gradle.kts +++ b/common/firebase/build.gradle.kts @@ -16,8 +16,8 @@ kotlin { } val jsMain by getting { dependencies { - implementation(npm(Deps.Google.firebaseAdmin.name, Deps.Google.firebaseAdmin.version)) - implementation(npm(Deps.Google.firestore.name, Deps.Google.firestore.version)) + implementation(npm(libs.npm.firebase.admin.get().name, libs.npm.firebase.admin.get().version!!)) + implementation(npm(libs.npm.google.firestore.get().name, libs.npm.google.firestore.get().version!!)) } } } diff --git a/common/network/build.gradle.kts b/common/network/build.gradle.kts index 3ebddbc9..d339916e 100644 --- a/common/network/build.gradle.kts +++ b/common/network/build.gradle.kts @@ -21,7 +21,7 @@ kotlin { } val jsMain by getting { dependencies { - implementation(npm(Deps.Node.express.name, Deps.Node.express.version)) + implementation(npm(libs.npm.express.get().name, libs.npm.express.get().version!!)) } } } diff --git a/common/pubsub/build.gradle.kts b/common/pubsub/build.gradle.kts index cc68fcae..c2ed29ee 100644 --- a/common/pubsub/build.gradle.kts +++ b/common/pubsub/build.gradle.kts @@ -17,7 +17,7 @@ kotlin { } val jsMain by getting { dependencies { - implementation(npm(Deps.Google.pubSub.name, Deps.Google.pubSub.version)) + implementation(npm(libs.npm.google.pubsub.get().name, libs.npm.google.pubsub.get().version!!)) } } } diff --git a/gradle-plugins/conventions/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/Deps.kt b/gradle-plugins/conventions/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/Deps.kt index 1602ae74..6f057745 100644 --- a/gradle-plugins/conventions/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/Deps.kt +++ b/gradle-plugins/conventions/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/Deps.kt @@ -14,20 +14,4 @@ class Deps { const val pubsubTestFixtures = "$group:pubsub-testfixtures" const val test = "$group:test" } - - object Google { - val firebaseAdmin = NpmDependency("firebase-admin", "11.11.1") - val firestore = NpmDependency("@google-cloud/firestore", "6.8.0") - val pubSub = NpmDependency("@google-cloud/pubsub", "4.0.7") - } - - object Node { - val htmlParser = NpmDependency("node-html-parser", "6.1.11") - val express = NpmDependency("express", "4.18.2") - } -} - -data class NpmDependency( - val name: String, - val version: String -) \ No newline at end of file +} \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index ed8f865e..da15ce34 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -3,7 +3,7 @@ buildKonfig = "0.15.0" kotlin = "1.9.21" kotlinx-coroutines = "1.7.3" kotlinx-datetime = "0.4.1" -kotlinx-serialization = "1.7.1" +kotlinx-serialization = "1.6.1" arrow = "1.2.3" uuid = "0.8.2" diglolCrypto = "0.1.5" @@ -12,6 +12,11 @@ kodein = "7.21.2" touchlab-kermit = "2.0.3" ktor = "2.3.9" logback = "1.4.11" +npm-htmlParser = "6.1.11" +npm-express = "4.18.2" +npm-firebase-admin = "11.11.1" +npm-google-firestore = "6.8.0" +npm-google-pubsub = "4.0.7" [libraries] buildKonfig = { module = "com.codingfeline.buildkonfig:buildkonfig-gradle-plugin", version.ref = "buildKonfig" } @@ -33,6 +38,11 @@ ktor-client-contentNegotiation = { module = "io.ktor:ktor-client-content-negotia ktor-client-serializationJson = { module = "io.ktor:ktor-serialization-kotlinx-json", version.ref = "ktor" } ktor-client-logging = { module = "io.ktor:ktor-client-logging", version.ref = "ktor" } logback = { module = "ch.qos.logback:logback-classic", version.ref = "logback" } +npm-htmlParser = { group = "npm", name = "node-html-parser", version.ref = "npm-htmlParser" } +npm-express = { group = "npm", name = "express", version.ref = "npm-express" } +npm-firebase-admin = { group = "npm", name = "firebase-admin", version.ref = "npm-firebase-admin" } +npm-google-firestore = { group = "npm", name = "@google-cloud/firestore", version.ref = "npm-google-firestore" } +npm-google-pubsub = { group = "npm", name = "@google-cloud/pubsub", version.ref = "npm-google-pubsub" } # Dependencies of the included gradle-plugins kotlin-gradlePlugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" } diff --git a/search/adapter/build.gradle.kts b/search/adapter/build.gradle.kts index 98005f38..0cd968a3 100644 --- a/search/adapter/build.gradle.kts +++ b/search/adapter/build.gradle.kts @@ -27,7 +27,7 @@ kotlin { } val jsMain by getting { dependencies { - implementation(npm(Deps.Node.htmlParser.name, Deps.Node.htmlParser.version)) + implementation(npm(libs.npm.htmlParser.get().name, libs.npm.htmlParser.get().version!!)) } } } From dac2405a89aa030263c818182a118fe302ce65b0 Mon Sep 17 00:00:00 2001 From: Georgi Christov Date: Sat, 15 Nov 2025 22:11:19 +0100 Subject: [PATCH 6/9] Delete Deps file --- common/firebase/build.gradle.kts | 2 -- common/kotlin/build.gradle.kts | 2 -- common/network/build.gradle.kts | 2 -- common/pubsub/build.gradle.kts | 2 -- common/test/build.gradle.kts | 2 -- .../thecodinglove/gradleplugins/Deps.kt | 17 ---------------- gradle/libs.versions.toml | 12 +++++++++++ search/adapter/build.gradle.kts | 20 +++++++++---------- search/domain/build.gradle.kts | 6 ++---- search/service/build.gradle.kts | 14 ++++++------- search/test-fixtures/build.gradle.kts | 8 +++----- self-destruct/adapter/build.gradle.kts | 6 ++---- self-destruct/domain/build.gradle.kts | 4 +--- self-destruct/service/build.gradle.kts | 8 +++----- slack-web/adapter/build.gradle.kts | 10 +++------- slack-web/domain/build.gradle.kts | 3 +-- slack-web/service/build.gradle.kts | 10 ++++------ slack/adapter/build.gradle.kts | 13 +++++------- slack/domain/build.gradle.kts | 5 ++--- slack/service/build.gradle.kts | 14 ++++++------- statistics/adapter/build.gradle.kts | 6 ++---- statistics/domain/build.gradle.kts | 4 +--- statistics/service/build.gradle.kts | 8 +++----- 23 files changed, 65 insertions(+), 113 deletions(-) delete mode 100644 gradle-plugins/conventions/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/Deps.kt diff --git a/common/firebase/build.gradle.kts b/common/firebase/build.gradle.kts index d8166d2e..34116996 100644 --- a/common/firebase/build.gradle.kts +++ b/common/firebase/build.gradle.kts @@ -1,5 +1,3 @@ -import com.gchristov.thecodinglove.gradleplugins.Deps - plugins { id("node-module-plugin") } diff --git a/common/kotlin/build.gradle.kts b/common/kotlin/build.gradle.kts index 705d44e1..6722d872 100644 --- a/common/kotlin/build.gradle.kts +++ b/common/kotlin/build.gradle.kts @@ -1,5 +1,3 @@ -import com.gchristov.thecodinglove.gradleplugins.Deps - plugins { id("base-node-plugin") } diff --git a/common/network/build.gradle.kts b/common/network/build.gradle.kts index d339916e..abc62dd9 100644 --- a/common/network/build.gradle.kts +++ b/common/network/build.gradle.kts @@ -1,5 +1,3 @@ -import com.gchristov.thecodinglove.gradleplugins.Deps - plugins { id("node-module-plugin") } diff --git a/common/pubsub/build.gradle.kts b/common/pubsub/build.gradle.kts index c2ed29ee..4f6be135 100644 --- a/common/pubsub/build.gradle.kts +++ b/common/pubsub/build.gradle.kts @@ -1,5 +1,3 @@ -import com.gchristov.thecodinglove.gradleplugins.Deps - plugins { id("node-module-plugin") } diff --git a/common/test/build.gradle.kts b/common/test/build.gradle.kts index e88c7326..b779a1fe 100644 --- a/common/test/build.gradle.kts +++ b/common/test/build.gradle.kts @@ -1,5 +1,3 @@ -import com.gchristov.thecodinglove.gradleplugins.Deps - plugins { id("base-node-plugin") } diff --git a/gradle-plugins/conventions/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/Deps.kt b/gradle-plugins/conventions/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/Deps.kt deleted file mode 100644 index 6f057745..00000000 --- a/gradle-plugins/conventions/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/Deps.kt +++ /dev/null @@ -1,17 +0,0 @@ -package com.gchristov.thecodinglove.gradleplugins - -class Deps { - object Common { - private const val group = "com.gchristov.thecodinglove.common" - const val analytics = "$group:analytics" - const val analyticsTestFixtures = "$group:analytics-testfixtures" - const val firebase = "$group:firebase" - const val kotlin = "$group:kotlin" - const val monitoring = "$group:monitoring" - const val network = "$group:network" - const val networkTestFixtures = "$group:network-testfixtures" - const val pubsub = "$group:pubsub" - const val pubsubTestFixtures = "$group:pubsub-testfixtures" - const val test = "$group:test" - } -} \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index da15ce34..ba0752a9 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -47,6 +47,18 @@ npm-google-pubsub = { group = "npm", name = "@google-cloud/pubsub", version.ref # Dependencies of the included gradle-plugins kotlin-gradlePlugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" } +# Dependency notations for internal libraries +common-analytics = { group = "com.gchristov.thecodinglove.common", name = "analytics" } +common-analytics-testFixtures = { group = "com.gchristov.thecodinglove.common", name = "analytics-testfixtures" } +common-firebase = { group = "com.gchristov.thecodinglove.common", name = "firebase" } +common-kotlin = { group = "com.gchristov.thecodinglove.common", name = "kotlin" } +common-monitoring = { group = "com.gchristov.thecodinglove.common", name = "monitoring" } +common-network = { group = "com.gchristov.thecodinglove.common", name = "network" } +common-network-testFixtures = { group = "com.gchristov.thecodinglove.common", name = "network-testfixtures" } +common-pubsub = { group = "com.gchristov.thecodinglove.common", name = "pubsub" } +common-pubsub-testFixtures = { group = "com.gchristov.thecodinglove.common", name = "pubsub-testfixtures" } +common-test = { group = "com.gchristov.thecodinglove.common", name = "test" } + [plugins] # Plugins defined by this project diff --git a/search/adapter/build.gradle.kts b/search/adapter/build.gradle.kts index 0cd968a3..c75d5f31 100644 --- a/search/adapter/build.gradle.kts +++ b/search/adapter/build.gradle.kts @@ -1,5 +1,3 @@ -import com.gchristov.thecodinglove.gradleplugins.Deps - plugins { id("node-module-plugin") } @@ -8,20 +6,20 @@ kotlin { sourceSets { val commonMain by getting { dependencies { - implementation(Deps.Common.analytics) - implementation(Deps.Common.kotlin) - implementation(Deps.Common.network) - implementation(Deps.Common.pubsub) - implementation(Deps.Common.firebase) + implementation(libs.common.analytics) + implementation(libs.common.kotlin) + implementation(libs.common.network) + implementation(libs.common.pubsub) + implementation(libs.common.firebase) implementation(projects.domain) } } val commonTest by getting { dependencies { - implementation(Deps.Common.test) - implementation(Deps.Common.analyticsTestFixtures) - implementation(Deps.Common.networkTestFixtures) - implementation(Deps.Common.pubsubTestFixtures) + implementation(libs.common.test) + implementation(libs.common.analytics.testFixtures) + implementation(libs.common.network.testFixtures) + implementation(libs.common.pubsub.testFixtures) implementation(projects.testFixtures) } } diff --git a/search/domain/build.gradle.kts b/search/domain/build.gradle.kts index 27d7dda2..e8726bdf 100644 --- a/search/domain/build.gradle.kts +++ b/search/domain/build.gradle.kts @@ -1,5 +1,3 @@ -import com.gchristov.thecodinglove.gradleplugins.Deps - plugins { id("node-module-plugin") } @@ -8,12 +6,12 @@ kotlin { sourceSets { val commonMain by getting { dependencies { - implementation(Deps.Common.kotlin) + implementation(libs.common.kotlin) } } val commonTest by getting { dependencies { - implementation(Deps.Common.test) + implementation(libs.common.test) implementation(projects.testFixtures) } } diff --git a/search/service/build.gradle.kts b/search/service/build.gradle.kts index fedee255..0b32f821 100644 --- a/search/service/build.gradle.kts +++ b/search/service/build.gradle.kts @@ -1,5 +1,3 @@ -import com.gchristov.thecodinglove.gradleplugins.Deps - plugins { id("node-binary-plugin") } @@ -8,12 +6,12 @@ kotlin { sourceSets { val commonMain by getting { dependencies { - implementation(Deps.Common.analytics) - implementation(Deps.Common.kotlin) - implementation(Deps.Common.firebase) - implementation(Deps.Common.monitoring) - implementation(Deps.Common.network) - implementation(Deps.Common.pubsub) + implementation(libs.common.analytics) + implementation(libs.common.kotlin) + implementation(libs.common.firebase) + implementation(libs.common.monitoring) + implementation(libs.common.network) + implementation(libs.common.pubsub) implementation(projects.domain) implementation(projects.adapter) } diff --git a/search/test-fixtures/build.gradle.kts b/search/test-fixtures/build.gradle.kts index f485153d..1e22e869 100644 --- a/search/test-fixtures/build.gradle.kts +++ b/search/test-fixtures/build.gradle.kts @@ -1,5 +1,3 @@ -import com.gchristov.thecodinglove.gradleplugins.Deps - plugins { id("node-module-plugin") } @@ -8,9 +6,9 @@ kotlin { sourceSets { val commonMain by getting { dependencies { - implementation(Deps.Common.kotlin) - implementation(Deps.Common.test) - implementation(Deps.Common.network) + implementation(libs.common.kotlin) + implementation(libs.common.test) + implementation(libs.common.network) implementation(projects.adapter) implementation(projects.domain) } diff --git a/self-destruct/adapter/build.gradle.kts b/self-destruct/adapter/build.gradle.kts index 7e476fda..fbd61896 100644 --- a/self-destruct/adapter/build.gradle.kts +++ b/self-destruct/adapter/build.gradle.kts @@ -1,5 +1,3 @@ -import com.gchristov.thecodinglove.gradleplugins.Deps - plugins { id("node-module-plugin") } @@ -8,8 +6,8 @@ kotlin { sourceSets { val commonMain by getting { dependencies { - implementation(Deps.Common.kotlin) - implementation(Deps.Common.network) + implementation(libs.common.kotlin) + implementation(libs.common.network) implementation(projects.domain) } } diff --git a/self-destruct/domain/build.gradle.kts b/self-destruct/domain/build.gradle.kts index 4d0f1242..daf3d5ce 100644 --- a/self-destruct/domain/build.gradle.kts +++ b/self-destruct/domain/build.gradle.kts @@ -1,5 +1,3 @@ -import com.gchristov.thecodinglove.gradleplugins.Deps - plugins { id("node-module-plugin") } @@ -8,7 +6,7 @@ kotlin { sourceSets { val commonMain by getting { dependencies { - implementation(Deps.Common.kotlin) + implementation(libs.common.kotlin) } } } diff --git a/self-destruct/service/build.gradle.kts b/self-destruct/service/build.gradle.kts index 61a82b5b..fda13d2f 100644 --- a/self-destruct/service/build.gradle.kts +++ b/self-destruct/service/build.gradle.kts @@ -1,5 +1,3 @@ -import com.gchristov.thecodinglove.gradleplugins.Deps - plugins { id("node-binary-plugin") } @@ -8,9 +6,9 @@ kotlin { sourceSets { val commonMain by getting { dependencies { - implementation(Deps.Common.kotlin) - implementation(Deps.Common.monitoring) - implementation(Deps.Common.network) + implementation(libs.common.kotlin) + implementation(libs.common.monitoring) + implementation(libs.common.network) implementation(projects.adapter) implementation(projects.domain) } diff --git a/slack-web/adapter/build.gradle.kts b/slack-web/adapter/build.gradle.kts index 9bdba208..e22c36e3 100644 --- a/slack-web/adapter/build.gradle.kts +++ b/slack-web/adapter/build.gradle.kts @@ -1,7 +1,3 @@ -import com.gchristov.thecodinglove.gradleplugins.Deps -import com.gchristov.thecodinglove.gradleplugins.Deps.Common.kotlin -import com.gchristov.thecodinglove.gradleplugins.envSecret - plugins { id("node-module-plugin") } @@ -10,9 +6,9 @@ kotlin { sourceSets { val commonMain by getting { dependencies { - implementation(Deps.Common.analytics) - implementation(Deps.Common.kotlin) - implementation(Deps.Common.network) + implementation(libs.common.analytics) + implementation(libs.common.kotlin) + implementation(libs.common.network) implementation(projects.domain) } } diff --git a/slack-web/domain/build.gradle.kts b/slack-web/domain/build.gradle.kts index c35d1c66..a319c91c 100644 --- a/slack-web/domain/build.gradle.kts +++ b/slack-web/domain/build.gradle.kts @@ -1,4 +1,3 @@ -import com.gchristov.thecodinglove.gradleplugins.Deps import com.gchristov.thecodinglove.gradleplugins.envSecret val packageId = "com.gchristov.thecodinglove.slackweb.domain" @@ -12,7 +11,7 @@ kotlin { sourceSets { val commonMain by getting { dependencies { - implementation(Deps.Common.kotlin) + implementation(libs.common.kotlin) } } } diff --git a/slack-web/service/build.gradle.kts b/slack-web/service/build.gradle.kts index 206755dc..a4b40ab0 100644 --- a/slack-web/service/build.gradle.kts +++ b/slack-web/service/build.gradle.kts @@ -1,5 +1,3 @@ -import com.gchristov.thecodinglove.gradleplugins.Deps - plugins { id("node-binary-plugin") } @@ -8,10 +6,10 @@ kotlin { sourceSets { val commonMain by getting { dependencies { - implementation(Deps.Common.analytics) - implementation(Deps.Common.kotlin) - implementation(Deps.Common.network) - implementation(Deps.Common.monitoring) + implementation(libs.common.analytics) + implementation(libs.common.kotlin) + implementation(libs.common.network) + implementation(libs.common.monitoring) implementation(projects.domain) implementation(projects.adapter) } diff --git a/slack/adapter/build.gradle.kts b/slack/adapter/build.gradle.kts index 337587ae..005de0cf 100644 --- a/slack/adapter/build.gradle.kts +++ b/slack/adapter/build.gradle.kts @@ -1,6 +1,3 @@ -import com.gchristov.thecodinglove.gradleplugins.Deps -import com.gchristov.thecodinglove.gradleplugins.envSecret - plugins { id("node-module-plugin") } @@ -9,11 +6,11 @@ kotlin { sourceSets { val commonMain by getting { dependencies { - implementation(Deps.Common.analytics) - implementation(Deps.Common.kotlin) - implementation(Deps.Common.network) - implementation(Deps.Common.pubsub) - implementation(Deps.Common.firebase) + implementation(libs.common.analytics) + implementation(libs.common.kotlin) + implementation(libs.common.network) + implementation(libs.common.pubsub) + implementation(libs.common.firebase) implementation(projects.domain) } } diff --git a/slack/domain/build.gradle.kts b/slack/domain/build.gradle.kts index e01f5673..030a0791 100644 --- a/slack/domain/build.gradle.kts +++ b/slack/domain/build.gradle.kts @@ -1,4 +1,3 @@ -import com.gchristov.thecodinglove.gradleplugins.Deps import com.gchristov.thecodinglove.gradleplugins.envSecret val packageId = "com.gchristov.thecodinglove.slack.domain" @@ -12,12 +11,12 @@ kotlin { sourceSets { val commonMain by getting { dependencies { - implementation(Deps.Common.kotlin) + implementation(libs.common.kotlin) } } val commonTest by getting { dependencies { - implementation(Deps.Common.test) + implementation(libs.common.test) } } } diff --git a/slack/service/build.gradle.kts b/slack/service/build.gradle.kts index ed875403..a2589ef1 100644 --- a/slack/service/build.gradle.kts +++ b/slack/service/build.gradle.kts @@ -1,5 +1,3 @@ -import com.gchristov.thecodinglove.gradleplugins.Deps - plugins { id("node-binary-plugin") } @@ -8,12 +6,12 @@ kotlin { sourceSets { val commonMain by getting { dependencies { - implementation(Deps.Common.analytics) - implementation(Deps.Common.kotlin) - implementation(Deps.Common.monitoring) - implementation(Deps.Common.network) - implementation(Deps.Common.pubsub) - implementation(Deps.Common.firebase) + implementation(libs.common.analytics) + implementation(libs.common.kotlin) + implementation(libs.common.monitoring) + implementation(libs.common.network) + implementation(libs.common.pubsub) + implementation(libs.common.firebase) implementation(projects.domain) implementation(projects.adapter) } diff --git a/statistics/adapter/build.gradle.kts b/statistics/adapter/build.gradle.kts index 7e476fda..fbd61896 100644 --- a/statistics/adapter/build.gradle.kts +++ b/statistics/adapter/build.gradle.kts @@ -1,5 +1,3 @@ -import com.gchristov.thecodinglove.gradleplugins.Deps - plugins { id("node-module-plugin") } @@ -8,8 +6,8 @@ kotlin { sourceSets { val commonMain by getting { dependencies { - implementation(Deps.Common.kotlin) - implementation(Deps.Common.network) + implementation(libs.common.kotlin) + implementation(libs.common.network) implementation(projects.domain) } } diff --git a/statistics/domain/build.gradle.kts b/statistics/domain/build.gradle.kts index 4d0f1242..daf3d5ce 100644 --- a/statistics/domain/build.gradle.kts +++ b/statistics/domain/build.gradle.kts @@ -1,5 +1,3 @@ -import com.gchristov.thecodinglove.gradleplugins.Deps - plugins { id("node-module-plugin") } @@ -8,7 +6,7 @@ kotlin { sourceSets { val commonMain by getting { dependencies { - implementation(Deps.Common.kotlin) + implementation(libs.common.kotlin) } } } diff --git a/statistics/service/build.gradle.kts b/statistics/service/build.gradle.kts index a2c484be..6417c849 100644 --- a/statistics/service/build.gradle.kts +++ b/statistics/service/build.gradle.kts @@ -1,5 +1,3 @@ -import com.gchristov.thecodinglove.gradleplugins.Deps - plugins { id("node-binary-plugin") } @@ -8,9 +6,9 @@ kotlin { sourceSets { val commonMain by getting { dependencies { - implementation(Deps.Common.kotlin) - implementation(Deps.Common.monitoring) - implementation(Deps.Common.network) + implementation(libs.common.kotlin) + implementation(libs.common.monitoring) + implementation(libs.common.network) implementation(projects.domain) implementation(projects.adapter) } From ce11050171d7a7cc5d6827be41016c72636bc49a Mon Sep 17 00:00:00 2001 From: Georgi Christov Date: Sat, 15 Nov 2025 22:22:19 +0100 Subject: [PATCH 7/9] Update yarn lock --- common/kotlin-js-store/yarn.lock | 2 +- search/kotlin-js-store/yarn.lock | 2 +- slack/kotlin-js-store/yarn.lock | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/common/kotlin-js-store/yarn.lock b/common/kotlin-js-store/yarn.lock index 2a514b4f..83a10696 100644 --- a/common/kotlin-js-store/yarn.lock +++ b/common/kotlin-js-store/yarn.lock @@ -99,7 +99,7 @@ dependencies: tslib "^2.1.0" -"@google-cloud/firestore@^6.8.0": +"@google-cloud/firestore@6.8.0", "@google-cloud/firestore@^6.8.0": version "6.8.0" resolved "https://registry.yarnpkg.com/@google-cloud/firestore/-/firestore-6.8.0.tgz#d8c852844c381afaf62592796606c10e178400b5" integrity sha512-JRpk06SmZXLGz0pNx1x7yU3YhkUXheKgH5hbDZ4kMsdhtfV5qPLJLRI4wv69K0cZorIk+zTMOwptue7hizo0eA== diff --git a/search/kotlin-js-store/yarn.lock b/search/kotlin-js-store/yarn.lock index 59530709..f640ba5d 100644 --- a/search/kotlin-js-store/yarn.lock +++ b/search/kotlin-js-store/yarn.lock @@ -78,7 +78,7 @@ dependencies: tslib "^2.1.0" -"@google-cloud/firestore@^6.8.0": +"@google-cloud/firestore@6.8.0", "@google-cloud/firestore@^6.8.0": version "6.8.0" resolved "https://registry.yarnpkg.com/@google-cloud/firestore/-/firestore-6.8.0.tgz#d8c852844c381afaf62592796606c10e178400b5" integrity sha512-JRpk06SmZXLGz0pNx1x7yU3YhkUXheKgH5hbDZ4kMsdhtfV5qPLJLRI4wv69K0cZorIk+zTMOwptue7hizo0eA== diff --git a/slack/kotlin-js-store/yarn.lock b/slack/kotlin-js-store/yarn.lock index f4bed32f..9b1b19f4 100644 --- a/slack/kotlin-js-store/yarn.lock +++ b/slack/kotlin-js-store/yarn.lock @@ -78,7 +78,7 @@ dependencies: tslib "^2.1.0" -"@google-cloud/firestore@^6.8.0": +"@google-cloud/firestore@6.8.0", "@google-cloud/firestore@^6.8.0": version "6.8.0" resolved "https://registry.yarnpkg.com/@google-cloud/firestore/-/firestore-6.8.0.tgz#d8c852844c381afaf62592796606c10e178400b5" integrity sha512-JRpk06SmZXLGz0pNx1x7yU3YhkUXheKgH5hbDZ4kMsdhtfV5qPLJLRI4wv69K0cZorIk+zTMOwptue7hizo0eA== From 51069513b567bbee8ea526bff8805e9eb3a20d35 Mon Sep 17 00:00:00 2001 From: Georgi Christov Date: Sat, 15 Nov 2025 23:18:01 +0100 Subject: [PATCH 8/9] Update local plugin definitions --- common/analytics-testfixtures/build.gradle.kts | 2 +- common/analytics/build.gradle.kts | 4 ++-- common/firebase/build.gradle.kts | 2 +- common/kotlin/build.gradle.kts | 2 +- common/monitoring/build.gradle.kts | 4 ++-- common/network-testfixtures/build.gradle.kts | 2 +- common/network/build.gradle.kts | 2 +- common/pubsub-testfixtures/build.gradle.kts | 2 +- common/pubsub/build.gradle.kts | 2 +- common/test/build.gradle.kts | 2 +- .../gchristov/thecodinglove/gradleplugins/BinaryPlugin.kt | 4 ++-- .../gchristov/thecodinglove/gradleplugins/ModulePlugin.kt | 2 +- gradle/libs.versions.toml | 1 - landing-page-web/service/build.gradle.kts | 2 +- landing-page-web/settings.gradle.kts | 5 +++++ proxy-web/service/build.gradle.kts | 2 +- proxy-web/settings.gradle.kts | 5 +++++ search/adapter/build.gradle.kts | 2 +- search/domain/build.gradle.kts | 2 +- search/service/build.gradle.kts | 2 +- search/test-fixtures/build.gradle.kts | 2 +- self-destruct/adapter/build.gradle.kts | 2 +- self-destruct/domain/build.gradle.kts | 2 +- self-destruct/service/build.gradle.kts | 2 +- slack-web/adapter/build.gradle.kts | 2 +- slack-web/domain/build.gradle.kts | 4 ++-- slack-web/service/build.gradle.kts | 2 +- slack/adapter/build.gradle.kts | 2 +- slack/domain/build.gradle.kts | 4 ++-- slack/service/build.gradle.kts | 2 +- statistics/adapter/build.gradle.kts | 2 +- statistics/domain/build.gradle.kts | 2 +- statistics/service/build.gradle.kts | 2 +- 33 files changed, 45 insertions(+), 36 deletions(-) diff --git a/common/analytics-testfixtures/build.gradle.kts b/common/analytics-testfixtures/build.gradle.kts index dd57bfee..fda9d354 100644 --- a/common/analytics-testfixtures/build.gradle.kts +++ b/common/analytics-testfixtures/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("node-module-plugin") + alias(libs.plugins.thecodinglove.node.module) } group = "com.gchristov.thecodinglove.common" diff --git a/common/analytics/build.gradle.kts b/common/analytics/build.gradle.kts index 4103cd18..79091c80 100644 --- a/common/analytics/build.gradle.kts +++ b/common/analytics/build.gradle.kts @@ -3,8 +3,8 @@ import com.gchristov.thecodinglove.gradleplugins.envSecret val packageId = "com.gchristov.thecodinglove.common.analytics" plugins { - id("node-module-plugin") - id("build-config-plugin") + alias(libs.plugins.thecodinglove.node.module) + alias(libs.plugins.thecodinglove.build.config) } group = "com.gchristov.thecodinglove.common" diff --git a/common/firebase/build.gradle.kts b/common/firebase/build.gradle.kts index 34116996..a4aa7011 100644 --- a/common/firebase/build.gradle.kts +++ b/common/firebase/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("node-module-plugin") + alias(libs.plugins.thecodinglove.node.module) } group = "com.gchristov.thecodinglove.common" diff --git a/common/kotlin/build.gradle.kts b/common/kotlin/build.gradle.kts index 6722d872..ac23cba1 100644 --- a/common/kotlin/build.gradle.kts +++ b/common/kotlin/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("base-node-plugin") + alias(libs.plugins.thecodinglove.base.node) } group = "com.gchristov.thecodinglove.common" diff --git a/common/monitoring/build.gradle.kts b/common/monitoring/build.gradle.kts index f83f8097..05dd7a96 100644 --- a/common/monitoring/build.gradle.kts +++ b/common/monitoring/build.gradle.kts @@ -3,8 +3,8 @@ import com.gchristov.thecodinglove.gradleplugins.envSecret val packageId = "com.gchristov.thecodinglove.common.monitoring" plugins { - id("node-module-plugin") - id("build-config-plugin") + alias(libs.plugins.thecodinglove.node.module) + alias(libs.plugins.thecodinglove.build.config) } group = "com.gchristov.thecodinglove.common" diff --git a/common/network-testfixtures/build.gradle.kts b/common/network-testfixtures/build.gradle.kts index d8d93ec7..c23c5118 100644 --- a/common/network-testfixtures/build.gradle.kts +++ b/common/network-testfixtures/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("node-module-plugin") + alias(libs.plugins.thecodinglove.node.module) } group = "com.gchristov.thecodinglove.common" diff --git a/common/network/build.gradle.kts b/common/network/build.gradle.kts index abc62dd9..191f8283 100644 --- a/common/network/build.gradle.kts +++ b/common/network/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("node-module-plugin") + alias(libs.plugins.thecodinglove.node.module) } group = "com.gchristov.thecodinglove.common" diff --git a/common/pubsub-testfixtures/build.gradle.kts b/common/pubsub-testfixtures/build.gradle.kts index a11a2e6b..112606cc 100644 --- a/common/pubsub-testfixtures/build.gradle.kts +++ b/common/pubsub-testfixtures/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("node-module-plugin") + alias(libs.plugins.thecodinglove.node.module) } group = "com.gchristov.thecodinglove.common" diff --git a/common/pubsub/build.gradle.kts b/common/pubsub/build.gradle.kts index 4f6be135..61db461a 100644 --- a/common/pubsub/build.gradle.kts +++ b/common/pubsub/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("node-module-plugin") + alias(libs.plugins.thecodinglove.node.module) } group = "com.gchristov.thecodinglove.common" diff --git a/common/test/build.gradle.kts b/common/test/build.gradle.kts index b779a1fe..eb1ba42c 100644 --- a/common/test/build.gradle.kts +++ b/common/test/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("base-node-plugin") + alias(libs.plugins.thecodinglove.base.node) } group = "com.gchristov.thecodinglove.common" diff --git a/gradle-plugins/conventions/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/BinaryPlugin.kt b/gradle-plugins/conventions/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/BinaryPlugin.kt index 3f4c0c8d..820d6ba9 100644 --- a/gradle-plugins/conventions/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/BinaryPlugin.kt +++ b/gradle-plugins/conventions/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/BinaryPlugin.kt @@ -7,7 +7,7 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension class NodeBinaryPlugin : Plugin { override fun apply(target: Project) { target.run { - plugins.apply("node-module-plugin") + plugins.apply(libs.findPlugin("thecodinglove-node-module").get().get().pluginId) extensions.configure(KotlinMultiplatformExtension::class.java) { js(IR) { binaries.library() @@ -33,7 +33,7 @@ class NodeBinaryPlugin : Plugin { class BrowserBinaryPlugin : Plugin { override fun apply(target: Project) { target.run { - plugins.apply("base-browser-plugin") + plugins.apply(libs.findPlugin("thecodinglove-base-browser").get().get().pluginId) extensions.configure(KotlinMultiplatformExtension::class.java) { js(IR) { binaries.executable() diff --git a/gradle-plugins/conventions/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/ModulePlugin.kt b/gradle-plugins/conventions/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/ModulePlugin.kt index 7d371c10..8169e766 100644 --- a/gradle-plugins/conventions/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/ModulePlugin.kt +++ b/gradle-plugins/conventions/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/ModulePlugin.kt @@ -7,7 +7,7 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension class NodeModulePlugin : Plugin { override fun apply(target: Project) { target.run { - plugins.apply("base-node-plugin") + plugins.apply(libs.findPlugin("thecodinglove-base-node").get().get().pluginId) plugins.apply("org.jetbrains.kotlin.plugin.serialization") extensions.configure(KotlinMultiplatformExtension::class.java) { sourceSets.maybeCreate("commonTest").dependencies { diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index ba0752a9..a474504e 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -62,7 +62,6 @@ common-test = { group = "com.gchristov.thecodinglove.common", name = "test" } [plugins] # Plugins defined by this project -# TODO: Figure out how to do the below for multi-project setup thecodinglove-base-node = { id = "base-node-plugin", version = "unspecified" } thecodinglove-base-browser = { id = "base-browser-plugin", version = "unspecified" } thecodinglove-node-module = { id = "node-module-plugin", version = "unspecified" } diff --git a/landing-page-web/service/build.gradle.kts b/landing-page-web/service/build.gradle.kts index 4da23775..975797cc 100644 --- a/landing-page-web/service/build.gradle.kts +++ b/landing-page-web/service/build.gradle.kts @@ -1,7 +1,7 @@ import com.gchristov.thecodinglove.gradleplugins.binaryRootDirectory plugins { - id("browser-binary-plugin") + alias(libs.plugins.thecodinglove.browser.binary) } // Bundle resources specific to this binary diff --git a/landing-page-web/settings.gradle.kts b/landing-page-web/settings.gradle.kts index c0e5b365..1d63cf00 100644 --- a/landing-page-web/settings.gradle.kts +++ b/landing-page-web/settings.gradle.kts @@ -12,6 +12,11 @@ dependencyResolutionManagement { repositories { gradlePluginPortal() } + versionCatalogs { + create("libs") { + from(files("../gradle/libs.versions.toml")) + } + } } develocity { diff --git a/proxy-web/service/build.gradle.kts b/proxy-web/service/build.gradle.kts index 4da23775..975797cc 100644 --- a/proxy-web/service/build.gradle.kts +++ b/proxy-web/service/build.gradle.kts @@ -1,7 +1,7 @@ import com.gchristov.thecodinglove.gradleplugins.binaryRootDirectory plugins { - id("browser-binary-plugin") + alias(libs.plugins.thecodinglove.browser.binary) } // Bundle resources specific to this binary diff --git a/proxy-web/settings.gradle.kts b/proxy-web/settings.gradle.kts index bca07773..3304cd11 100644 --- a/proxy-web/settings.gradle.kts +++ b/proxy-web/settings.gradle.kts @@ -12,6 +12,11 @@ dependencyResolutionManagement { repositories { gradlePluginPortal() } + versionCatalogs { + create("libs") { + from(files("../gradle/libs.versions.toml")) + } + } } develocity { diff --git a/search/adapter/build.gradle.kts b/search/adapter/build.gradle.kts index c75d5f31..37b6e705 100644 --- a/search/adapter/build.gradle.kts +++ b/search/adapter/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("node-module-plugin") + alias(libs.plugins.thecodinglove.node.module) } kotlin { diff --git a/search/domain/build.gradle.kts b/search/domain/build.gradle.kts index e8726bdf..fa508267 100644 --- a/search/domain/build.gradle.kts +++ b/search/domain/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("node-module-plugin") + alias(libs.plugins.thecodinglove.node.module) } kotlin { diff --git a/search/service/build.gradle.kts b/search/service/build.gradle.kts index 0b32f821..05f93d89 100644 --- a/search/service/build.gradle.kts +++ b/search/service/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("node-binary-plugin") + alias(libs.plugins.thecodinglove.node.binary) } kotlin { diff --git a/search/test-fixtures/build.gradle.kts b/search/test-fixtures/build.gradle.kts index 1e22e869..7823411e 100644 --- a/search/test-fixtures/build.gradle.kts +++ b/search/test-fixtures/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("node-module-plugin") + alias(libs.plugins.thecodinglove.node.module) } kotlin { diff --git a/self-destruct/adapter/build.gradle.kts b/self-destruct/adapter/build.gradle.kts index fbd61896..04490854 100644 --- a/self-destruct/adapter/build.gradle.kts +++ b/self-destruct/adapter/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("node-module-plugin") + alias(libs.plugins.thecodinglove.node.module) } kotlin { diff --git a/self-destruct/domain/build.gradle.kts b/self-destruct/domain/build.gradle.kts index daf3d5ce..cab7503d 100644 --- a/self-destruct/domain/build.gradle.kts +++ b/self-destruct/domain/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("node-module-plugin") + alias(libs.plugins.thecodinglove.node.module) } kotlin { diff --git a/self-destruct/service/build.gradle.kts b/self-destruct/service/build.gradle.kts index fda13d2f..0c65d714 100644 --- a/self-destruct/service/build.gradle.kts +++ b/self-destruct/service/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("node-binary-plugin") + alias(libs.plugins.thecodinglove.node.binary) } kotlin { diff --git a/slack-web/adapter/build.gradle.kts b/slack-web/adapter/build.gradle.kts index e22c36e3..e9c8b169 100644 --- a/slack-web/adapter/build.gradle.kts +++ b/slack-web/adapter/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("node-module-plugin") + alias(libs.plugins.thecodinglove.node.module) } kotlin { diff --git a/slack-web/domain/build.gradle.kts b/slack-web/domain/build.gradle.kts index a319c91c..c1828e6b 100644 --- a/slack-web/domain/build.gradle.kts +++ b/slack-web/domain/build.gradle.kts @@ -3,8 +3,8 @@ import com.gchristov.thecodinglove.gradleplugins.envSecret val packageId = "com.gchristov.thecodinglove.slackweb.domain" plugins { - id("node-module-plugin") - id("build-config-plugin") + alias(libs.plugins.thecodinglove.node.module) + alias(libs.plugins.thecodinglove.build.config) } kotlin { diff --git a/slack-web/service/build.gradle.kts b/slack-web/service/build.gradle.kts index a4b40ab0..df5a70e9 100644 --- a/slack-web/service/build.gradle.kts +++ b/slack-web/service/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("node-binary-plugin") + alias(libs.plugins.thecodinglove.node.binary) } kotlin { diff --git a/slack/adapter/build.gradle.kts b/slack/adapter/build.gradle.kts index 005de0cf..d0e33269 100644 --- a/slack/adapter/build.gradle.kts +++ b/slack/adapter/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("node-module-plugin") + alias(libs.plugins.thecodinglove.node.module) } kotlin { diff --git a/slack/domain/build.gradle.kts b/slack/domain/build.gradle.kts index 030a0791..c8f08c04 100644 --- a/slack/domain/build.gradle.kts +++ b/slack/domain/build.gradle.kts @@ -3,8 +3,8 @@ import com.gchristov.thecodinglove.gradleplugins.envSecret val packageId = "com.gchristov.thecodinglove.slack.domain" plugins { - id("node-module-plugin") - id("build-config-plugin") + alias(libs.plugins.thecodinglove.node.module) + alias(libs.plugins.thecodinglove.build.config) } kotlin { diff --git a/slack/service/build.gradle.kts b/slack/service/build.gradle.kts index a2589ef1..add350aa 100644 --- a/slack/service/build.gradle.kts +++ b/slack/service/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("node-binary-plugin") + alias(libs.plugins.thecodinglove.node.binary) } kotlin { diff --git a/statistics/adapter/build.gradle.kts b/statistics/adapter/build.gradle.kts index fbd61896..04490854 100644 --- a/statistics/adapter/build.gradle.kts +++ b/statistics/adapter/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("node-module-plugin") + alias(libs.plugins.thecodinglove.node.module) } kotlin { diff --git a/statistics/domain/build.gradle.kts b/statistics/domain/build.gradle.kts index daf3d5ce..cab7503d 100644 --- a/statistics/domain/build.gradle.kts +++ b/statistics/domain/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("node-module-plugin") + alias(libs.plugins.thecodinglove.node.module) } kotlin { diff --git a/statistics/service/build.gradle.kts b/statistics/service/build.gradle.kts index 6417c849..ad00a6c1 100644 --- a/statistics/service/build.gradle.kts +++ b/statistics/service/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("node-binary-plugin") + alias(libs.plugins.thecodinglove.node.binary) } kotlin { From 7b0803aae58835290f1d42d356d8e392b88525bc Mon Sep 17 00:00:00 2001 From: Georgi Christov Date: Sun, 16 Nov 2025 23:08:45 +0100 Subject: [PATCH 9/9] sort out serialization and build konfig plugins --- gradle-plugins/conventions/build.gradle.kts | 7 +++---- .../gchristov/thecodinglove/gradleplugins/BasePlugin.kt | 3 --- gradle/libs.versions.toml | 6 +++--- 3 files changed, 6 insertions(+), 10 deletions(-) diff --git a/gradle-plugins/conventions/build.gradle.kts b/gradle-plugins/conventions/build.gradle.kts index fbfcbd34..4926e7de 100644 --- a/gradle-plugins/conventions/build.gradle.kts +++ b/gradle-plugins/conventions/build.gradle.kts @@ -31,8 +31,7 @@ gradlePlugin { dependencies { compileOnly(libs.kotlin.gradlePlugin) - // TODO: Setup in a different way, figure out why it doesn't work - implementation(libs.kotlin.serialization) - // TODO: Setup in a different way, figure out why it doesn't work - implementation(libs.buildKonfig) + // Allows these to be available and applied in the pre-compiled conventions plugin + implementation(libs.kotlin.serialization.gradlePlugin) + implementation(libs.buildKonfig.gradlePlugin) } \ No newline at end of file diff --git a/gradle-plugins/conventions/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/BasePlugin.kt b/gradle-plugins/conventions/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/BasePlugin.kt index ff461e26..9fc43dfe 100644 --- a/gradle-plugins/conventions/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/BasePlugin.kt +++ b/gradle-plugins/conventions/src/main/kotlin/com/gchristov/thecodinglove/gradleplugins/BasePlugin.kt @@ -2,12 +2,9 @@ package com.gchristov.thecodinglove.gradleplugins import org.gradle.api.Plugin import org.gradle.api.Project -import org.gradle.api.file.Directory import org.gradle.kotlin.dsl.assign import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension import org.jetbrains.kotlin.gradle.targets.js.dsl.ExperimentalDistributionDsl -import java.io.FileInputStream -import java.util.* abstract class BaseMultiplatformPlugin : Plugin { override fun apply(target: Project) { diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index a474504e..24ad134c 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -19,8 +19,6 @@ npm-google-firestore = "6.8.0" npm-google-pubsub = "4.0.7" [libraries] -buildKonfig = { module = "com.codingfeline.buildkonfig:buildkonfig-gradle-plugin", version.ref = "buildKonfig" } -kotlin-serialization = { module = "org.jetbrains.kotlin:kotlin-serialization", version.ref = "kotlin" } kotlin-test = { module = "org.jetbrains.kotlin:kotlin-test" } kotlinx-coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "kotlinx-coroutines" } #noinspection UnusedVersionCatalogEntry @@ -44,8 +42,10 @@ npm-firebase-admin = { group = "npm", name = "firebase-admin", version.ref = "np npm-google-firestore = { group = "npm", name = "@google-cloud/firestore", version.ref = "npm-google-firestore" } npm-google-pubsub = { group = "npm", name = "@google-cloud/pubsub", version.ref = "npm-google-pubsub" } -# Dependencies of the included gradle-plugins +# Plugin dependencies included in the pre-compiled gradle-plugins/conventions project kotlin-gradlePlugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" } +kotlin-serialization-gradlePlugin = { module = "org.jetbrains.kotlin:kotlin-serialization", version.ref = "kotlin" } +buildKonfig-gradlePlugin = { module = "com.codingfeline.buildkonfig:buildkonfig-gradle-plugin", version.ref = "buildKonfig" } # Dependency notations for internal libraries common-analytics = { group = "com.gchristov.thecodinglove.common", name = "analytics" }