forked from lix-project/lix
Jonas Chevalier
2265536e85
When `nix fmt` is called without an argument, Nix appends the "." argument before calling the formatter. The comment in the code is:
> Format the current flake out of the box
This also happens when formatting sub-folders.
This means that the formatter is now unable to distinguish, as an interface, whether the "." argument is coming from the flake or the user's intent to format the current folder. This decision should be up to the formatter.
Treefmt, for example, will automatically look up the project's root and format all the files. This is the desired behaviour. But because the "." argument is passed, it cannot function as expected.
Upstream-PR: https://github.com/nixos/nix/pull/11438
Change-Id: I60fb6b3ed4ec1b24f81b5f0d76c0be98470817ce
37 lines
823 B
Bash
37 lines
823 B
Bash
source common.sh
|
|
|
|
clearStore
|
|
rm -rf $TEST_HOME/.cache $TEST_HOME/.config $TEST_HOME/.local
|
|
|
|
cp ./simple.nix ./simple.builder.sh ./fmt.simple.sh ./config.nix $TEST_HOME
|
|
|
|
cd $TEST_HOME
|
|
|
|
nix fmt --help | grep "Format"
|
|
|
|
cat << EOF > flake.nix
|
|
{
|
|
outputs = _: {
|
|
formatter.$system =
|
|
with import ./config.nix;
|
|
mkDerivation {
|
|
name = "formatter";
|
|
buildCommand = ''
|
|
mkdir -p \$out/bin
|
|
echo "#! ${shell}" > \$out/bin/formatter
|
|
cat \${./fmt.simple.sh} >> \$out/bin/formatter
|
|
chmod +x \$out/bin/formatter
|
|
'';
|
|
};
|
|
};
|
|
}
|
|
EOF
|
|
# No arguments check
|
|
[[ "$(nix fmt)" = "Formatting(0):" ]]
|
|
# Argument forwarding check
|
|
nix fmt ./file ./folder | grep 'Formatting(2): ./file ./folder'
|
|
nix flake check
|
|
nix flake show | grep -P "package 'formatter'"
|
|
|
|
clearStore
|