2019-08-30 14:54:05 +02:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
#
|
|
|
|
# Copyright (c) 2019 The Tor Project, Inc.
|
|
|
|
# See LICENSE for license information
|
|
|
|
#
|
|
|
|
# checkShellScripts.sh
|
|
|
|
# --------------------
|
|
|
|
# If shellcheck is installed, check all the shell scripts that we can fix.
|
|
|
|
|
|
|
|
set -e
|
|
|
|
|
|
|
|
# Only run this script if shellcheck is installed
|
|
|
|
# command echoes the path to shellcheck, which is a useful diagnostic log
|
|
|
|
if ! command -v shellcheck; then
|
|
|
|
printf "%s: Install shellcheck to check shell scripts.\\n" "$0"
|
|
|
|
exit 0
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Some platforms don't have realpath
|
|
|
|
if command -v realpath ; then
|
|
|
|
HERE=$(dirname "$(realpath "$0")")
|
|
|
|
else
|
|
|
|
HERE=$(dirname "$0")
|
2019-09-10 04:23:12 +02:00
|
|
|
if [ ! -d "$HERE" ] || [ "$HERE" = "." ]; then
|
2019-08-30 14:54:05 +02:00
|
|
|
HERE=$(dirname "$PWD/$0")
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
TOPLEVEL=$(dirname "$(dirname "$HERE")")
|
|
|
|
|
|
|
|
# Check we actually have a tor/src directory
|
|
|
|
if [ ! -d "$TOPLEVEL/src" ]; then
|
|
|
|
printf "Error: Couldn't find src directory in expected location: %s\\n" \
|
|
|
|
"$TOPLEVEL/src"
|
2019-09-10 04:24:08 +02:00
|
|
|
exit 1
|
2019-08-30 14:54:05 +02:00
|
|
|
fi
|
|
|
|
|
|
|
|
# Check *.sh scripts, but ignore the ones that we can't fix
|
|
|
|
find "$TOPLEVEL" \
|
|
|
|
-name "*.sh" \
|
|
|
|
-path "$TOPLEVEL/contrib/*" \
|
|
|
|
-path "$TOPLEVEL/doc/*" \
|
|
|
|
-path "$TOPLEVEL/scripts/*" \
|
|
|
|
-path "$TOPLEVEL/src/*" \
|
|
|
|
-not -path "$TOPLEVEL/src/ext/*" \
|
|
|
|
-not -path "$TOPLEVEL/src/rust/registry/*" \
|
|
|
|
-exec shellcheck {} +
|
|
|
|
|
|
|
|
# Check scripts that aren't named *.sh
|
|
|
|
if [ -d "$TOPLEVEL/scripts/test" ]; then
|
|
|
|
shellcheck \
|
|
|
|
"$TOPLEVEL/scripts/test/cov-diff" \
|
|
|
|
"$TOPLEVEL/scripts/test/coverage"
|
|
|
|
fi
|
|
|
|
if [ -e \
|
|
|
|
"$TOPLEVEL/contrib/dirauth-tools/nagios-check-tor-authority-cert" \
|
|
|
|
]; then
|
|
|
|
shellcheck \
|
|
|
|
"$TOPLEVEL/contrib/dirauth-tools/nagios-check-tor-authority-cert"
|
|
|
|
fi
|
|
|
|
if [ -e "$TOPLEVEL/contrib/client-tools/torify" ]; then
|
|
|
|
shellcheck "$TOPLEVEL/contrib/client-tools/torify"
|
|
|
|
fi
|
|
|
|
if [ -d "$TOPLEVEL/scripts/git" ]; then
|
|
|
|
shellcheck "$TOPLEVEL/scripts/git/"*.git-hook
|
|
|
|
fi
|