yamlfmt always updates mtime
Describe the bug
Running yamlfmt always sets the mtime to the current date even if the contents didn't change.
To Reproduce
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
flake-parts.url = "github:hercules-ci/flake-parts";
flake-parts.inputs.nixpkgs.follows = "nixpkgs";
treefmt-nix.url = "github:numtide/treefmt-nix";
treefmt-nix.inputs.nixpkgs.follows = "nixpkgs";
};
outputs = inputs@{ flake-parts, ... }:
flake-parts.lib.mkFlake { inherit inputs; } {
imports = [
inputs.treefmt-nix.flakeModule
];
systems = ["x86_64-linux"];
perSystem = { pkgs, ... }: {
treefmt = {
programs.yamlfmt.enable = true;
programs.yamlfmt.package = pkgs.yamlfmt;
};
};
};
}
Add some yaml files to the workspace and observe the mtime each time treefmt --no-cache is run.
Expected behavior
treefmt-nix should not support yamlfmt since it changes mtime and thus doesn't comply with idempotence requirement of the formatter specification.
Additionally it would be nice to have a list on https://numtide.github.io/treefmt/formatters/ with known unsupported formatters and their reasons for not being supported.
System information
Inputs:
├───flake-parts: github:hercules-ci/flake-parts/8e8d955c22df93dbe24f19ea04f47a74adbdc5ec
│ └───nixpkgs-lib follows input 'nixpkgs'
├───nixpkgs: github:NixOS/nixpkgs/6cee3b5893090b0f5f0a06b4cf42ca4e60e5d222
└───treefmt-nix: github:numtide/treefmt-nix/f4ce7d8660f57fe94092cf113c1f550acf16be53
└───nixpkgs follows input 'nixpkgs'
I guess it's worth noting that in my use case I always keep running into errors when running treefmt --no-cache --fail-on-change due to the changed mtime.
Theoretically this issue could also be fixed by treefmt ignoring timestamp changes as part of the --fail-on-change logic.
Git itself doesn't track file timestamps, so it's not an issue for most people, I'd assume.
Not sure if this is a good solution, but it would make treefmt compatible with a lot more formatters. E.g. I've also noticed this behaviour with buf lint & but format (they have other incompatibilities with the formatter spec, but they can easily be resolved with a wrapper script).
Related: #99
/cc @Ruixi-rebirth that added the formatter
Just ran into this myself. I'll see if I can open a ticket upstream if it was not done already
Released as part of https://github.com/google/yamlfmt/releases/tag/v0.12.0
Seems to be fixed for me and recently released 24.05-packages already include v0.12.1