blob: a0ea572382d8d9963bcb817a6b1cb267fa65dae2 [file] [log] [blame]
Patrick Steinhardt2dd100c2024-06-06 10:01:00 +02001#!/bin/sh
2
3extract_variable () {
4 (
5 cat ../Makefile
6 cat <<EOF
7print_variable:
8 @\$(foreach b,\$($1),echo XXX \$(b:\$X=) YYY;)
9EOF
10 ) |
11 make -C .. -f - print_variable 2>/dev/null |
12 sed -n -e 's/.*XXX \(.*\) YYY.*/\1/p'
13}
14
Patrick Steinhardt64239202024-06-06 10:01:05 +020015check_missing_docs () (
16 ret=0
17
Patrick Steinhardt2dd100c2024-06-06 10:01:00 +020018 for v in $ALL_COMMANDS
19 do
20 case "$v" in
21 git-merge-octopus) continue;;
22 git-merge-ours) continue;;
23 git-merge-recursive) continue;;
24 git-merge-resolve) continue;;
25 git-merge-subtree) continue;;
26 git-fsck-objects) continue;;
27 git-init-db) continue;;
28 git-remote-*) continue;;
29 git-stage) continue;;
30 git-legacy-*) continue;;
31 git-?*--?* ) continue ;;
32 esac
33
brian m. carlson1f010d62025-01-20 01:56:02 +000034 if ! test -f "$v.adoc"
Patrick Steinhardt2dd100c2024-06-06 10:01:00 +020035 then
36 echo "no doc: $v"
Patrick Steinhardt64239202024-06-06 10:01:05 +020037 ret=1
Patrick Steinhardt2dd100c2024-06-06 10:01:00 +020038 fi
39
40 if ! sed -e '1,/^### command list/d' -e '/^#/d' ../command-list.txt |
41 grep -q "^$v[ ]"
42 then
43 case "$v" in
44 git)
45 ;;
46 *)
Patrick Steinhardt64239202024-06-06 10:01:05 +020047 echo "no link: $v"
48 ret=1
49 ;;
Patrick Steinhardt2dd100c2024-06-06 10:01:00 +020050 esac
51 fi
52 done
Patrick Steinhardt64239202024-06-06 10:01:05 +020053
54 exit $ret
55)
Patrick Steinhardt2dd100c2024-06-06 10:01:00 +020056
57check_extraneous_docs () {
58 (
59 sed -e '1,/^### command list/d' \
60 -e '/^#/d' \
61 -e '/guide$/d' \
62 -e '/interfaces$/d' \
63 -e 's/[ ].*//' \
64 -e 's/^/listed /' ../command-list.txt
65 make print-man1 |
brian m. carlson1f010d62025-01-20 01:56:02 +000066 grep '\.adoc$' |
Patrick Steinhardt2dd100c2024-06-06 10:01:00 +020067 sed -e 's|^|documented |' \
brian m. carlson1f010d62025-01-20 01:56:02 +000068 -e 's/\.adoc//'
Patrick Steinhardt2dd100c2024-06-06 10:01:00 +020069 ) | (
70 all_commands="$(printf "%s " "$ALL_COMMANDS" "$BUILT_INS" "$EXCLUDED_PROGRAMS" | tr '\n' ' ')"
Patrick Steinhardt64239202024-06-06 10:01:05 +020071 ret=0
Patrick Steinhardt2dd100c2024-06-06 10:01:00 +020072
73 while read how cmd
74 do
75 case " $all_commands " in
76 *" $cmd "*) ;;
77 *)
Patrick Steinhardt64239202024-06-06 10:01:05 +020078 echo "removed but $how: $cmd"
79 ret=1;;
Patrick Steinhardt2dd100c2024-06-06 10:01:00 +020080 esac
81 done
Patrick Steinhardt64239202024-06-06 10:01:05 +020082
83 exit $ret
Patrick Steinhardt2dd100c2024-06-06 10:01:00 +020084 )
85}
86
87BUILT_INS="$(extract_variable BUILT_INS)"
88ALL_COMMANDS="$(extract_variable ALL_COMMANDS)"
89EXCLUDED_PROGRAMS="$(extract_variable EXCLUDED_PROGRAMS)"
90
Patrick Steinhardt64239202024-06-06 10:01:05 +020091findings=$(
92 if ! check_missing_docs
93 then
94 ret=1
95 fi
96
97 if ! check_extraneous_docs
98 then
99 ret=1
100 fi
101
102 exit $ret
103)
104ret=$?
105
106printf "%s" "$findings" | sort
107
108exit $ret