forked from traefik/traefik
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathvalidate-shell-script.sh
More file actions
executable file
·24 lines (21 loc) · 943 Bytes
/
validate-shell-script.sh
File metadata and controls
executable file
·24 lines (21 loc) · 943 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/usr/bin/env bash
set -eu -o pipefail
script_dir="$( cd "$( dirname "${0}" )" && pwd -P)"
if command -v shellcheck
then
# The list of shell script come from the (grep ...) command, feeding the loop
while IFS= read -r script_to_check
do
# The shellcheck command are run in background, to have an overview of the linter (instead of a fail at first issue)
shellcheck "${script_to_check}" &
done < <( # Search all the repository for sh and bash shebangs, excluding .js and .md files
# the folders ".git", "vendor" and "node_modules" are also ignored
grep -rI '#!/' "${script_dir}"/.. \
| grep 'sh' | grep -v '.js' | grep -v '.md' \
| grep -v '.git/' | grep -v 'vendor/' | grep -v 'node_modules/' \
| cut -d':' -f1
)
wait # Wait for all background command to be completed
else
echo "== Command shellcheck not found in your PATH. No shell script checked."
fi