42 lines
703 B
Bash
Executable File
42 lines
703 B
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# Git hook to run ShellCheck.
|
|
#
|
|
# ShellCheck <https://www.shellcheck.net/>
|
|
|
|
# Treat unset variables as an error when performing parameter expansion.
|
|
set -u
|
|
|
|
TRUE=0
|
|
FALSE=1
|
|
|
|
die() {
|
|
echo "$@" >&2
|
|
exit 1
|
|
}
|
|
|
|
if ! command -v shellcheck >/dev/null; then
|
|
echo 'unable to locate shellcheck' >&2
|
|
return 0
|
|
fi
|
|
|
|
success=${TRUE}
|
|
for f in $(git diff --cached --name-only); do
|
|
# Check for file deletion.
|
|
if [ ! -r "${f}" ]; then
|
|
continue
|
|
fi
|
|
|
|
cmd=':'
|
|
case "${f}" in
|
|
shflags|shflags_test_helpers) cmd="shellcheck -s sh ${f}" ;;
|
|
*.sh) cmd="shellcheck ${f}" ;;
|
|
esac
|
|
if ! ${cmd}; then
|
|
success=${FALSE}
|
|
echo "shellcheck error for '${f}'" >&2
|
|
fi
|
|
done
|
|
|
|
exit ${success}
|