mirror of
https://github.com/SerenityOS/serenity
synced 2026-05-10 17:12:55 +02:00
This change ensures that users can use LibShell easily understand this library now, because we have an actual library directory. In addition to that, we move the test scripts to Tests/LibShell, to match the usual pattern of putting test-related files in the Tests/ directory.
52 lines
1.5 KiB
Bash
Executable File
52 lines
1.5 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' \
|
|
':!:Tests/LibShell' \
|
|
':!:Base/home/anon/Tests' \
|
|
':!:Base/root/generate_manpages.sh' \
|
|
':!:Base/usr/share/shell' \
|
|
':!:Base/etc/shellrc' \
|
|
)
|
|
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 --source-path=SCRIPTDIR "${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
|