-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile.lint
52 lines (38 loc) · 1.65 KB
/
Makefile.lint
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# Makefile.lint is the automated checking of this project for various
# programmatic and stylistic errors. Requires GNU make(1).
CURMAKE = $(MAKE) -s -f Makefile.lint
all: deadlinks spellcheck mancheck shellcheck longlines
######################################################################
# Helpers. #
######################################################################
greplinks:
@grep -EIihor "https?://[^\"\\'> ]+" --exclude-dir=.git*
curllinks:
@$(CURMAKE) greplinks | xargs -I{} -r -P10 \
curl -I -o/dev/null -sw "[%{http_code}] %{url}\n" '{}'
######################################################################
# Main Targets. #
######################################################################
deadlinks:
@echo "=======> Check for dead links"
@$(CURMAKE) curllinks | grep -v '^\[200\]' | sort -u
spellcheck:
@echo "=======> Check man pages for spelling errors"
@mandoc -T html *.[1-9] | hunspell -H -l - | sort -u
@echo "=======> Check README.md for spelling errors"
@hunspell -l README.md | sort -u
mancheck:
@echo "=======> Check man pages for syntax errors"
@mandoc -T lint *.[1-9]
shellcheck:
@echo "=======> Check shell scripts for syntax errors"
@grep -m1 -Irl '^#\s*!/bin/sh' --exclude-dir=.git* \
| xargs -L10 -r shellcheck -s sh
longlines:
@echo "=======> Check for long lines"
@! grep -PIrn '^.{81,}$$' --exclude-dir=.git*
######################################################################
.PHONY: all greplinks curllinks \
deadlinks spellcheck mancheck shellcheck longlines
# vim: cc=72 tw=70
# End of file.