ladybird/Meta/lint-shell-scripts.sh
Brian Gianforcaro 4b2bbe6a7e Meta: Skip shellcheck for Ports in pre-commit hook
Shellcheck barfs on many of the patterns we use in port scripts, the
check is already disabled when we run the script in CI, so we might as
well disable the check for pre-commit as well.
2022-01-17 11:17:15 +01:00

50 lines
1.4 KiB
Bash
Executable File

#!/usr/bin/env bash
set -eo pipefail
script_path=$(cd -P -- "$(dirname -- "$0")" && pwd -P)
cd "$script_path/.."
if [ "$#" -eq "0" ]; then
mapfile -t files < <(
git ls-files -- \
'*.sh' \
':!:Ports' \
':!:Userland/Shell/Tests' \
':!:Base/home/anon/tests' \
':!:Base/root/generate_manpages.sh'
)
else
files=()
for file in "$@"; do
# Skip ports, like we in the CI case above.
if [[ "${file}" =~ "Ports" ]]; then
continue
fi
if [[ "${file}" == *".sh" && "${file}" != "Base/root/generate_manpages.sh" ]]; then
files+=("${file}")
fi
done
fi
if (( ${#files[@]} )); then
if ! command -v shellcheck &>/dev/null ; then
echo "shellcheck is not available, but shell files need linting! Either skip this script, or install shellcheck."
exit 1
fi
shellcheck "${files[@]}"
for file in "${files[@]}"; do
if (< "$file" grep -qE "grep [^|);]*-[^- ]*P"); then
# '\x2D' is the unicode escape sequence for '-'. This is used so
# that this script does not flag itself for containing grep dash P.
echo -e "The script '$file' contains 'grep \x2DP', which is not supported on macOS. Please use grep -E instead."
exit 1
fi
done
else
echo "No .sh files to check."
fi