Skip to content

Commit

Permalink
Fix Spotless being slow by applying it to subprojects
Browse files Browse the repository at this point in the history
  • Loading branch information
wmontwe committed Oct 23, 2024
1 parent ab8bdf7 commit ae7f9a5
Show file tree
Hide file tree
Showing 10 changed files with 121 additions and 43 deletions.
67 changes: 67 additions & 0 deletions build-plugin/src/main/kotlin/SpotlessExtension.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
import com.diffplug.gradle.spotless.SpotlessExtension
import org.gradle.accessors.dm.LibrariesForLibs
import org.gradle.api.Project

fun SpotlessExtension.configureKotlinCheck(
targets: List<String>,
project: Project,
libs: LibrariesForLibs,
) {
kotlin {
ktlint(libs.versions.ktlint.get())
.setEditorConfigPath("${project.rootProject.projectDir}/.editorconfig")
.editorConfigOverride(kotlinEditorConfigOverride)
target(targets)
targetExclude(
"**/build/",
)
}
}

fun SpotlessExtension.configureKotlinGradleCheck(
targets: List<String>,
project: Project,
libs: LibrariesForLibs,
) {
kotlinGradle {
ktlint(libs.versions.ktlint.get())
.setEditorConfigPath("${project.rootProject.projectDir}/.editorconfig")
.editorConfigOverride(
mapOf(
"ktlint_standard_function-signature" to "disabled",
)
)
target(targets)
targetExclude("**/build/")
}
}

fun SpotlessExtension.configureMarkdownCheck(
targets: List<String>,
) {
format("markdown") {
prettier()
target(targets)
targetExclude(
"**/build/",
)
}
}

fun SpotlessExtension.configureMiscCheck() {
format("misc") {
target(
"*.gradle",
".gitignore",
)
trimTrailingWhitespace()
}
}

val kotlinEditorConfigOverride = mapOf(
"ktlint_function_naming_ignore_when_annotated_with" to "Composable",
"ktlint_standard_property-naming" to "disabled",
"ktlint_standard_function-signature" to "disabled",
"ktlint_standard_parameter-list-spacing" to "disabled",
"ktlint_ignore_back_ticked_identifier" to "true",
)
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ plugins {
id("thunderbird.app.android")
id("org.jetbrains.kotlin.plugin.compose")
id("thunderbird.quality.detekt.typed")
id("thunderbird.quality.spotless")
}

android {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ plugins {
id("com.android.application")
id("org.jetbrains.kotlin.android")
id("thunderbird.quality.detekt.typed")
id("thunderbird.quality.spotless")
}

android {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ plugins {
id("application")
id("org.jetbrains.kotlin.jvm")
id("thunderbird.quality.detekt.typed")
id("thunderbird.quality.spotless")
}

java {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ plugins {
id("org.jetbrains.kotlin.plugin.compose")
id("org.jetbrains.kotlin.plugin.serialization")
id("thunderbird.quality.detekt.typed")
id("thunderbird.quality.spotless")
}

android {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ plugins {
id("com.android.library")
id("org.jetbrains.kotlin.android")
id("thunderbird.quality.detekt.typed")
id("thunderbird.quality.spotless")
}

android {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ plugins {
`java-library`
id("org.jetbrains.kotlin.jvm")
id("thunderbird.quality.detekt.typed")
id("thunderbird.quality.spotless")
}

java {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,46 +5,27 @@ plugins {
}

configure<SpotlessExtension> {
kotlin {
ktlint(libs.versions.ktlint.get())
.setEditorConfigPath("$projectDir/.editorconfig")
.editorConfigOverride(editorConfigOverride)
target("**/*.kt")
targetExclude(
"**/build/",
"**/resources/",
"plugins/openpgp-api-lib/",
"ui-utils/ItemTouchHelper/",
"ui-utils/LinearLayoutManager/",
)
}
kotlinGradle {
ktlint(libs.versions.ktlint.get())
.setEditorConfigPath("$projectDir/.editorconfig")
.editorConfigOverride(editorConfigOverride)
target("**/*.gradle.kts")
targetExclude("**/build/")
}
format("markdown") {
prettier()
target("**/*.md")
targetExclude(
"plugins/openpgp-api-lib/",
"app-k9mail/fastlane/README.md",
"**/build/",
)
}
format("misc") {
target("**/*.gradle", "**/.gitignore")
trimTrailingWhitespace()
targetExclude("app-k9mail/dependencies/**")
}
}
configureKotlinCheck(
targets = listOf(
"*.kt",
),
project = project,
libs = libs,
)

configureKotlinGradleCheck(
targets = listOf(
"*.gradle.kts",
),
project = project,
libs = libs,
)

val editorConfigOverride = mapOf(
"ktlint_function_naming_ignore_when_annotated_with" to "Composable",
"ktlint_standard_property-naming" to "disabled",
"ktlint_standard_function-signature" to "disabled",
"ktlint_standard_parameter-list-spacing" to "disabled",
"ktlint_ignore_back_ticked_identifier" to "true",
)
configureMarkdownCheck(
listOf(
"*.md",
),
)

configureMiscCheck()
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import com.diffplug.gradle.spotless.SpotlessExtension

plugins {
id("com.diffplug.spotless")
}

configure<SpotlessExtension> {
configureKotlinGradleCheck(
targets = listOf(
"*.gradle.kts",
"build-plugin/**/*.gradle.kts",
),
project = project,
libs = libs,
)

configureMarkdownCheck(
targets = listOf(
"*.md",
),
)

configureMiscCheck()
}
2 changes: 1 addition & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ plugins {
alias(libs.plugins.kotlin.serialization) apply false
alias(libs.plugins.ksp) apply false

id("thunderbird.quality.spotless")
id("thunderbird.quality.spotless.root")
id("thunderbird.dependency.check")
}

Expand Down

0 comments on commit ae7f9a5

Please sign in to comment.