diff --git a/CHANGES.md b/CHANGES.md index c4f39a815c..b749f7113a 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -10,6 +10,8 @@ This document is intended for Spotless developers. We adhere to the [keepachangelog](https://keepachangelog.com/en/1.0.0/) format (starting after version `1.27.0`). ## [Unreleased] +### Fixed +* Fixed access modifiers for setters in KtfmtStep configuration ## [2.24.0] - 2022-03-28 ### Added diff --git a/lib/src/main/java/com/diffplug/spotless/kotlin/KtfmtStep.java b/lib/src/main/java/com/diffplug/spotless/kotlin/KtfmtStep.java index e5e2e57f01..d9feef4c91 100644 --- a/lib/src/main/java/com/diffplug/spotless/kotlin/KtfmtStep.java +++ b/lib/src/main/java/com/diffplug/spotless/kotlin/KtfmtStep.java @@ -97,6 +97,22 @@ public KtfmtFormattingOptions( this.continuationIndent = continuationIndent; this.removeUnusedImport = removeUnusedImport; } + + public void setMaxWidth(int maxWidth) { + this.maxWidth = maxWidth; + } + + public void setBlockIndent(int blockIndent) { + this.blockIndent = blockIndent; + } + + public void setContinuationIndent(int continuationIndent) { + this.continuationIndent = continuationIndent; + } + + public void setRemoveUnusedImport(boolean removeUnusedImport) { + this.removeUnusedImport = removeUnusedImport; + } } /** diff --git a/plugin-gradle/CHANGES.md b/plugin-gradle/CHANGES.md index d991b050a4..63470e6f8c 100644 --- a/plugin-gradle/CHANGES.md +++ b/plugin-gradle/CHANGES.md @@ -3,6 +3,8 @@ We adhere to the [keepachangelog](https://keepachangelog.com/en/1.0.0/) format (starting after version `3.27.0`). ## [Unreleased] +### Fixed +* Fixed ktfmt options configuration in Gradle plugin for Gradle Kotlin scripts (kts). ## [6.4.0] - 2022-03-28 ### Added diff --git a/plugin-gradle/src/main/java/com/diffplug/gradle/spotless/KotlinExtension.java b/plugin-gradle/src/main/java/com/diffplug/gradle/spotless/KotlinExtension.java index 56d925caa3..c68fd9aeea 100644 --- a/plugin-gradle/src/main/java/com/diffplug/gradle/spotless/KotlinExtension.java +++ b/plugin-gradle/src/main/java/com/diffplug/gradle/spotless/KotlinExtension.java @@ -141,9 +141,9 @@ private FormatterStep createStep() { return KtfmtStep.create(version, provisioner(), style, options); } - class ConfigurableStyle { + public class ConfigurableStyle { - void configure(Consumer optionsConfiguration) { + public void configure(Consumer optionsConfiguration) { KtfmtFormattingOptions ktfmtFormattingOptions = new KtfmtFormattingOptions(); optionsConfiguration.accept(ktfmtFormattingOptions); options = ktfmtFormattingOptions; diff --git a/plugin-gradle/src/main/java/com/diffplug/gradle/spotless/KotlinGradleExtension.java b/plugin-gradle/src/main/java/com/diffplug/gradle/spotless/KotlinGradleExtension.java index 1ff2b0c332..4275cd6efe 100644 --- a/plugin-gradle/src/main/java/com/diffplug/gradle/spotless/KotlinGradleExtension.java +++ b/plugin-gradle/src/main/java/com/diffplug/gradle/spotless/KotlinGradleExtension.java @@ -128,9 +128,9 @@ private FormatterStep createStep() { return KtfmtStep.create(version, provisioner(), style, options); } - class ConfigurableStyle { + public class ConfigurableStyle { - void configure(Consumer optionsConfiguration) { + public void configure(Consumer optionsConfiguration) { KtfmtFormattingOptions ktfmtFormattingOptions = new KtfmtFormattingOptions(); optionsConfiguration.accept(ktfmtFormattingOptions); options = ktfmtFormattingOptions; diff --git a/plugin-gradle/src/test/java/com/diffplug/gradle/spotless/KotlinExtensionTest.java b/plugin-gradle/src/test/java/com/diffplug/gradle/spotless/KotlinExtensionTest.java index 3bbd44d63d..4c48c340d2 100644 --- a/plugin-gradle/src/test/java/com/diffplug/gradle/spotless/KotlinExtensionTest.java +++ b/plugin-gradle/src/test/java/com/diffplug/gradle/spotless/KotlinExtensionTest.java @@ -292,6 +292,28 @@ void testWithCustomMaxWidthDefaultStyleKtfmt() throws IOException { assertFile("src/main/kotlin/max-width.kt").sameAsResource("kotlin/ktfmt/max-width.clean"); } + @Test + @EnabledForJreRange(min = JAVA_11) // ktfmt's dependency, google-java-format 1.8 requires a minimum of JRE 11+. + void testWithCustomMaxWidthDefaultStyleKtfmtGradleKts() throws IOException { + setFile("build.gradle.kts").toLines( + "plugins {", + " id(\"org.jetbrains.kotlin.jvm\") version \"1.5.31\"", + " id(\"com.diffplug.spotless\")", + "}", + "repositories { mavenCentral() }", + "spotless {", + " kotlin {", + " ktfmt().configure { options ->", + " options.setMaxWidth(120)", + " }", + " }", + "}"); + + setFile("src/main/kotlin/max-width.kt").toResource("kotlin/ktfmt/max-width.dirty"); + gradleRunner().withArguments("spotlessApply").build(); + assertFile("src/main/kotlin/max-width.kt").sameAsResource("kotlin/ktfmt/max-width.clean"); + } + @Test @EnabledForJreRange(min = JAVA_11) // ktfmt's dependency, google-java-format 1.8 requires a minimum of JRE 11+. void testWithCustomMaxWidthDropboxStyleKtfmt() throws IOException { @@ -313,4 +335,26 @@ void testWithCustomMaxWidthDropboxStyleKtfmt() throws IOException { gradleRunner().withArguments("spotlessApply").build(); assertFile("src/main/kotlin/max-width.kt").sameAsResource("kotlin/ktfmt/max-width-dropbox.clean"); } + + @Test + @EnabledForJreRange(min = JAVA_11) // ktfmt's dependency, google-java-format 1.8 requires a minimum of JRE 11+. + void testWithCustomMaxWidthDropboxStyleKtfmtGradleKts() throws IOException { + setFile("build.gradle.kts").toLines( + "plugins {", + " id(\"org.jetbrains.kotlin.jvm\") version \"1.5.31\"", + " id(\"com.diffplug.spotless\")", + "}", + "repositories { mavenCentral() }", + "spotless {", + " kotlin {", + " ktfmt().dropboxStyle().configure { options ->", + " options.setMaxWidth(120)", + " }", + " }", + "}"); + + setFile("src/main/kotlin/max-width.kt").toResource("kotlin/ktfmt/max-width.dirty"); + gradleRunner().withArguments("spotlessApply").build(); + assertFile("src/main/kotlin/max-width.kt").sameAsResource("kotlin/ktfmt/max-width-dropbox.clean"); + } }