summaryrefslogtreecommitdiff
path: root/build-aux/lint-generic
blob: 9f9e0f79a8cb1ba3726ff8e1c24add0ff17b79da (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#!/bin/sh
# build-aux/lint-generic - Non-language-specific lint checks
#
# Copyright (C) 2024-2025  Luke T. Shumaker <lukeshu@lukeshu.com>
# SPDX-License-Identifier: AGPL-3.0-or-later

r=0
for filename in "$@"; do
	if ! { [ -f "$filename" ] && ! [ -h "$filename" ]; }; then
		continue
	fi
	if ! grep -E -q 'Copyright \(C\) 202[4-9]((-|, )202[5-9])*  Luke T. Shumaker' "$filename"; then
		echo "$filename is missing a copyright statement"; r=1
	fi
	if ! grep -q ' SPDX-License-Identifier[:] ' "$filename"; then
		echo "$filename is missing an SPDX-License-Identifier"; r=1
	fi
	dscname_act=$(./build-aux/get-dscname "$filename")
	dscname_exp=$(echo "$filename" | sed \
		-e 's,.*/config/,,' \
		-e 's,.*/config\.h$,config.h,' \
		-e 's,.*include/,,' \
		-e 's/\.wip$//')
	if [ "$dscname_act" != "$dscname_exp" ] && [ "cmd/$dscname_act" != "$dscname_exp" ]; then
		echo "$filename self-identifies as $dscname_act (expected $dscname_exp)"; r=1
	fi
	if grep -n --color=auto "$(printf '\\S\t')" "$filename"; then
		echo "$filename uses tabs for alignment"; r=1
	fi
done
exit $r