mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 12:32:43 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			51 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			51 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' \
 | |
|             ':!: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 "${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
 | 
