app

Local-first trade for farms and co-ops
git clone https://radroots.dev/git/app.git
Log | Files | Refs | README | LICENSE

commit 6a083a14c5674fb4d23fc749e75e23df421e4263
parent 9811d487b3948cd9d5417995f400ae9fdb576efa
Author: triesap <tyson@radroots.org>
Date:   Tue, 11 Aug 2026 04:09:29 +0000

build: use typed lint configuration

- configure ktlint through its pinned typed Gradle extension
- preserve the Compose function naming editorconfig property
- remove reflection and unchecked extension casts
- delete retired Detekt exclusions without replacement suppressions

Diffstat:
Mbuild-logic/plugins/src/main/kotlin/org/harvestcircle/buildlogic/plugins/HarvestCircleDesktopAppPlugin.kt | 13++++++-------
Mbuild-logic/plugins/src/main/kotlin/org/harvestcircle/buildlogic/plugins/HarvestCircleKmpSharedPlugin.kt | 16++++++----------
Mconfig/detekt/detekt.yml | 6------
3 files changed, 12 insertions(+), 23 deletions(-)

diff --git a/build-logic/plugins/src/main/kotlin/org/harvestcircle/buildlogic/plugins/HarvestCircleDesktopAppPlugin.kt b/build-logic/plugins/src/main/kotlin/org/harvestcircle/buildlogic/plugins/HarvestCircleDesktopAppPlugin.kt @@ -16,6 +16,7 @@ import org.harvestcircle.buildlogic.plugins.tasks.DesktopBuildMetadataTask import org.harvestcircle.buildlogic.plugins.tasks.GenerateDesktopBuildMetadata import org.harvestcircle.buildlogic.plugins.tasks.VerifyGeneratedDesktopBuildMetadata import org.harvestcircle.buildlogic.plugins.tasks.VerifyTestInventory +import org.jlleitschuh.gradle.ktlint.KtlintExtension import org.jetbrains.compose.ComposeExtension import org.jetbrains.compose.desktop.DesktopExtension import org.jetbrains.kotlin.gradle.dsl.JvmTarget @@ -75,13 +76,11 @@ public class HarvestCircleDesktopAppPlugin : Plugin<Project> { } private fun configureKtlint(target: Project) { - val ktlintExtension: Any = target.extensions.getByName("ktlint") - @Suppress("UNCHECKED_CAST") - val property = - ktlintExtension.javaClass - .getMethod("getAdditionalEditorconfig") - .invoke(ktlintExtension) as org.gradle.api.provider.MapProperty<String, String> - property.set(mapOf("ktlint_function_naming_ignore_when_annotated_with" to "Composable")) + target.extensions.configure(KtlintExtension::class.java) { extension -> + extension.additionalEditorconfig.set( + mapOf("ktlint_function_naming_ignore_when_annotated_with" to "Composable"), + ) + } } private fun configureQuality(target: Project) { diff --git a/build-logic/plugins/src/main/kotlin/org/harvestcircle/buildlogic/plugins/HarvestCircleKmpSharedPlugin.kt b/build-logic/plugins/src/main/kotlin/org/harvestcircle/buildlogic/plugins/HarvestCircleKmpSharedPlugin.kt @@ -3,9 +3,9 @@ package org.harvestcircle.buildlogic.plugins import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.api.artifacts.VersionCatalogsExtension -import org.gradle.api.provider.MapProperty import org.harvestcircle.buildlogic.contracts.resolveNativeTarget import org.harvestcircle.buildlogic.plugins.tasks.VerifySharedBoundary +import org.jlleitschuh.gradle.ktlint.KtlintExtension import org.jetbrains.kotlin.gradle.dsl.JvmTarget import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType @@ -22,15 +22,11 @@ public class HarvestCircleKmpSharedPlugin : Plugin<Project> { val kotlinVersion = catalog.findVersion("kotlin").get().requiredVersion val composeVersion = catalog.findVersion("compose").get().requiredVersion - val ktlintExtension: Any = target.extensions.getByName("ktlint") - @Suppress("UNCHECKED_CAST") - val additionalEditorconfig = - ktlintExtension.javaClass - .getMethod("getAdditionalEditorconfig") - .invoke(ktlintExtension) as MapProperty<String, String> - additionalEditorconfig.set( - mapOf("ktlint_function_naming_ignore_when_annotated_with" to "Composable"), - ) + target.extensions.configure(KtlintExtension::class.java) { extension -> + extension.additionalEditorconfig.set( + mapOf("ktlint_function_naming_ignore_when_annotated_with" to "Composable"), + ) + } target.extensions.configure(KotlinMultiplatformExtension::class.java) { kotlin -> kotlin.jvm("desktop") { jvm -> jvm.compilerOptions.jvmTarget.set(JvmTarget.JVM_21) diff --git a/config/detekt/detekt.yml b/config/detekt/detekt.yml @@ -10,12 +10,6 @@ complexity: TooManyFunctions: allowedFunctionsPerClass: 30 -exceptions: - TooGenericExceptionCaught: - excludes: - - '**/HarvestCircleAppStore.kt' - - '**/HarvestCircleCoreGateway.kt' - naming: FunctionNaming: functionPattern: '[a-zA-Z][a-zA-Z0-9]*'