From b517add7e52ac9df317eba236ce6bff15480ed09 Mon Sep 17 00:00:00 2001 From: nian1 Date: Thu, 4 Jul 2024 18:53:29 +0800 Subject: [PATCH 1/3] Add spotless --- build.gradle.kts | 12 ++++++++- gradle/libs.versions.toml | 2 ++ spotless/copyright.txt | 0 spotless/copyright.xml | 1 + spotless/greclipse.properties | 6 +++++ spotless/spotless.gradle | 46 +++++++++++++++++++++++++++++++++++ 6 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 spotless/copyright.txt create mode 100644 spotless/copyright.xml create mode 100644 spotless/greclipse.properties create mode 100644 spotless/spotless.gradle diff --git a/build.gradle.kts b/build.gradle.kts index e483855..24fd03c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -28,7 +28,8 @@ plugins { alias(libs.plugins.kotlin.cocoapods) apply false // alias(libs.plugins.jetbrains.compose) apply false alias(libs.plugins.compose.compiler) apply false - id("com.jithub.build.logic") apply false + alias(libs.plugins.spotless) apply false + id("com.jithub.build.logic") } allprojects { @@ -46,6 +47,15 @@ allprojects { configureCommonKotlin() } +subprojects { + apply(from = rootProject.file("spotless/spotless.gradle")) + afterEvaluate { + tasks.withType(JavaCompile::class.java) { + dependsOn(tasks.getByName("spotlessApply")) + } + } +} + gradle.taskGraph.whenReady { tasks.forEach { /* Encountering the “Unable to make progress running work” Error in Gradle? */ diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 9f4ab64..f68d9fe 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -70,5 +70,7 @@ jetbrains-compose = { id = "org.jetbrains.compose", version.ref = "jbr-compose" compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } +spotless = "com.diffplug.spotless:6.25.0" + [bundles] asm = [] diff --git a/spotless/copyright.txt b/spotless/copyright.txt new file mode 100644 index 0000000..e69de29 diff --git a/spotless/copyright.xml b/spotless/copyright.xml new file mode 100644 index 0000000..1e33fe8 --- /dev/null +++ b/spotless/copyright.xml @@ -0,0 +1 @@ + diff --git a/spotless/greclipse.properties b/spotless/greclipse.properties new file mode 100644 index 0000000..5a7f82c --- /dev/null +++ b/spotless/greclipse.properties @@ -0,0 +1,6 @@ +org.eclipse.jdt.core.formatter.tabulation.char=space +org.eclipse.jdt.core.formatter.tabulation.size=2 +org.eclipse.jdt.core.formatter.indentation.size=2 +groovy.formatter.longListLength=110 +# Remove unnecessary semicolons. +groovy.formatter.remove.unnecessary.semicolons=true diff --git a/spotless/spotless.gradle b/spotless/spotless.gradle new file mode 100644 index 0000000..a7bd387 --- /dev/null +++ b/spotless/spotless.gradle @@ -0,0 +1,46 @@ +apply plugin: "com.diffplug.spotless" + +// https://github.com/pinterest/ktlint +def ktlintVersion = "1.3.1" + +spotless { + java { + target '**/*.java' + targetExclude("**/build/**/*.java", "${rootProject.rootDir}/spotless/**") + toggleOffOn('@formatter:off', '@formatter:on') + // https://github.com/palantir/palantir-java-format + palantirJavaFormat("2.47.0").style("GOOGLE").formatJavadoc(true) + removeUnusedImports() + } + + kotlin { + target "**/*.kt" + targetExclude("**/build/**/*.kt", "${rootProject.rootDir}/spotless/**") + ktlint(ktlintVersion).setEditorConfigPath( + "${rootProject.rootDir}/.editorconfig" + ).editorConfigOverride( + [ + "android" : "true", + "continuation_indent_size" : "2", + // Lowercase names are great for grouping multiple functions and/or types. + "ktlint_standard_filename" : "disabled", + // Making something an expression body should be a choice around readability. + "ktlint_standard_function-expression-body" : "disabled", + "ktlint_function_naming_ignore_when_annotated_with": "Composable", + "ktlint_compose_compositionlocal-allowlist" : "disabled" + ] + ) + } + + kotlinGradle { + target("**/*.gradle.kts") + ktlint(ktlintVersion).setEditorConfigPath("${rootProject.rootDir}/.editorconfig") + } + + format("xml") { + target("**/*.xml") + targetExclude("**/build/**/*.xml", "**/lint-config/**/*.xml", "${rootProject.rootDir}/spotless/**") + // Look for the first XML tag that isn't a comment ( - diff --git a/gradle.properties b/gradle.properties index 11166e7..e76db5e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -24,9 +24,6 @@ kotlin.mpp.androidGradlePluginCompatibility.nowarn=true # https://kotl.in/issue kotlin.apple.xcodeCompatibility.nowarn=true -# Kotlin code style for this project: "official" or "obsolete": -kotlin.code.style=official - # Android android.useAndroidX=true android.enableJetifier=true diff --git a/redwood/schema/src/main/kotlin/com/jithub/app/shared/redwood/schema.kt b/redwood/schema/src/main/kotlin/com/jithub/app/shared/redwood/schema.kt index 7881e84..b9ec0f3 100644 --- a/redwood/schema/src/main/kotlin/com/jithub/app/shared/redwood/schema.kt +++ b/redwood/schema/src/main/kotlin/com/jithub/app/shared/redwood/schema.kt @@ -21,9 +21,7 @@ import app.cash.redwood.schema.Widget interface Schema @Widget(2) -data class Text( - @Property(1) val text: String? -) +data class Text(@Property(1) val text: String?) @Widget(3) data class Button( diff --git a/shared/src/commonMain/kotlin/com/jithub/app/shared/Counter.kt b/shared/src/commonMain/kotlin/com/jithub/app/shared/Counter.kt index ecec683..5d5a2d1 100644 --- a/shared/src/commonMain/kotlin/com/jithub/app/shared/Counter.kt +++ b/shared/src/commonMain/kotlin/com/jithub/app/shared/Counter.kt @@ -15,11 +15,7 @@ import com.jithub.app.shared.redwood.compose.Button import com.jithub.app.shared.redwood.compose.Text @Composable -fun Counter( - modifier: Modifier = Modifier, - value: Int = 0, - labels: StringList? = StringList(listOf()) -) { +fun Counter(modifier: Modifier = Modifier, value: Int = 0, labels: StringList? = StringList(listOf())) { var count by rememberSaveable { mutableIntStateOf(value) } Column( width = Constraint.Fill, From fbf5bbc8ee6c594a06aa9de2f49978d33730547a Mon Sep 17 00:00:00 2001 From: nian1 Date: Thu, 4 Jul 2024 19:08:02 +0800 Subject: [PATCH 3/3] Add compose-rules --- .../src/main/java/com/jithub/app/android/MainActivity.kt | 4 ++-- spotless/spotless.gradle | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/androidApp/src/main/java/com/jithub/app/android/MainActivity.kt b/androidApp/src/main/java/com/jithub/app/android/MainActivity.kt index d0c6cc6..ee56d67 100644 --- a/androidApp/src/main/java/com/jithub/app/android/MainActivity.kt +++ b/androidApp/src/main/java/com/jithub/app/android/MainActivity.kt @@ -42,13 +42,13 @@ class MainActivity : ComponentActivity() { } @Composable -fun GreetingView(text: String) { +fun GreetingView(text: String, modifier: Modifier = Modifier) { Text(text = text) } @Preview @Composable -fun DefaultPreview() { +private fun DefaultPreview() { AppTheme { } } diff --git a/spotless/spotless.gradle b/spotless/spotless.gradle index a7bd387..7288ba5 100644 --- a/spotless/spotless.gradle +++ b/spotless/spotless.gradle @@ -29,6 +29,9 @@ spotless { "ktlint_function_naming_ignore_when_annotated_with": "Composable", "ktlint_compose_compositionlocal-allowlist" : "disabled" ] + ).customRuleSets( + // https://github.com/mrmans0n/compose-rules + ["io.nlopez.compose.rules:ktlint:0.4.5"] ) }