diff options
-rw-r--r-- | ymir.nix | 23 |
1 files changed, 22 insertions, 1 deletions
@@ -891,7 +891,28 @@ in rec { | |||
891 | [directory-sync] | 891 | [directory-sync] |
892 | directory=/var/lib/infinoted/dirsync | 892 | directory=/var/lib/infinoted/dirsync |
893 | interval=5 | 893 | interval=5 |
894 | hook=/var/lib/infinoted/git-sync.sh | 894 | hook=${pkgs.writeScript "git-sync.sh" '' |
895 | #!${pkgs.zsh}/bin/zsh | ||
896 | |||
897 | repository=$(git -C ${2:h} rev-parse --show-toplevel) | ||
898 | [[ $? -eq 0 ]] || exit 0 | ||
899 | |||
900 | git() { | ||
901 | $(whence -cp git) -C ${repository} ${@} | ||
902 | } | ||
903 | |||
904 | typeset -a changeSet | ||
905 | changeSet=() | ||
906 | git diff -z --name-only | \ | ||
907 | while IFS= read -r -d $'\0' change; do changeSet=(${changeSet} ${change}); done | ||
908 | |||
909 | [[ ${changeSet[(i)$(realpath ${2} --relative-to=${repository})]} -le ${#changeSet} ]] || exit 0 | ||
910 | |||
911 | commitMessage=$(printf "%s modified via infinoted" $(realpath ${2} --relative-to=${repository})) | ||
912 | git add ${2} | ||
913 | git commit -m ${commitMessage} --no-edit ${2} | ||
914 | git push | ||
915 | ''} | ||
895 | ''; | 916 | ''; |
896 | }; | 917 | }; |
897 | 918 | ||