diff --git a/doc/Makefile b/doc/Makefile index a7e77d23b..a6dd2fb7f 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -62,6 +62,11 @@ doc/full-states.dot: test/test_state_coverage maintainer-clean: doc-maintainer-clean clean: doc-clean +check: check-manpages + +check-manpages: cli/lightning-cli lightningd/lightningd + @tools/check-manpage.sh cli/lightning-cli doc/lightning-cli.1.txt + @tools/check-manpage.sh lightningd/lightningd doc/lightningd-config.5.txt doc-maintainer-clean: $(RM) doc/deployable-lightning.pdf diff --git a/tools/check-manpage.sh b/tools/check-manpage.sh new file mode 100755 index 000000000..4c35f1b9f --- /dev/null +++ b/tools/check-manpage.sh @@ -0,0 +1,39 @@ +#! /bin/bash +# Needs bash for process substitition, ie <( + +if [ $# != 2 ]; then + echo "Usage $0 " >&2 + exit 1 +fi + +get_cmd_opts() +{ + # Trim out -- after first one (--option mentioned in help!) + $1 --help | grep '^-' | sed 's/[ ].*--.*//' | while IFS=$'\n' read -r opt; do + case "$opt" in + # We don't document dev options. + --dev*) + ;; + --*=*|--*' '*) + echo "${opt%%[ =]*}=" | cut -c3- + ;; + --*) + echo "${opt%%[ |]*}" | cut -c3- + ;; + -*\|--*) + opt=${opt##*|} + echo "${opt%%[ |]*}" | cut -c3- + esac + done +} + +CMD_OPTNAMES=$(get_cmd_opts "$1" | sort) + +# Now, gather (long) opt names from man page, make sure they match. +MAN_OPTNAMES=$(sed -n 's/^\*\(--\)\?\([^*/]*\)\*\(=\?\).*::/\2\3/p' < "$2" | sort) + +if [ "$CMD_OPTNAMES" != "$MAN_OPTNAMES" ]; then + echo "diff of command names vs manpage names": + diff -u <(echo "$CMD_OPTNAMES") <(echo "$MAN_OPTNAMES") + exit 2 +fi