mirror of
https://github.com/SerenityOS/serenity.git
synced 2025-01-22 09:21:57 -05:00
d46be35f3f
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.
51 lines
1.5 KiB
Bash
Executable file
51 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
|