aboutsummaryrefslogtreecommitdiff
path: root/check/man.sh
blob: 89c03890f70f62b0177bc1070f1350b0a0b703ff (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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# Check that manual pages and logical binaries match up

# Need some scripts from the source directory
PATH=bin:$PATH

# Create temporary directory and implement cleanup function for it
td=
cleanup() {
    rm -fr -- "$td"
}
for sig in EXIT HUP INT TERM ; do
    trap cleanup "$sig"
done
td=$(mktd test-man) || exit

# Get lists of logical binaries and manual pages
# shellcheck disable=SC2016
find bin games -type f -print |
    sed 's_.*/__;s_\..*$__' |
    sort | uniq > "$td"/bin
# shellcheck disable=SC2016
find man/man[168] -type f -name '*.[168]df' -print |
    sed 's_.*/__;s_\..*$__' |
    sort | uniq > "$td"/man

# Get lists of noman scripts and nobin manual pages
comm -23 "$td"/bin "$td"/man > "$td"/noman
comm -13 "$td"/bin "$td"/man > "$td"/nobin

# Emit the content of both, if any
ex=0
if [ -s "$td"/noman ] ; then
    printf >&2 'No manual pages found for:\n'
    cat >&2 -- "$td"/noman
    ex=1
fi
if [ -s "$td"/nobin ] ; then
    printf >&2 'Stray manual page for:\n'
    cat >&2 -- "$td"/nobin
    ex=1
fi

# Exit appropriately
if [ "$ex" -eq 0 ] ; then
    printf 'All scripts have manual pages.\n'
fi
exit "$ex"