diff options
author | Zhongheng Liu <z.liu@outlook.com.gr> | 2024-12-23 11:02:41 +0200 |
---|---|---|
committer | Zhongheng Liu <z.liu@outlook.com.gr> | 2024-12-23 11:02:41 +0200 |
commit | 51f3ed41cc49dea1143e638825c26274eb836b7b (patch) | |
tree | 07554d93a3f1c2817e2d4dc945f09131b89d8d0f | |
parent | 54bc34d7dc91c76f4f87ea64549ec6d48301d9df (diff) | |
download | nixos-configuration-51f3ed41cc49dea1143e638825c26274eb836b7b.tar.gz nixos-configuration-51f3ed41cc49dea1143e638825c26274eb836b7b.tar.bz2 nixos-configuration-51f3ed41cc49dea1143e638825c26274eb836b7b.zip |
feat: add new git check clean script
-rw-r--r-- | home-manager/stvnliu/scripts/default.nix | 4 | ||||
-rw-r--r-- | home-manager/stvnliu/scripts/git_check_clean.script.nix | 48 |
2 files changed, 52 insertions, 0 deletions
diff --git a/home-manager/stvnliu/scripts/default.nix b/home-manager/stvnliu/scripts/default.nix index f2f984f..765cc78 100644 --- a/home-manager/stvnliu/scripts/default.nix +++ b/home-manager/stvnliu/scripts/default.nix @@ -9,5 +9,9 @@ inherit pkgs; inherit config; }) + (import ./git_check_clean.script.nix { + inherit pkgs; + inherit config; + }) ]; } diff --git a/home-manager/stvnliu/scripts/git_check_clean.script.nix b/home-manager/stvnliu/scripts/git_check_clean.script.nix new file mode 100644 index 0000000..6ee2747 --- /dev/null +++ b/home-manager/stvnliu/scripts/git_check_clean.script.nix @@ -0,0 +1,48 @@ +{ + pkgs, + config, +}: let + git = config.programs.git.package; +in + pkgs.writeShellScriptBin "git-check-clean" '' + #!${pkgs.bash}/bin/bash + cd_err() { + echo "change-directory occurred error. interrupting..." + } + git_check() { + prev=$1 + repo_dir=$2 + filter=$3 + if [[ ! "$filter" == "dirty" && ! "$filter" = "clean" ]]; then + echo "Could not parse filter string" + return + fi + cd "$repo_dir" || return + inside_git_repo="$(${git}/bin/git rev-parse --is-inside-work-tree 2>/dev/null)" + if [ "$inside_git_repo" ]; then + if [ "$(${git}/bin/git status --porcelain)" ]; then + result=0 + else + result=1 + fi + #echo "not a git repository" + fi + if [ "$filter" = "dirty" ]; then + if [[ $result -eq 0 ]]; then + echo "DIRTY $PWD" + fi + else + if [[ $result -eq 1 ]]; then + echo "CLEAN $PWD" + fi + fi + #echo "going back to $prev" + cd "$prev" || return + } + export -f git_check + export -f cd_err + path=$PWD + for item in $(${pkgs.findutils}/bin/find . -maxdepth 1 -type d); do + git_check "$path" "$item" "$1" + done + '' |