mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-22 15:40:19 +00:00
4b2bbe6a7e
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.
49 lines
1.4 KiB
Bash
Executable file
49 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
|