Skip to content

Commit eeb4df4

Browse files
committed
Introduce compose and kmp conventional plugins
1 parent 5d96b7a commit eeb4df4

14 files changed

Lines changed: 132 additions & 35 deletions

File tree

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
plugins {
2+
`kotlin-dsl`
3+
}
4+
5+
group = "io.github.composegears.valkyrie"
6+
7+
dependencies {
8+
compileOnly(libs.kotlin.compose.compiler.plugin)
9+
compileOnly(libs.kotlin.gradle.plugin)
10+
}
11+
12+
gradlePlugin {
13+
plugins {
14+
register("valkyrie.kmp") {
15+
id = "valkyrie.kmp"
16+
implementationClass = "KmpPlugin"
17+
}
18+
register("valkyrie.compose") {
19+
id = "valkyrie.compose"
20+
implementationClass = "ComposePlugin"
21+
}
22+
}
23+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
2+
import io.github.composegears.valkyrie.internal.composeCompiler
3+
import io.github.composegears.valkyrie.internal.jetbrainsComposePluginId
4+
import io.github.composegears.valkyrie.internal.kotlinComposePluginId
5+
import org.gradle.api.Plugin
6+
import org.gradle.api.Project
7+
import org.gradle.kotlin.dsl.apply
8+
9+
class ComposePlugin : Plugin<Project> {
10+
11+
override fun apply(target: Project) = with(target) {
12+
apply(plugin = jetbrainsComposePluginId)
13+
apply(plugin = kotlinComposePluginId)
14+
15+
composeCompiler {
16+
stabilityConfigurationFiles.add {
17+
rootDir.resolve("stability_config.conf")
18+
}
19+
}
20+
}
21+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import io.github.composegears.valkyrie.extension.applyTargets
2+
import io.github.composegears.valkyrie.internal.kmpExtension
3+
import io.github.composegears.valkyrie.internal.kotlinMultiplatformPluginId
4+
import org.gradle.api.Plugin
5+
import org.gradle.api.Project
6+
import org.gradle.kotlin.dsl.apply
7+
8+
class KmpPlugin : Plugin<Project> {
9+
10+
override fun apply(target: Project) = with(target) {
11+
apply(plugin = kotlinMultiplatformPluginId)
12+
13+
kmpExtension {
14+
applyTargets()
15+
16+
compilerOptions {
17+
extraWarnings.set(true)
18+
}
19+
}
20+
}
21+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package io.github.composegears.valkyrie.extension
2+
3+
import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl
4+
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
5+
6+
fun KotlinMultiplatformExtension.applyTargets() {
7+
jvm()
8+
9+
@OptIn(ExperimentalWasmDsl::class)
10+
wasmJs {
11+
browser()
12+
binaries.executable()
13+
}
14+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package io.github.composegears.valkyrie.internal
2+
3+
import libs
4+
import org.gradle.api.Project
5+
6+
internal val Project.kotlinMultiplatformPluginId
7+
get() = libs.plugins.kotlin.multiplatform.get().pluginId
8+
9+
internal val Project.jetbrainsComposePluginId
10+
get() = libs.plugins.jetbrains.compose.get().pluginId
11+
12+
internal val Project.kotlinComposePluginId
13+
get() = libs.plugins.kotlin.compose.get().pluginId
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package io.github.composegears.valkyrie.internal
2+
3+
import org.gradle.api.Project
4+
import org.gradle.kotlin.dsl.configure
5+
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
6+
import org.jetbrains.kotlin.compose.compiler.gradle.ComposeCompilerGradlePluginExtension
7+
8+
internal fun Project.kmpExtension(action: KotlinMultiplatformExtension.() -> Unit) =
9+
extensions.configure<KotlinMultiplatformExtension>(action)
10+
11+
fun Project.composeCompiler(block: ComposeCompilerGradlePluginExtension.() -> Unit) =
12+
extensions.configure<ComposeCompilerGradlePluginExtension>(block)

build-logic/settings.gradle.kts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
dependencyResolutionManagement {
2+
repositories {
3+
google()
4+
mavenCentral()
5+
}
6+
}
7+
8+
plugins {
9+
id("dev.panuszewski.typesafe-conventions") version "0.6.0"
10+
}
11+
12+
rootProject.name = "build-logic"
13+
include(":convention")

build.gradle.kts

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import com.diffplug.gradle.spotless.SpotlessExtension
22
import org.jetbrains.intellij.platform.gradle.extensions.IntelliJPlatformDependenciesExtension
33
import org.jetbrains.intellij.platform.gradle.extensions.intellijPlatform
44
import org.jetbrains.intellij.platform.gradle.plugins.project.IntelliJPlatformBasePlugin
5-
import org.jetbrains.kotlin.compose.compiler.gradle.ComposeCompilerGradlePluginExtension
65

76
plugins {
87
alias(libs.plugins.kotlin.jvm) apply false
@@ -17,12 +16,6 @@ plugins {
1716
}
1817

1918
allprojects {
20-
plugins.withId(rootProject.libs.plugins.kotlin.compose.get().pluginId) {
21-
extensions.configure<ComposeCompilerGradlePluginExtension> {
22-
stabilityConfigurationFiles.addAll(rootProject.layout.projectDirectory.file("stability_config.conf"))
23-
}
24-
}
25-
2619
plugins.withType<IntelliJPlatformBasePlugin>().configureEach {
2720
// https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin.html#configuration.repositories
2821
repositories {

components/ir-compose/build.gradle.kts

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,9 @@
1-
import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl
2-
31
plugins {
4-
alias(libs.plugins.kotlin.multiplatform)
5-
alias(libs.plugins.kotlin.compose)
6-
alias(libs.plugins.jetbrains.compose)
2+
alias(libs.plugins.valkyrie.kmp)
3+
alias(libs.plugins.valkyrie.compose)
74
}
85

96
kotlin {
10-
jvm()
11-
12-
@OptIn(ExperimentalWasmDsl::class)
13-
wasmJs {
14-
browser()
15-
binaries.executable()
16-
}
17-
187
sourceSets {
198
commonMain.dependencies {
209
api(projects.components.ir)

components/ir/build.gradle.kts

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,8 @@
1-
import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl
2-
31
plugins {
4-
alias(libs.plugins.kotlin.multiplatform)
2+
alias(libs.plugins.valkyrie.kmp)
53
}
64

75
kotlin {
8-
jvm()
9-
10-
@OptIn(ExperimentalWasmDsl::class)
11-
wasmJs {
12-
browser()
13-
binaries.executable()
14-
}
15-
166
sourceSets {
177
commonTest.dependencies {
188
implementation(libs.assertk)

0 commit comments

Comments
 (0)