1#!/bin/sh 2# 3# Git hook to run ShellCheck. 4# 5# ShellCheck <https://www.shellcheck.net/> 6 7# Treat unset variables as an error when performing parameter expansion. 8set -u 9 10TRUE=0 11FALSE=1 12 13die() { 14 echo "$@" >&2 15 exit 1 16} 17 18if ! command -v shellcheck >/dev/null; then 19 echo 'unable to locate shellcheck' >&2 20 return 0 21fi 22 23success=${TRUE} 24for f in $(git diff --cached --name-only); do 25 # Check for file deletion. 26 if [ ! -r "${f}" ]; then 27 continue 28 fi 29 30 cmd=':' 31 case "${f}" in 32 shflags|shflags_test_helpers) cmd="shellcheck -s sh ${f}" ;; 33 *.sh) cmd="shellcheck ${f}" ;; 34 esac 35 if ! ${cmd}; then 36 success=${FALSE} 37 echo "shellcheck error for '${f}'" >&2 38 fi 39done 40 41exit ${success} 42