diff --git a/build.gradle.kts b/build.gradle.kts index 41eb3f0..75a9925 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -4,6 +4,7 @@ plugins { `java-gradle-plugin` id("org.hypertrace.repository-plugin") version "0.4.0" id("org.hypertrace.ci-utils-plugin") version "0.3.0" + id("org.hypertrace.code-style-plugin") version "2.0.1" id("org.hypertrace.publish-plugin") version "1.0.4" id("org.owasp.dependencycheck") version "8.4.0" } @@ -16,12 +17,8 @@ java { } dependencies { - api("com.diffplug.spotless:spotless-plugin-gradle:6.25.0") - constraints { - implementation("com.squareup.okio:okio:3.4.0") - implementation("org.eclipse.jgit:org.eclipse.jgit:6.8.0.202311291450-r") - implementation("org.eclipse.platform:org.eclipse.osgi:3.18.500") - } + api("com.diffplug.spotless:spotless-plugin-gradle:7.0.0") + implementation("build.buf:buf-gradle-plugin:0.10.0") } gradlePlugin { diff --git a/settings.gradle.kts b/settings.gradle.kts index ed9cf96..0f3e8c3 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -12,4 +12,4 @@ plugins { id("org.hypertrace.version-settings") version "0.2.0" } -rootProject.name = "hypertrace-gradle-code-style-plugin" \ No newline at end of file +rootProject.name = "hypertrace-gradle-code-style-plugin" diff --git a/src/main/java/org/hypertrace/gradle/code/style/CodeStylePlugin.java b/src/main/java/org/hypertrace/gradle/code/style/CodeStylePlugin.java index dfa02c3..2bb9116 100644 --- a/src/main/java/org/hypertrace/gradle/code/style/CodeStylePlugin.java +++ b/src/main/java/org/hypertrace/gradle/code/style/CodeStylePlugin.java @@ -1,10 +1,13 @@ package org.hypertrace.gradle.code.style; +import build.buf.gradle.BufExtension; +import build.buf.gradle.BufPlugin; +import build.buf.gradle.BufSupportKt; import com.diffplug.gradle.spotless.SpotlessExtension; import com.diffplug.gradle.spotless.SpotlessPlugin; - +import java.io.File; import java.io.IOException; -import java.util.HashMap; +import java.util.Map; import javax.annotation.Nonnull; import org.gradle.api.Plugin; import org.gradle.api.Project; @@ -20,13 +23,14 @@ public void apply(@Nonnull Project target) { private void configureCodeStyle(Project project) { PluginContainer pluginContainer = project.getPlugins(); pluginContainer.apply(SpotlessPlugin.class); + pluginContainer.apply(BufPlugin.class); + configureFormatting(project); + } + private void configureFormatting(Project project) { SpotlessExtension spotlessExtension = project.getExtensions().getByType(SpotlessExtension.class); - configureFormatting(spotlessExtension); - } - private void configureFormatting(SpotlessExtension spotlessExtension) { spotlessExtension.java( format -> { format.importOrder(); @@ -36,26 +40,34 @@ private void configureFormatting(SpotlessExtension spotlessExtension) { }); spotlessExtension.kotlinGradle( - format -> - { - try { - format - .ktlint("0.50.0") - .editorConfigOverride( - new HashMap() { - { - put("indent_size", "2"); - } - }); - } catch (IOException e) { - throw new RuntimeException(e); - } + format -> { + try { + format.ktlint("0.50.0").editorConfigOverride(Map.of("indent_size", "2")); + } catch (IOException e) { + throw new RuntimeException(e); + } }); + + BufExtension bufExtension = project.getExtensions().getByType(BufExtension.class); + spotlessExtension.protobuf( + format -> { + File bufBinary = + project + .getConfigurations() + .getByName(BufSupportKt.BUF_BINARY_CONFIGURATION_NAME) + .getSingleFile(); + if (!bufBinary.canExecute()) { + bufBinary.setExecutable(true); + } + format.buf(bufExtension.getToolVersion()).pathToExe(bufBinary.getAbsolutePath()); + }); + bufExtension.setEnforceFormat(false); + spotlessExtension.format( "misc", format -> { - format.target("*.md", "src/**/*.proto", ".gitignore", "*.yaml"); - format.indentWithSpaces(2); + format.target("*.md", ".gitignore", "*.yaml"); + format.leadingTabsToSpaces(2); format.trimTrailingWhitespace(); format.endWithNewline(); });