refactor: improve handling of Fmt command
All checks were successful
Check Formatting of Files / Check-Formatting (push) Successful in 45s

This commit is contained in:
Price Hiller 2024-03-16 15:21:25 -05:00
parent 78b3796e68
commit 07cf91ca0b
Signed by: Price
GPG Key ID: C3FADDE7A8534BEB
8 changed files with 193 additions and 46 deletions

View File

@ -10,5 +10,8 @@ jobs:
- name: Check out code
uses: actions/checkout@v3
- name: Install `Fmt` package
run: nix --experimental-features "flakes nix-command" build 'path:./pkgs/Fmt' --out-link fmt-result
- name: Check formatting
run: ./scripts/check-fmt-git-files.bash
run: PATH="${PATH}:${PWD}/fmt-result/bin" ./scripts/check-fmt-git-files.bash

2
.gitignore vendored
View File

@ -1,5 +1,5 @@
./.luarc.json
result/
result
.luarc.json
.direnv
.nixd.json

View File

@ -1,10 +1,28 @@
{
"nodes": {
"Fmt": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1,
"narHash": "sha256-8lIyAZd5WpfmwLW/peBk3eRX3SGUmIeczv+y73pTFwY=",
"path": "./pkgs/Fmt",
"type": "path"
},
"original": {
"path": "./pkgs/Fmt",
"type": "path"
}
},
"agenix": {
"inputs": {
"agenix": "agenix_2",
"crane": "crane",
"flake-utils": "flake-utils",
"flake-utils": "flake-utils_2",
"nixpkgs": [
"nixpkgs"
],
@ -32,7 +50,7 @@
"agenix",
"nixpkgs"
],
"systems": "systems"
"systems": "systems_2"
},
"locked": {
"lastModified": 1707830867,
@ -51,7 +69,7 @@
"bob": {
"inputs": {
"bob": "bob_2",
"flake-utils": "flake-utils_2",
"flake-utils": "flake-utils_3",
"nixpkgs": [
"nixpkgs"
]
@ -129,16 +147,16 @@
},
"emacs-overlay": {
"inputs": {
"flake-utils": "flake-utils_3",
"flake-utils": "flake-utils_4",
"nixpkgs": "nixpkgs",
"nixpkgs-stable": "nixpkgs-stable"
},
"locked": {
"lastModified": 1710553346,
"narHash": "sha256-YHDgW5dnt55Z9DhXOKHhyDL6m6BbsRMyAucRxmNOMvo=",
"lastModified": 1710608587,
"narHash": "sha256-7to4df2dUDd2LhPSp/XeH9rpONb2MtYDn1uFeVMolVc=",
"owner": "nix-community",
"repo": "emacs-overlay",
"rev": "4d36a8316894dbfc9af4364a1d869b9212f778eb",
"rev": "895a56e7294c2e5be4f84aa8e1cbc9e53e91307e",
"type": "github"
},
"original": {
@ -223,14 +241,14 @@
},
"flake-utils": {
"inputs": {
"systems": "systems_2"
"systems": "systems"
},
"locked": {
"lastModified": 1705309234,
"narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=",
"lastModified": 1710146030,
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26",
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
"type": "github"
},
"original": {
@ -262,11 +280,11 @@
"systems": "systems_4"
},
"locked": {
"lastModified": 1710146030,
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
"lastModified": 1705309234,
"narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
"rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26",
"type": "github"
},
"original": {
@ -297,6 +315,24 @@
"inputs": {
"systems": "systems_6"
},
"locked": {
"lastModified": 1710146030,
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_6": {
"inputs": {
"systems": "systems_7"
},
"locked": {
"lastModified": 1705309234,
"narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=",
@ -311,9 +347,9 @@
"type": "github"
}
},
"flake-utils_6": {
"flake-utils_7": {
"inputs": {
"systems": "systems_7"
"systems": "systems_8"
},
"locked": {
"lastModified": 1701680307,
@ -329,7 +365,7 @@
"type": "github"
}
},
"flake-utils_7": {
"flake-utils_8": {
"locked": {
"lastModified": 1659877975,
"narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
@ -344,9 +380,9 @@
"type": "github"
}
},
"flake-utils_8": {
"flake-utils_9": {
"inputs": {
"systems": "systems_8"
"systems": "systems_9"
},
"locked": {
"lastModified": 1705309234,
@ -462,7 +498,7 @@
},
"kanagawa-gtk": {
"inputs": {
"flake-utils": "flake-utils_5",
"flake-utils": "flake-utils_6",
"kanagawa-gtk": "kanagawa-gtk_2",
"nixpkgs": [
"nixpkgs"
@ -514,7 +550,7 @@
},
"neovim-flake": {
"inputs": {
"flake-utils": "flake-utils_6",
"flake-utils": "flake-utils_7",
"nixpkgs": [
"neovim-nightly-overlay",
"nixpkgs"
@ -560,7 +596,7 @@
},
"nixgl": {
"inputs": {
"flake-utils": "flake-utils_7",
"flake-utils": "flake-utils_8",
"nixpkgs": "nixpkgs_3"
},
"locked": {
@ -642,11 +678,11 @@
},
"nixpkgs_4": {
"locked": {
"lastModified": 1710503106,
"narHash": "sha256-WQenjcuNH9cnEYqh/PFxpmjK9PQnEPGt1Z7TCfYBhXs=",
"lastModified": 1710534455,
"narHash": "sha256-huQT4Xs0y4EeFKn2BTBVYgEwJSv8SDlm82uWgMnCMmI=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "b1d47989352fcb722a1f19295a9461ed1ef8435a",
"rev": "9af9c1c87ed3e3ed271934cb896e0cdd33dae212",
"type": "github"
},
"original": {
@ -658,10 +694,11 @@
},
"root": {
"inputs": {
"Fmt": "Fmt",
"agenix": "agenix",
"bob": "bob",
"emacs-overlay": "emacs-overlay",
"flake-utils": "flake-utils_4",
"flake-utils": "flake-utils_5",
"home-manager": "home-manager_2",
"kanagawa-gtk": "kanagawa-gtk",
"neovim-nightly-overlay": "neovim-nightly-overlay",
@ -841,6 +878,21 @@
"type": "github"
}
},
"systems_9": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"waybar": {
"inputs": {
"flake-compat": "flake-compat_2",
@ -849,11 +901,11 @@
]
},
"locked": {
"lastModified": 1710520627,
"narHash": "sha256-ryb5Wbx/2C58K+PkyoroV2JKeSrvXoBsIlPCZGD89IA=",
"lastModified": 1710593646,
"narHash": "sha256-0JhJM8dPPLLhVDNsE4d2U0Pjj/TT9X1f0FjjCmcednA=",
"owner": "Alexays",
"repo": "Waybar",
"rev": "8174dce77657300531fef8e350753b90dc8f65eb",
"rev": "376b4d1c09c25d7e3d75f5d2be288367de4f91c3",
"type": "github"
},
"original": {
@ -864,7 +916,7 @@
},
"wezterm": {
"inputs": {
"flake-utils": "flake-utils_8",
"flake-utils": "flake-utils_9",
"freetype2": "freetype2",
"harfbuzz": "harfbuzz",
"libpng": "libpng",
@ -876,11 +928,11 @@
},
"locked": {
"dir": "nix",
"lastModified": 1708994725,
"narHash": "sha256-t/owVTFmpudRe0kFngQMiVCXmN9DjvqECeoe/sg5zxU=",
"lastModified": 1710600158,
"narHash": "sha256-XjNzpcgqKuz6It6wBPJYtbieFglN4KqEKB306Qvpue0=",
"owner": "wez",
"repo": "wezterm",
"rev": "22424c3280cb21af43317cb58ef7bc34a8cbcc91",
"rev": "889f8a9cd71a2b3552f28f6d1864aa3cd9461fdf",
"type": "github"
},
"original": {

View File

@ -12,6 +12,10 @@
url = "path:./pkgs/bob-nvim";
inputs.nixpkgs.follows = "nixpkgs";
};
Fmt = {
url = "path:./pkgs/Fmt";
inputs.nixpkgs.follows = "nixpkgs";
};
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
@ -41,7 +45,7 @@
defaultPackage.x86_64-linux = home-manager.defaultPackage.x86_64-linux;
targets.genericLinux = { enable = true; };
homeConfigurations.${username} =
home-manager.lib.homeManagerConfiguration rec {
home-manager.lib.homeManagerConfiguration {
pkgs = nixpkgs.legacyPackages.${system};
extraSpecialArgs = {
inherit inputs;
@ -54,10 +58,10 @@
inputs.neovim-nightly-overlay.overlay
inputs.emacs-overlay.overlays.emacs
inputs.bob.overlays.default
inputs.Fmt.overlays.default
inputs.kanagawa-gtk.overlays.default
inputs.nixgl.overlay
(final: prev: {
Fmt = pkgs.writeScriptBin "Fmt" (builtins.readFile ./scripts/fmt.bash);
waybar = inputs.waybar.packages.${system}.default;
lxappearance = prev.lxappearance.overrideAttrs (oldAttrs: {
postInstall = ''
@ -96,7 +100,6 @@
];
shellHook = ''
export RULES="$PWD/secrets/secrets.nix"
nix eval --json --file ./.nixd.nix > .nixd.json
'';
};
});

61
pkgs/Fmt/flake.lock Normal file
View File

@ -0,0 +1,61 @@
{
"nodes": {
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1710146030,
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1710534455,
"narHash": "sha256-huQT4Xs0y4EeFKn2BTBVYgEwJSv8SDlm82uWgMnCMmI=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "9af9c1c87ed3e3ed271934cb896e0cdd33dae212",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

25
pkgs/Fmt/flake.nix Normal file
View File

@ -0,0 +1,25 @@
{
description = "Flake for custom formatting script";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
flake-utils.url = "github:numtide/flake-utils";
};
outputs = { self, nixpkgs, flake-utils }:
flake-utils.lib.eachDefaultSystem (system:
let pkgs = nixpkgs.legacyPackages.${system};
in {
# This builds the blog binary then runs it and collects the output. Once done it throws away the binary and
# shoves the newly created static site into the result.
packages.default =
pkgs.writeScriptBin "Fmt" (builtins.readFile ./fmt.bash);
# Rust dev environment
devShells.default = pkgs.mkShell;
}) // {
overlays.default = final: prev: {
Fmt = self.packages.${final.system}.default;
};
};
}

View File

@ -83,16 +83,17 @@ usage() {
cat <<-__EOS__
Usage: ${base} "path-to-a-file-to-format" "another-file-to-format" "and-another-file"
-f | --fmt
Enables format mode. By default this script only checks if the
formatting of files is correct.
Enables format mode. By default this script only checks if the
formatting of files is correct.
Example:
${base} --fmt -- "file-to-format"
Example:
${base} --fmt -- "file-to-format"
-F | --fail-fast
Fails on the first format error instead of gathering all errors.
Fails on the first format error instead of gathering all errors.
Example:
${base} --fail-fast -- "file-to-format"
Example:
${base} --fail-fast -- "file-to-format"
__EOS__
}

4
scripts/check-fmt-git-pre-commit.bash Normal file → Executable file
View File

@ -16,7 +16,9 @@ main() {
fi
done < <(git diff --name-only --staged --diff-filter=d)
Fmt -- "${files[@]}"
if ((${#files[@]} > 0)); then
Fmt -- "${files[@]}"
fi
}
main "${@}"