Skip to content

Commit bf96e4a

Browse files
committed
refactor(build): change spotless to Gradle plugin
1 parent b4cb15e commit bf96e4a

15 files changed

Lines changed: 128 additions & 107 deletions

build-plugin/plugin/build.gradle.kts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,10 @@ gradlePlugin {
7171
id = "net.thunderbird.gradle.plugin.quality.detekt"
7272
implementationClass = "net.thunderbird.gradle.plugin.quality.detekt.DetektPlugin"
7373
}
74+
register("QualitySpotless") {
75+
id = "net.thunderbird.gradle.plugin.quality.spotless"
76+
implementationClass = "net.thunderbird.gradle.plugin.quality.spotless.SpotlessPlugin"
77+
}
7478
}
7579
}
7680

build-plugin/src/main/kotlin/SpotlessExtension.kt renamed to build-plugin/plugin/src/main/kotlin/net/thunderbird/gradle/plugin/quality/spotless/SpotlessExtension.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
package net.thunderbird.gradle.plugin.quality.spotless
12

23
val kotlinEditorConfigOverride = mapOf(
34
"ktlint_code_style" to "intellij_idea",
Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
package net.thunderbird.gradle.plugin.quality.spotless
2+
3+
import com.diffplug.gradle.spotless.SpotlessExtension
4+
import org.gradle.api.Plugin
5+
import org.gradle.api.Project
6+
import org.gradle.kotlin.dsl.configure
7+
8+
/**
9+
* A Gradle plugin to configure Spotless code formatting for Kotlin, Kotlin Gradle scripts, Markdown,
10+
* and miscellaneous files like .gitignore.
11+
*/
12+
class SpotlessPlugin : Plugin<Project> {
13+
override fun apply(target: Project) {
14+
with(target) {
15+
pluginManager.apply("com.diffplug.spotless")
16+
17+
if (this == rootProject) {
18+
configureSpotlessRoot()
19+
} else {
20+
configureSpotless()
21+
}
22+
}
23+
}
24+
25+
private fun Project.configureSpotless() {
26+
extensions.configure<SpotlessExtension> {
27+
kotlin {
28+
target(
29+
"src/*/kotlin/*.kt",
30+
"src/*/kotlin/**/*.kt",
31+
)
32+
33+
ktlint()
34+
.setEditorConfigPath("${rootProject.projectDir}/.editorconfig")
35+
.editorConfigOverride(kotlinEditorConfigOverride)
36+
}
37+
38+
kotlinGradle {
39+
target(
40+
"*.gradle.kts",
41+
)
42+
43+
ktlint()
44+
.setEditorConfigPath("${rootProject.projectDir}/.editorconfig")
45+
.editorConfigOverride(
46+
mapOf(
47+
"ktlint_code_style" to "intellij_idea",
48+
"ktlint_standard_function-expression-body" to "disabled",
49+
"ktlint_standard_function-signature" to "disabled",
50+
),
51+
)
52+
}
53+
54+
flexmark {
55+
target(
56+
"*.md",
57+
)
58+
flexmark()
59+
}
60+
61+
format("misc") {
62+
target(".gitignore")
63+
trimTrailingWhitespace()
64+
}
65+
}
66+
}
67+
68+
private fun Project.configureSpotlessRoot() {
69+
extensions.configure<SpotlessExtension> {
70+
kotlin {
71+
target(
72+
"build-plugin/plugin/src/*/kotlin/*.kt",
73+
"build-plugin/plugin/src/*/kotlin/**/*.kt",
74+
)
75+
ktlint()
76+
.setEditorConfigPath("${project.rootProject.projectDir}/.editorconfig")
77+
.editorConfigOverride(kotlinEditorConfigOverride)
78+
}
79+
80+
kotlinGradle {
81+
target(
82+
"*.gradle.kts",
83+
"build-plugin/*.gradle.kts",
84+
"build-plugin/plugin/*.gradle.kts",
85+
)
86+
87+
ktlint()
88+
.setEditorConfigPath("${project.rootProject.projectDir}/.editorconfig")
89+
.editorConfigOverride(
90+
mapOf(
91+
"ktlint_code_style" to "intellij_idea",
92+
"ktlint_standard_function-expression-body" to "disabled",
93+
"ktlint_standard_function-signature" to "disabled",
94+
),
95+
)
96+
}
97+
98+
flexmark {
99+
target(
100+
"*.md",
101+
"docs/*.md",
102+
"docs/**/*.md",
103+
)
104+
flexmark()
105+
}
106+
107+
format("misc") {
108+
target(".gitignore")
109+
trimTrailingWhitespace()
110+
}
111+
}
112+
}
113+
}

build-plugin/src/main/kotlin/thunderbird.app.android.compose.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ plugins {
33
id("org.jetbrains.kotlin.plugin.compose")
44
id("net.thunderbird.gradle.plugin.quality.coverage")
55
id("net.thunderbird.gradle.plugin.quality.detekt")
6-
id("thunderbird.quality.spotless")
6+
id("net.thunderbird.gradle.plugin.quality.spotless")
77
}
88

99
android {

build-plugin/src/main/kotlin/thunderbird.app.android.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ plugins {
22
id("com.android.application")
33
id("net.thunderbird.gradle.plugin.quality.coverage")
44
id("net.thunderbird.gradle.plugin.quality.detekt")
5-
id("thunderbird.quality.spotless")
5+
id("net.thunderbird.gradle.plugin.quality.spotless")
66
}
77

88
android {

build-plugin/src/main/kotlin/thunderbird.app.jvm.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ plugins {
33
id("org.jetbrains.kotlin.jvm")
44
id("net.thunderbird.gradle.plugin.quality.coverage")
55
id("net.thunderbird.gradle.plugin.quality.detekt")
6-
id("thunderbird.quality.spotless")
6+
id("net.thunderbird.gradle.plugin.quality.spotless")
77
}
88

99
java {

build-plugin/src/main/kotlin/thunderbird.library.android.compose.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ plugins {
66
id("org.jetbrains.kotlin.plugin.serialization")
77
id("net.thunderbird.gradle.plugin.quality.coverage")
88
id("net.thunderbird.gradle.plugin.quality.detekt")
9-
id("thunderbird.quality.spotless")
9+
id("net.thunderbird.gradle.plugin.quality.spotless")
1010
}
1111

1212
androidComponents {

build-plugin/src/main/kotlin/thunderbird.library.android.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ plugins {
22
id("com.android.library")
33
id("net.thunderbird.gradle.plugin.quality.coverage")
44
id("net.thunderbird.gradle.plugin.quality.detekt")
5-
id("thunderbird.quality.spotless")
5+
id("net.thunderbird.gradle.plugin.quality.spotless")
66
}
77

88
android {

build-plugin/src/main/kotlin/thunderbird.library.jvm.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ plugins {
55
id("org.jetbrains.kotlin.jvm")
66
id("net.thunderbird.gradle.plugin.quality.coverage")
77
id("net.thunderbird.gradle.plugin.quality.detekt")
8-
id("thunderbird.quality.spotless")
8+
id("net.thunderbird.gradle.plugin.quality.spotless")
99
}
1010

1111
java {

build-plugin/src/main/kotlin/thunderbird.library.kmp.compose.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ plugins {
66
id("org.jetbrains.kotlin.plugin.serialization")
77
id("net.thunderbird.gradle.plugin.quality.coverage")
88
id("net.thunderbird.gradle.plugin.quality.detekt")
9-
id("thunderbird.quality.spotless")
9+
id("net.thunderbird.gradle.plugin.quality.spotless")
1010
}
1111

1212
kotlin {

0 commit comments

Comments
 (0)