-
Notifications
You must be signed in to change notification settings - Fork 458
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support Rome as a formatter #1663
Conversation
E.g. ~/.m2/repository/com/diffplug/spotless/spotless-data/rome This is also done by e.g. the dependency-check-plugin or by the frontend-maven-plugin https://github.com/jeremylong/DependencyCheck/blob/21cd89bdc2531632e18d0b0e085c6d85112853d0/core/src/main/java/org/owasp/dependencycheck/agent/DependencyCheckScanAgent.java#L937-L941
executable instead of the path to the executable
lib/src/main/java/com/diffplug/spotless/rome/RomeExecutableDownloader.java
Fixed
Show fixed
Hide fixed
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks very much, this looks great! Main feedback is just to shrink the public API as much as possible. Spotless has a ton of formatters, keeping the common API as small as possible and making each formatter as self-contained as possible is important.
lib/src/main/java/com/diffplug/spotless/rome/RomeExecutableDownloader.java
Outdated
Show resolved
Hide resolved
Also, add an entry here Line 102 in d75aa9a
And then run |
Also, it would be great if somebody could test this on Windows, especially the part where it locates and downloads the Rome binary automatically for the current OS / architecture. Mac OS would also be nice. |
I fixed the spotbugs issues, some NPM tests are failing when I run |
Can the workflow be approved again? With the latest commit it passes on a Windows machine where I tried it |
Hmm, those failures in the build pipeline look like a general build issue, the same error also happens on the main branch https://github.com/diffplug/spotless/actions/runs/4934286482/jobs/8819133075 |
The hash algorithm was set to |
Thanks for a great PR and sorry for the slow turnaround. We'll get this merged and released this week. |
No problem, good things take a while ; ) Also, the build on various different OS's are very helpful to catch issues with path handling etc. There still seems to be an issue creating a path in Windows again for the gradle plugin, where Paths.get needs to be replaced with Path.of so that it handles file URIs correctly. Edit: seems you already fixed it by removing the slash. Another option is to use Path.of instead of Paths.get |
Thanks for the |
Released in |
This MR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [com.diffplug.spotless:spotless-maven-plugin](https://github.com/diffplug/spotless) | build | minor | `2.38.0` -> `2.39.0` | | [io.quarkus:quarkus-maven-plugin](https://github.com/quarkusio/quarkus) | build | patch | `3.3.0` -> `3.3.1` | | [io.quarkus:quarkus-universe-bom](https://github.com/quarkusio/quarkus-platform) | import | patch | `3.3.0` -> `3.3.1` | --- ### Release Notes <details> <summary>diffplug/spotless</summary> ### [`v2.39.0`](https://github.com/diffplug/spotless/blob/HEAD/CHANGES.md#​2390---2023-05-24) ##### Added - `Jvm.Support` now accepts `-SNAPSHOT` versions, treated as the non`-SNAPSHOT`. ([#​1583](diffplug/spotless#1583)) - Support Rome as a formatter for JavaScript and TypeScript code. Adds a new `rome` step to `javascript` and `typescript` formatter configurations. ([#​1663](diffplug/spotless#1663)) - Add semantics-aware Java import ordering (i.e. sort by package, then class, then member). ([#​522](diffplug/spotless#522)) ##### Fixed - Fixed a regression which changed the import sorting order in `googleJavaFormat` introduced in `2.38.0`. ([#​1680](diffplug/spotless#1680)) - Equo-based formatters now work on platforms unsupported by Eclipse such as PowerPC (fixes [durian-swt#​20](diffplug/durian-swt#20)) - When P2 download fails, indicate the responsible formatter. ([#​1698](diffplug/spotless#1698)) ##### Changes - Equo-based formatters now download metadata to `~/.m2/repository/dev/equo/p2-data` rather than `~/.equo`, and for CI machines without a home directory the p2 data goes to `$GRADLE_USER_HOME/caches/p2-data`. ([#​1714](diffplug/spotless#1714)) - Bump default `googleJavaFormat` version to latest `1.16.0` -> `1.17.0`. ([#​1710](diffplug/spotless#1710)) - Bump default `ktfmt` version to latest `0.43` -> `0.44`. ([#​1691](diffplug/spotless#1691)) - Bump default `ktlint` version to latest `0.48.2` -> `0.49.1`. ([#​1696](diffplug/spotless#1696)) - Dropped support for `ktlint 0.46.x` following our policy of supporting two breaking changes at a time. - Bump default `sortpom` version to latest `3.0.0` -> `3.2.1`. ([#​1675](diffplug/spotless#1675)) </details> <details> <summary>quarkusio/quarkus</summary> ### [`v3.3.1`](quarkusio/quarkus@3.3.0...3.3.1) [Compare Source](quarkusio/quarkus@3.3.0...3.3.1) </details> <details> <summary>quarkusio/quarkus-platform</summary> ### [`v3.3.1`](quarkusio/quarkus-platform@3.3.0...3.3.1) [Compare Source](quarkusio/quarkus-platform@3.3.0...3.3.1) </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever MR is behind base branch, or you tick the rebase/retry checkbox. 👻 **Immortal**: This MR will be recreated if closed unmerged. Get [config help](https://github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box --- This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNC4yNC4wIiwidXBkYXRlZEluVmVyIjoiMzQuMjQuMCJ9-->
Add Rome as a formatter for JavaScript and TypeScript code, #1651
A few notes regarding the design:
~/.m2/repository/com/diffplug/spotless/spotless-data
). This is also done by e.g. the dependency check Maven plugin or by thefrontend-maven-plugin
.TODOs
Automatically find the Rome config file and/or add an option to specify the config fileThis is probably impossible due spotless' caching mechanism? As we can't format depending on the file path, and the config file would have to be derived from the file path.