check-newline.sh 501 B

12345678910111213141516171819
  1. #!/usr/bin/env bash
  2. set -e -u -o pipefail
  3. ret=0
  4. show=0
  5. # Reference: https://medium.com/@alexey.inkin/how-to-force-newline-at-end-of-files-and-why-you-should-do-it-fdf76d1d090e
  6. while IFS= read -rd '' f; do
  7. if file --mime-encoding "$f" | grep -qv binary; then
  8. tail -c1 < "$f" | read -r _ || show=1
  9. if [ $show -eq 1 ]; then
  10. echo "Warning: No newline at end of file $f"
  11. ret=1
  12. show=0
  13. fi
  14. fi
  15. done < <(git ls-files -z examples)
  16. exit $ret