chore(deps): update dependency google/yamlfmt to v0.14.0 #63
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
v0.10.0
->v0.14.0
Release Notes
google/yamlfmt (google/yamlfmt)
v0.14.0
Compare Source
Shoutouts To The Community Release
I have been in not the best health the last while, which is why this release took so long to cut. On the bright side, this release features more contributions from the community than from myself. Thank you to everyone who contributed!
Features
strip_directives
yaml.v3
does not support directives. The best thing to do would be to add some amount of support for directives, which I will do in the future just taking it as far as the parser not failing upon finding a directive. In the short term, I added ahotfix
style feature that will strip the directives before formatting and put them back in. The feature is fraught with edge cases and only works reliably with directives at the top of the file. See the explanations I added in the docs.gitignore_excludes
searches up the directory structure for the nearest.gitignore
Arguably a fix, the
gitignore_excludes
feature will now look up the directory structure for the nearest.gitignore
which unlocks monorepo usage patterns foryamlfmt
.JSON schema
The community has added a JSON Schema! I'm calling it out in release notes, but this is not tied to yamlfmt releases in any way. If you have any fixes or improvements to make, they will not need to be tied to git tags being cut.
I am not super familiar with JSON Schema; I will try my best not to break it and keep it up to date but I'm not gonna be great at addressing potential deeper issues with it.
Validating releases with
cosign
The release artifacts now generate other artifacts that allow you to verify releases using the
cosign
tool.Fixes
The
line_ending
setting in theformatter
config is respected againThis was a regression in v0.13.0 where I did some refactors to config discovery. I uncovered an edge case in my original code to handle the
line_ending
setting in theformatter
block (vs the global version). This has been fixed in this release.eof_newline
no longer panics on an empty fileIf the file was empty, the
eof_newline
feature would panic. Never thought of that! This has been fixed.Contributors
@thiagowfx added the JSON Schema
@Shion1305 fixed the
eof_newline
panic@dhth added cosign support to releases
@nikaro added .gitignore discovery
I think this is the most contributors I've had in a release! Thank you everyone!
Changelog (generated)
strip_directives
by @braydonk in https://github.com/google/yamlfmt/pull/217Full Changelog: google/yamlfmt@v0.13.0...v0.14.0
v0.13.0
Compare Source
The Airplane✈️ Release
This release doesn't have anything to do with airplanes, but I did the last few PRs and cut the release while I was on a plane so that's what came to mind. 😄
Features
Print Config
With the new
-print_conf
flag, you can have yamlfmt print out all configuration values it is using (whether they are default or overridden by a config file). This in combination with-debug config
should make figuring out yamlfmt config problems much simpler going forward!Trim Trailing Whitespace
Using the formatter option
trim_trailing_whitespace
, you can now tell yamlfmt to trim any trailing whitespace from lines. This is helpful in general, but it is specifically useful if you are affected by #86. With trailing whitespace being trimmed, this buggy output shouldn't get tripped. Not a perfect solution, but hopefully should help.EOF Newline
Using the formatter option
eof_newline
, yamlfmt will forcibly add a newline to the end of the file if it's not there already. This is for particular scenarios whenretain_line_breaks
is not turned on, but the newline at the end of files is still required.Contributors
-print_conf
feature and was very receptive to feedback on their PR. They also contributed a fix to CI, and automatic versioning in the yamlfmt binary to avoid future bugs like what happened with v0.12.1. Thank you!v0.12.1
Compare Source
Fix stdin output
I made a mistake in the last release that caused the
stdin
operation to output a byte array instead of a properly casted string. I will add integration tests to save this from happening in the future.Known Issue: I was in a rush to get this out when I saw it and forgot to manually update the version string, so
yamlfmt -version
will printv0.12.0
for this version.v0.12.0 Release notes below.
Output Format Release
I have unfortunately been dealing with a long-running health problem that has made it difficult to do much work on this or any projects for the past couple of months. I did manage to get together some small features and fixes worth noting.
Features
Output Format
You can now choose different output formats for lint/dry run. The first alternate output format added is line, which makes it so instead of the full detailed output, yamlfmt outputs single lines for each file with formatting differences. This should allow for easier integration into tools like reviewdog. I have never used that tool, but if anyone is able to get an integration working, feel free to open a Discussion thread about it and let me know!
More config file name options
Last release, I added configuration file naming options to have the yaml extension, i.e. yamlfmt.yaml and yamlfmt.yml. The way I did that made it so you couldn't have config files with extension also be hidden. That is resolved now, so you can have .yamlfmt.yaml etc.
Bug Fixes
Don't write files if there is no diff
Previously, yamlfmt would always write all files set for formatting even when there would be no change. This meant the edited date of the file was always being updated even though nothing was meant to change. That should not happen anymore.
Fix -global_conf not working as documented
The -global_conf flag was not working as documented in the last release. If there was a local config, -global_conf would end up being ignored and the local config would be used first. This was not the intended functionality and it has been fixed.
Contributors
Thanks @kiliantyler for the catching the global configuration bug and opening a fix for it!
1k stars!
Thank you very much for over 1000 stars on GitHub! I appreciate the support, and I hope the tool continues to be useful to the community!
v0.12.0
Compare Source
Output Format Release
I have unfortunately been dealing with a long-running health problem that has made it difficult to do much work on this or any projects for the past couple of months. I did manage to get together some small features and fixes worth noting.
Features
Output Format
You can now choose different output formats for lint/dry run. The first alternate output format added is
line
, which makes it so instead of the full detailed output, yamlfmt outputs single lines for each file with formatting differences. This should allow for easier integration into tools like reviewdog. I have never used that tool, but if anyone is able to get an integration working, feel free to open a Discussion thread about it and let me know!More config file name options
Last release, I added configuration file naming options to have the yaml extension, i.e.
yamlfmt.yaml
andyamlfmt.yml
. The way I did that made it so you couldn't have config files with extension also be hidden. That is resolved now, so you can have.yamlfmt.yaml
etc.Bug Fixes
Don't write files if there is no diff
Previously, yamlfmt would always write all files set for formatting even when there would be no change. This meant the edited date of the file was always being updated even though nothing was meant to change. That should not happen anymore.
Fix
-global_conf
not working as documentedThe
-global_conf
flag was not working as documented in the last release. If there was a local config,-global_conf
would end up being ignored and the local config would be used first. This was not the intended functionality and it has been fixed.Contributors
Thanks @kiliantyler for the catching the global configuration bug and opening a fix for it!
1k stars!
Thank you very much for over 1000 stars on GitHub! I appreciate the support, and I hope the tool continues to be useful to the community!
v0.11.0
Compare Source
Oops, all features!
https://www.youtube.com/watch?v=cXBX2PumuBk
It's been a while since the last release! Life has kept me very busy, but since there were a number of feature requests in the issue queue that weren't too challenging to implement I knocked a bunch of them off the list! I also came up with one feature for this release myself.
Config Discovery Enhancements
Two major enhancements to config discovery! I am pretty sure they are purely additive and shouldn't break any existing workflows, but don't hesitate to open an issue if there's something I missed.
Config file can be
.yamlfmt
,yamlfmt.yaml
, oryamlfmt.yml
Instead of forcing the
.yamlfmt
hidden file name, the command will also recognizeyamlfmt.yaml
oryamlfmt.yml
as a valid file name. (Note that this only applies to automatic config searching; it has never mattered what the name of a file specified directly in the-conf
flag is.)Config file search goes all the way up the directory tree
Instead of only looking for a yamlfmt config in the working directory, it will look at every directory up from the current directory and use the nearest config file it can find. If it doesn't find one all the way up the tree, then it will default to the config file in the global location at
$XDG_CONFIG_HOME/yamlfmt
(LOCALAPPDATA
on Windows). This should be useful for monorepo scenarios, where you might want to apply a singleyamlfmt
config file to a number of projects within the monorepo, instead of needing a config file in every sub-project or having to manually specify with-conf
.This does change some potential scenarios where previously the global config would have been discovered. To combat this, I added a new command line flag
-global_conf
that will force using the config from the global location.Similarly, I added
-no_global_conf
to force not using the global config.Use a
.gitignore
for excludesThe
-gitignore_excludes
orgitignore_excludes
top-level config option will allowyamlfmt
to use patterns from a.gitignore
file for excluding files from formatting! This should be helpful for scenarios where you previously would have needed to repeat all of these patterns in your ownyamlfmt
excludes config. You can also specify a specific path to a.gitignore
file with-gitignore_path
orgitignore_path
(command/config respectively).Retain only single line breaks
Sometimes you have yaml files where there are lots of line breaks in a row. Sometimes you want to keep those, but sometimes you only want to keep a single one out of a group. The new formatter-level config option
retain_line_breaks_single
will make it so this:Formats to this:
Debug Logging
(This is the one I came up with)
By default
yamlfmt
is deliberately very quiet on output. This did have a negative though, as even in verbose mode it was hard to figure out which config file was used, or why files may have been excluded/included in formatting. Introducing the-debug
command line flag! Currently there are two debug logging profiles:config
profile will log the config file discovery process so you can figure out which config file was used and whypaths
profile will log the include/exclude process to understand exactly which paths are included/excluded and whyRead more about usage in the docs: https://github.com/google/yamlfmt/blob/v0.11.0/docs/command-usage.md#debug-logging
Conclusion
I knocked out a good number of the issues that aren't rooted in the yaml parsing/formatting portion of the tool (only one outlier that I'll address soon). This means my future focus is on how to solve some of the weird yaml problems. Right now it is looking like the main way for me to address these issues is by finally biting the bullet and writing my own. I decided to address a number of features this release to make sure I don't leave open issues out to dry while I dive into this new challenge.
As always, don't hesitate to open an issue if you have any problems!
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.