diff options
author | Luke T. Shumaker <lukeshu@lukeshu.com> | 2025-05-27 19:01:20 -0400 |
---|---|---|
committer | Luke T. Shumaker <lukeshu@lukeshu.com> | 2025-05-27 19:01:20 -0400 |
commit | 9341075193d878b8b59f0805164eca3737920990 (patch) | |
tree | 89a2b5325d1c588748ecd9ac77c4f906d621a557 /build-aux/lint-generic | |
parent | c50edb6000c9ac10f0cc3d5d9f43f82ec2041e56 (diff) |
make lint/generic: Lint shebang values
Diffstat (limited to 'build-aux/lint-generic')
-rwxr-xr-x | build-aux/lint-generic | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/build-aux/lint-generic b/build-aux/lint-generic index d982527..9bf88dd 100755 --- a/build-aux/lint-generic +++ b/build-aux/lint-generic @@ -1,4 +1,4 @@ -#!/bin/sh +#!/usr/bin/env bash # build-aux/lint-generic - Non-language-specific lint checks # # Copyright (C) 2024-2025 Luke T. Shumaker <lukeshu@lukeshu.com> @@ -16,12 +16,19 @@ r=0 for filename in "$@"; do # File header ########################################################## - shebang="$(sed -n '1{/^#!/{/^#!\/hint\//q; p;};}' "$filename")" - if [ -x "$filename" ] && [ -z "$shebang" ]; then + shebang="$(sed -n '1{/^#!/p;}' "$filename")" + if [[ -x $filename && (-z $shebang || $shebang == '#!/hint/'*) ]]; then err "$filename" 'is executable but does not have a shebang' - elif [ -n "$shebang" ] && ! [ -x "$filename" ]; then + elif [[ (-n $shebang && $shebang != '#!/hint/'*) && ! -x $filename ]]; then err "$filename" 'has a shebang but is not executable' fi + case "$shebang" in + '') : ;; + '#!/bin/sh') : ;; + '#!/usr/bin/env bash') : ;; + '#!/usr/bin/env python3') : ;; + *) err "$filename" 'has an unrecognized shebang' ;; + esac if ! grep -E -q 'Copyright \(C\) 202[4-9]((-|, )202[5-9])* Luke T. Shumaker' "$filename"; then err "$filename" 'is missing a copyright statement' |