check-nl-at-eof.sh 601 B

123456789101112131415161718192021222324252627282930313233343536
  1. #!/usr/bin/env bash
  2. set -euo pipefail
  3. cd -P -- "$(dirname -- "$0")/.."
  4. nl_at_eof() {
  5. local file="$1"
  6. if ! [ -f "$file" ]; then
  7. return
  8. fi
  9. case "$file" in
  10. *.png|*rebar3)
  11. return
  12. ;;
  13. scripts/erlfmt)
  14. return
  15. ;;
  16. esac
  17. local lastbyte
  18. lastbyte="$(tail -c 1 "$file" 2>&1)"
  19. if [ "$lastbyte" != '' ]; then
  20. echo "$file"
  21. return 1
  22. fi
  23. }
  24. n=0
  25. while read -r file; do
  26. if ! nl_at_eof "$file"; then
  27. echo "nl_at_eof: $file"
  28. n=$(( n + 1 ))
  29. fi
  30. done < <(git ls-files)
  31. exit $n