Add shellcheck lint
Run shellcheck [1] on the bash files. [1]: https://www.shellcheck.net/ Signed-off-by: Tim Crawford <tcrawford@system76.com>
This commit is contained in:
		
				
					committed by
					
						 Jeremy Soller
						Jeremy Soller
					
				
			
			
				
	
			
			
			
						parent
						
							623d3ce8ab
						
					
				
				
					commit
					7205f1a49e
				
			
							
								
								
									
										3
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							| @@ -16,6 +16,9 @@ jobs: | |||||||
|       - name: Check formatting |       - name: Check formatting | ||||||
|         run: ./scripts/lint/02-clang-format.sh |         run: ./scripts/lint/02-clang-format.sh | ||||||
|  |  | ||||||
|  |       - name: Check shell scripts | ||||||
|  |         run: ./scripts/lint/03-shellcheck.sh | ||||||
|  |  | ||||||
|   tool: |   tool: | ||||||
|     strategy: |     strategy: | ||||||
|       matrix: |       matrix: | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| #!/usr/bin/env bash | #!/usr/bin/env bash | ||||||
| # SPDX-License-Identifier: GPL-3.0-only | # SPDX-License-Identifier: GPL-3.0-only | ||||||
|  |  | ||||||
| FILES=($(git ls-files '*.[ch]')) | readarray -t FILES < <(git ls-files '*.c' '*.h') | ||||||
|  |  | ||||||
| FMT_OPTS=( | FMT_OPTS=( | ||||||
|     "-style=file" |     "-style=file" | ||||||
|   | |||||||
| @@ -29,6 +29,7 @@ if [[ "${ID}" =~ "debian" ]] || [[ "${ID_LIKE}" =~ "debian" ]]; then | |||||||
|         make \ |         make \ | ||||||
|         pkgconf \ |         pkgconf \ | ||||||
|         sdcc \ |         sdcc \ | ||||||
|  |         shellcheck \ | ||||||
|         xxd |         xxd | ||||||
| elif [[ "${ID}" =~ "fedora" ]] || [[ "${ID_LIKE}" =~ "fedora" ]]; then | elif [[ "${ID}" =~ "fedora" ]] || [[ "${ID_LIKE}" =~ "fedora" ]]; then | ||||||
|     sudo dnf install \ |     sudo dnf install \ | ||||||
| @@ -41,6 +42,7 @@ elif [[ "${ID}" =~ "fedora" ]] || [[ "${ID_LIKE}" =~ "fedora" ]]; then | |||||||
|         gcc \ |         gcc \ | ||||||
|         make \ |         make \ | ||||||
|         sdcc \ |         sdcc \ | ||||||
|  |         ShellCheck \ | ||||||
|         systemd-devel \ |         systemd-devel \ | ||||||
|         vim-common |         vim-common | ||||||
| elif [[ "${ID}" =~ "arch" ]] || [[ "${ID_LIKE}" =~ "arch" ]]; then | elif [[ "${ID}" =~ "arch" ]] || [[ "${ID_LIKE}" =~ "arch" ]]; then | ||||||
| @@ -55,6 +57,7 @@ elif [[ "${ID}" =~ "arch" ]] || [[ "${ID_LIKE}" =~ "arch" ]]; then | |||||||
|         make \ |         make \ | ||||||
|         pkgconf \ |         pkgconf \ | ||||||
|         sdcc \ |         sdcc \ | ||||||
|  |         shellcheck \ | ||||||
|         systemd-libs \ |         systemd-libs \ | ||||||
|         vim |         vim | ||||||
| else | else | ||||||
|   | |||||||
							
								
								
									
										36
									
								
								scripts/lint/03-shellcheck.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										36
									
								
								scripts/lint/03-shellcheck.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,36 @@ | |||||||
|  | #!/usr/bin/env bash | ||||||
|  | # SPDX-License-Identifier: GPL-3.0-only | ||||||
|  |  | ||||||
|  | # Check if any shell scripts have issues. | ||||||
|  |  | ||||||
|  | LINT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &> /dev/null && pwd) | ||||||
|  | . "$LINT_DIR/util.sh" | ||||||
|  |  | ||||||
|  | echo -n "Checking shell scripts..." | ||||||
|  |  | ||||||
|  | if ! command -v shellcheck > /dev/null; then | ||||||
|  |     skipped "shellcheck not found" | ||||||
|  |     exit 0 | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | readarray -t FILES < <(git ls-files '*.sh') | ||||||
|  | needs_formatting=() | ||||||
|  |  | ||||||
|  | for file in "${FILES[@]}"; do | ||||||
|  |     # SC1091: Ignore external scripts | ||||||
|  |     if ! shellcheck -f quiet --exclude=SC1091 "$file"; then | ||||||
|  |         needs_formatting+=("$file") | ||||||
|  |     fi | ||||||
|  | done | ||||||
|  |  | ||||||
|  | if [[ "${#needs_formatting[@]}" != "0" ]]; then | ||||||
|  |     failed | ||||||
|  |  | ||||||
|  |     for file in "${needs_formatting[@]}"; do | ||||||
|  |         echo "- $file" | ||||||
|  |     done | ||||||
|  |  | ||||||
|  |     exit 1 | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | passed | ||||||
| @@ -60,7 +60,7 @@ do | |||||||
|     else |     else | ||||||
|         F="$(date "+%T")" |         F="$(date "+%T")" | ||||||
|  |  | ||||||
|         last_E="$(sudo cat /sys/class/powercap/intel-rapl\:0/energy_uj)" |         last_E="$(sudo cat '/sys/class/powercap/intel-rapl:0/energy_uj')" | ||||||
|         sleep 1 |         sleep 1 | ||||||
|  |  | ||||||
|         if [ "${has_bat}" == "1" ] |         if [ "${has_bat}" == "1" ] | ||||||
| @@ -73,15 +73,15 @@ do | |||||||
|             F="${F}\t$(printf "%.2f" "${bat_W}")" |             F="${F}\t$(printf "%.2f" "${bat_W}")" | ||||||
|         fi |         fi | ||||||
|  |  | ||||||
|         E="$(sudo cat /sys/class/powercap/intel-rapl\:0/energy_uj)" |         E="$(sudo cat '/sys/class/powercap/intel-rapl:0/energy_uj')" | ||||||
|         W="$(echo "(${E} - ${last_E})/1000000" | bc -lq)" |         W="$(echo "(${E} - ${last_E})/1000000" | bc -lq)" | ||||||
|         F="${F}\t$(printf "%.1f" "${W}")" |         F="${F}\t$(printf "%.1f" "${W}")" | ||||||
|  |  | ||||||
|         PL1_uW="$(sudo cat /sys/class/powercap/intel-rapl\:0/constraint_0_power_limit_uw)" |         PL1_uW="$(sudo cat '/sys/class/powercap/intel-rapl:0/constraint_0_power_limit_uw')" | ||||||
|         PL1_W="$(echo "${PL1_uW}/1000000" | bc -lq)" |         PL1_W="$(echo "${PL1_uW}/1000000" | bc -lq)" | ||||||
|         F="${F}\t$(printf "%.1f" "${PL1_W}")" |         F="${F}\t$(printf "%.1f" "${PL1_W}")" | ||||||
|  |  | ||||||
|         PL2_uW="$(sudo cat /sys/class/powercap/intel-rapl\:0/constraint_1_power_limit_uw)" |         PL2_uW="$(sudo cat '/sys/class/powercap/intel-rapl:0/constraint_1_power_limit_uw')" | ||||||
|         PL2_W="$(echo "${PL2_uW}/1000000" | bc -lq)" |         PL2_W="$(echo "${PL2_uW}/1000000" | bc -lq)" | ||||||
|         F="${F}\t$(printf "%.1f" "${PL2_W}")" |         F="${F}\t$(printf "%.1f" "${PL2_W}")" | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user