Commit 58997abb authored by Michael Hanselmann's avatar Michael Hanselmann

Add script to check man page references

This script checks for some of the most obvious mistakes when formatting
man page references (which should have the form “**ganeti**\(7)”). While
this works now, it is very hard to avoid ambiguities (e.g. references
within verbatim blocks) when using regular expressions.

Also fixes a typo in Makefile.am by replacing “harcoded” with
“hardcoded”.
Signed-off-by: default avatarMichael Hanselmann <hansmi@google.com>
Reviewed-by: default avatarGuido Trotter <ultrotter@google.com>
parent 354c4f62
......@@ -23,6 +23,7 @@ RUN_IN_TEMPDIR = $(top_srcdir)/autotools/run-in-tempdir
CHECK_PYTHON_CODE = $(top_srcdir)/autotools/check-python-code
CHECK_HEADER = $(top_srcdir)/autotools/check-header
CHECK_MAN_DASHES = $(top_srcdir)/autotools/check-man-dashes
CHECK_MAN_REFERENCES = $(top_srcdir)/autotools/check-man-references
CHECK_MAN_WARNINGS = $(top_srcdir)/autotools/check-man-warnings
CHECK_VERSION = $(top_srcdir)/autotools/check-version
CHECK_NEWS = $(top_srcdir)/autotools/check-news
......@@ -794,6 +795,7 @@ EXTRA_DIST = \
autotools/check-header \
autotools/check-imports \
autotools/check-man-dashes \
autotools/check-man-references \
autotools/check-man-warnings \
autotools/check-news \
autotools/check-python-code \
......@@ -1193,12 +1195,13 @@ man/%.gen: man/%.rst lib/query.py lib/build/sphinx_ext.py \
| $(RUN_IN_TEMPDIR) $(BUILT_PYTHON_SOURCES)
@echo "Checking $< for hardcoded paths..."
@if grep -nEf autotools/wrong-hardcoded-paths $<; then \
echo "Man page $< has harcoded paths (see above)!" 1>&2 ; \
echo "Man page $< has hardcoded paths (see above)!" 1>&2 ; \
exit 1; \
fi
set -e ; \
trap 'echo auto-removing $@; rm $@' EXIT; \
PYTHONPATH=. $(RUN_IN_TEMPDIR) $(CURDIR)/$(DOCPP) < $< > $@ ;\
$(CHECK_MAN_REFERENCES) $@; \
trap - EXIT
man/%.7.in man/%.8.in man/%.1.in: man/%.gen man/footer.rst
......
#!/bin/bash
#
# Copyright (C) 2013 Google Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301, USA.
set -e -u -o pipefail
# Use array for arguments so that comments can be inline
args=(
# "...name*(8)" (missing backslash)
-e '\w+\*+\([0-9]*\)'
# "...name(8)" (no asterisk)
-e '\w+\([0-9]*\)'
# "...name(8)*" (asterisk after number)
-e '\w+\([0-9]*\)\*'
# "...name*\(8)" (only one asterisk before backslash)
-e '\w+\*\\\([0-9]*\)'
# ":manpage:..." (Sphinx-specific)
-e ':manpage:'
)
for fname; do
# Ignore title and then look for faulty references
if tail -n +2 $fname | grep -n -E -i "${args[@]}"; then
{
echo "Found faulty man page reference(s) in '$fname'."\
'Use syntax "**name**\(number)" instead.'\
'Example: **gnt-instance**\(8).'
} >&2
exit 1
fi
done
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment