diff --git a/shell/hooks/pre-commit.sh b/shell/hooks/pre-commit.sh index 329ae3f4..4adf6c0a 100755 --- a/shell/hooks/pre-commit.sh +++ b/shell/hooks/pre-commit.sh @@ -13,25 +13,29 @@ diff="git diff-index --name-only --cached $against --diff-filter d" mapfile -t nix_files < <($diff -- '*.nix') mapfile -t all_files < <($diff) -# Format staged nix files. -if [[ -n "${nix_files[@]}" ]]; then - # stash only unstaged changes, keeping staged changes +# Format staged nix files +if (( ${#nix_files[@]} != 0 )); then + # Stash only unstaged changes, keeping staged changes old_stash=$(git rev-parse --quiet --verify refs/stash) git stash push --quiet --keep-index -m 'Unstaged changes before pre-commit hook' new_stash=$(git rev-parse --quiet --verify refs/stash) - # format staged changes + # Format staged changes nixpkgs-fmt "${nix_files[@]}" \ && git add "${nix_files[@]}" - # if unstaged changes were stashed reapply to working tree + # If unstaged changes were stashed re-apply to working tree if [ "$old_stash" != "$new_stash" ]; then git stash pop --quiet fi fi -# check editorconfig -if ! editorconfig-checker -- "${all_files[@]}"; then +# Check editorconfig +if (( ${#all_files[@]} != 0 )); then + editorconfig-checker -- "${all_files[@]}" +fi + +if [[ $? != '0' ]]; then printf "%b\n" \ "\nCode is not aligned with .editorconfig" \ "Review the output and commit your fixes" >&2