• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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