feat: add pre-commit hook to check TODO|FIXME|FIX comment

This commit is contained in:
danny 2026-01-10 13:28:41 +08:00
parent cf005ff872
commit 2378a66114
4 changed files with 43 additions and 7 deletions

1
.envrc Normal file
View file

@ -0,0 +1 @@
use flake

1
.gitignore vendored
View file

@ -1,3 +1,4 @@
**/result
.direnv
.pre-commit-config.yaml

View file

@ -254,14 +254,29 @@
pkgs.writeShellScriptBin "pre-commit-run" script
);
checks = forEachSystem (system: {
pre-commit-check = inputs.git-hooks.lib.${system}.run {
src = ./.;
hooks = {
nixfmt.enable = true;
checks = forEachSystem (
system:
let
pkgs = import nixpkgs { inherit system; };
in
{
pre-commit-check = inputs.git-hooks.lib.${system}.run {
src = ./.;
hooks = {
nixfmt.enable = true;
check-comment = {
enable = true;
name = "check comment";
entry = "${pkgs.callPackage ./githooks/check-comment.nix { }}";
files = "\\.nix$";
pass_filenames = false;
stages = [ "pre-commit" ];
};
};
};
};
});
}
);
devShells = forEachSystem (system: {
default =

View file

@ -0,0 +1,19 @@
{ pkgs, lib }:
pkgs.writeShellScript "check-comment" ''
FILES=$("${lib.getExe pkgs.git}" diff --cached --name-only --diff-filter=ACM | grep '\.nix$' | grep -v '^githooks/check-comment.nix$')
TODO_FOUND=0
for file in $FILES; do
if grep -nHE '#\s*(TODO|FIXME|FIX):' "$file"; then
TODO_FOUND=1
fi
done
if [ $TODO_FOUND -eq 1 ]; then
echo "Remove all the '#TODO|FIXME|FIX' before committing"
exit 1
fi
exit 0
''