|  | #!/bin/sh | 
|  |  | 
|  | extract_variable () { | 
|  | ( | 
|  | cat ../Makefile | 
|  | cat <<EOF | 
|  | print_variable: | 
|  | @\$(foreach b,\$($1),echo XXX \$(b:\$X=) YYY;) | 
|  | EOF | 
|  | ) | | 
|  | make -C .. -f - print_variable 2>/dev/null | | 
|  | sed -n -e 's/.*XXX \(.*\) YYY.*/\1/p' | 
|  | } | 
|  |  | 
|  | check_missing_docs () ( | 
|  | ret=0 | 
|  |  | 
|  | for v in $ALL_COMMANDS | 
|  | do | 
|  | case "$v" in | 
|  | git-merge-octopus) continue;; | 
|  | git-merge-ours) continue;; | 
|  | git-merge-recursive) continue;; | 
|  | git-merge-resolve) continue;; | 
|  | git-merge-subtree) continue;; | 
|  | git-fsck-objects) continue;; | 
|  | git-init-db) continue;; | 
|  | git-remote-*) continue;; | 
|  | git-stage) continue;; | 
|  | git-legacy-*) continue;; | 
|  | git-?*--?* ) continue ;; | 
|  | esac | 
|  |  | 
|  | if ! test -f "$v.adoc" | 
|  | then | 
|  | echo "no doc: $v" | 
|  | ret=1 | 
|  | fi | 
|  |  | 
|  | if ! sed -e '1,/^### command list/d' -e '/^#/d' ../command-list.txt | | 
|  | grep -q "^$v[ 	]" | 
|  | then | 
|  | case "$v" in | 
|  | git) | 
|  | ;; | 
|  | *) | 
|  | echo "no link: $v" | 
|  | ret=1 | 
|  | ;; | 
|  | esac | 
|  | fi | 
|  | done | 
|  |  | 
|  | exit $ret | 
|  | ) | 
|  |  | 
|  | check_extraneous_docs () { | 
|  | ( | 
|  | sed -e '1,/^### command list/d' \ | 
|  | -e '/^#/d' \ | 
|  | -e '/guide$/d' \ | 
|  | -e '/interfaces$/d' \ | 
|  | -e 's/[ 	].*//' \ | 
|  | -e 's/^/listed /' ../command-list.txt | 
|  | make print-man1 | | 
|  | grep '\.adoc$' | | 
|  | sed -e 's|^|documented |' \ | 
|  | -e 's/\.adoc//' | 
|  | ) | ( | 
|  | all_commands="$(printf "%s " "$ALL_COMMANDS" "$BUILT_INS" "$EXCLUDED_PROGRAMS" | tr '\n' ' ')" | 
|  | ret=0 | 
|  |  | 
|  | while read how cmd | 
|  | do | 
|  | case " $all_commands " in | 
|  | *" $cmd "*) ;; | 
|  | *) | 
|  | echo "removed but $how: $cmd" | 
|  | ret=1;; | 
|  | esac | 
|  | done | 
|  |  | 
|  | exit $ret | 
|  | ) | 
|  | } | 
|  |  | 
|  | BUILT_INS="$(extract_variable BUILT_INS)" | 
|  | ALL_COMMANDS="$(extract_variable ALL_COMMANDS)" | 
|  | EXCLUDED_PROGRAMS="$(extract_variable EXCLUDED_PROGRAMS)" | 
|  |  | 
|  | findings=$( | 
|  | if ! check_missing_docs | 
|  | then | 
|  | ret=1 | 
|  | fi | 
|  |  | 
|  | if ! check_extraneous_docs | 
|  | then | 
|  | ret=1 | 
|  | fi | 
|  |  | 
|  | exit $ret | 
|  | ) | 
|  | ret=$? | 
|  |  | 
|  | printf "%s" "$findings" | sort | 
|  |  | 
|  | exit $ret |