From 65d8697492a35967543d7ba2b36703da3a661201 Mon Sep 17 00:00:00 2001 From: Vincent Potucek Date: Wed, 24 Sep 2025 13:59:05 +0200 Subject: [PATCH] Issue #2634: Add `StreamRulesRecipes` --- .github/workflows/ci.yml | 8 +++++--- CHANGES.md | 1 + build.gradle | 5 +++++ gradle/rewrite.gradle | 7 +++++++ .../java/com/diffplug/spotless/npm/FileFinder.java | 11 +++++++---- .../com/diffplug/spotless/npm/NodeServerLayout.java | 8 ++------ .../diffplug/spotless/maven/AbstractSpotlessMojo.java | 3 +-- settings.gradle | 1 + 8 files changed, 29 insertions(+), 15 deletions(-) create mode 100644 gradle/rewrite.gradle diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9ef9b7582b..2e1ce0ea03 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,7 +13,7 @@ concurrency: cancel-in-progress: true jobs: sanityCheck: - name: spotlessCheck assemble testClasses + name: spotlessCheck rewriteDryRun assemble testClasses runs-on: ubuntu-latest env: buildcacheuser: ${{ secrets.BUILDCACHE_USER }} @@ -31,6 +31,8 @@ jobs: uses: gradle/actions/setup-gradle@v4 - name: spotlessCheck run: ./gradlew spotlessCheck + - name: rewriteDryRun + run: ./gradlew rewriteDryRun - name: assemble testClasses run: ./gradlew assemble testClasses build: @@ -66,10 +68,10 @@ jobs: uses: gradle/actions/setup-gradle@v4 - name: build (maven-only) if: matrix.kind == 'maven' - run: ./gradlew :plugin-maven:build -x spotlessCheck + run: ./gradlew :plugin-maven:build -x spotlessCheck -x rewriteDryRun - name: build (everything-but-maven) if: matrix.kind == 'gradle' - run: ./gradlew build -x spotlessCheck -PSPOTLESS_EXCLUDE_MAVEN=true + run: ./gradlew build -x spotlessCheck -x rewriteDryRun -PSPOTLESS_EXCLUDE_MAVEN=true - name: test npm if: matrix.kind == 'npm' run: ./gradlew testNpm diff --git a/CHANGES.md b/CHANGES.md index 38b36ca7b4..cea4927957 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -27,6 +27,7 @@ We adhere to the [keepachangelog](https://keepachangelog.com/en/1.0.0/) format ( ### Added * Add a `lint` mode to `ReplaceRegexStep` ([#2571](https://github.com/diffplug/spotless/pull/2571)) * `LintSuppression` now enforces unix-style paths in its `setPath` and `relativizeAsUnix` methods. ([#2629](https://github.com/diffplug/spotless/pull/2629)) +* Issue #2634: Add `StreamRulesRecipes` ([#2588](https://github.com/diffplug/spotless/pull/2588)) ## [3.3.1] - 2025-07-21 ### Fixed diff --git a/build.gradle b/build.gradle index fafd6abe43..0f26d19aef 100644 --- a/build.gradle +++ b/build.gradle @@ -12,6 +12,7 @@ repositories { apply from: rootProject.file('gradle/java-publish.gradle') apply from: rootProject.file('gradle/changelog.gradle') allprojects { + apply from: rootProject.file('gradle/rewrite.gradle') apply from: rootProject.file('gradle/spotless.gradle') } apply from: rootProject.file('gradle/spotless-freshmark.gradle') @@ -27,3 +28,7 @@ spotless { endWithNewline() } } + +dependencies { + rewrite("org.openrewrite.recipe:rewrite-third-party:0.27.0") +} diff --git a/gradle/rewrite.gradle b/gradle/rewrite.gradle new file mode 100644 index 0000000000..94d3ece626 --- /dev/null +++ b/gradle/rewrite.gradle @@ -0,0 +1,7 @@ +apply plugin: 'org.openrewrite.rewrite' + +rewrite { + activeRecipe("tech.picnic.errorprone.refasterrules.StreamRulesRecipes") + exportDatatables = true + failOnDryRunResults = true +} diff --git a/lib/src/main/java/com/diffplug/spotless/npm/FileFinder.java b/lib/src/main/java/com/diffplug/spotless/npm/FileFinder.java index fce1497de6..2b546b3b6c 100644 --- a/lib/src/main/java/com/diffplug/spotless/npm/FileFinder.java +++ b/lib/src/main/java/com/diffplug/spotless/npm/FileFinder.java @@ -1,5 +1,5 @@ /* - * Copyright 2020-2023 DiffPlug + * Copyright 2020-2025 DiffPlug * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,7 +18,10 @@ import static java.util.Objects.requireNonNull; import java.io.File; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Optional; import java.util.function.Function; import java.util.function.Predicate; import java.util.function.Supplier; @@ -44,8 +47,8 @@ Optional tryFind() { .stream() .map(Supplier::get) .filter(Optional::isPresent) - .map(Optional::get) - .findFirst(); + .findFirst() + .map(Optional::get); } static class Builder { diff --git a/lib/src/main/java/com/diffplug/spotless/npm/NodeServerLayout.java b/lib/src/main/java/com/diffplug/spotless/npm/NodeServerLayout.java index a6089c3972..7aab88ea6b 100644 --- a/lib/src/main/java/com/diffplug/spotless/npm/NodeServerLayout.java +++ b/lib/src/main/java/com/diffplug/spotless/npm/NodeServerLayout.java @@ -81,11 +81,7 @@ public boolean isLayoutPrepared() { if (!packageLockJsonFile.isFile()) { return false; } - if (!serveJsFile().isFile()) { - return false; - } - // npmrc is optional, so must not be checked here - return true; + return serveJsFile().isFile(); // npmrc is optional, so must not be checked here } public boolean isNodeModulesPrepared() { @@ -96,7 +92,7 @@ public boolean isNodeModulesPrepared() { // check if it is NOT empty return ThrowingEx.get(() -> { try (Stream entries = Files.list(nodeModulesInstallDirPath)) { - return entries.findFirst().isPresent(); + return entries.findAny().isPresent(); } }); } diff --git a/plugin-maven/src/main/java/com/diffplug/spotless/maven/AbstractSpotlessMojo.java b/plugin-maven/src/main/java/com/diffplug/spotless/maven/AbstractSpotlessMojo.java index 1ddda39c65..924806389f 100644 --- a/plugin-maven/src/main/java/com/diffplug/spotless/maven/AbstractSpotlessMojo.java +++ b/plugin-maven/src/main/java/com/diffplug/spotless/maven/AbstractSpotlessMojo.java @@ -414,8 +414,7 @@ private List getFormatterFactories() { } private List getFormatterStepFactories() { - return Stream.of(licenseHeader) - .filter(Objects::nonNull) + return Stream.ofNullable(licenseHeader) .collect(toList()); } diff --git a/settings.gradle b/settings.gradle index 8ab2d796e6..92bffc5031 100644 --- a/settings.gradle +++ b/settings.gradle @@ -23,6 +23,7 @@ plugins { id 'com.gradle.develocity' version '3.19.2' // https://github.com/equodev/equo-ide/blob/main/plugin-gradle/CHANGELOG.md id 'dev.equo.ide' version '1.7.8' apply false + id 'org.openrewrite.rewrite' version '7.16.0' apply false } dependencyResolutionManagement {