35 lines
1.1 KiB
Bash
Executable file
35 lines
1.1 KiB
Bash
Executable file
#!/bin/bash
|
|
# Template generated by https://github.com/coreos/repo-templates; do not edit downstream
|
|
|
|
set -euo pipefail
|
|
|
|
main() {
|
|
local found_errors="false"
|
|
# Let's start with error, then we can do warning, info, style
|
|
local -r severity="error"
|
|
|
|
while IFS= read -r -d '' f; do
|
|
# Skip non-text files that are very unlikely to be shell scripts
|
|
if [[ "$(file -b --mime-type "${f}" | sed 's|/.*||')" != "text" ]]; then
|
|
continue
|
|
fi
|
|
shebang="$(head -1 "${f}")"
|
|
if [[ "${f}" == *.sh ]] || \
|
|
[[ ${shebang} =~ ^#!/.*/bash.* ]] || \
|
|
[[ ${shebang} =~ ^#!/.*/env\ bash ]]; then
|
|
echo "[+] Checking ${f}"
|
|
shellcheck --external-sources --shell bash --severity="${severity}" "${f}" || found_errors="true"
|
|
bash -n "${f}" || found_errors="true"
|
|
fi
|
|
done< <(find . -path "./.git" -prune -o -path "./vendor" -prune -o -type f -print0)
|
|
|
|
if [[ "${found_errors}" != "false" ]]; then
|
|
echo "[+] Found errors with ShellCheck"
|
|
exit 1
|
|
fi
|
|
|
|
echo "[+] No error found with ShellCheck"
|
|
exit 0
|
|
}
|
|
|
|
main "${@}"
|