From 58997abb2e81d568799696c3650657b8ec3a8bfd Mon Sep 17 00:00:00 2001 From: Michael Hanselmann <hansmi@google.com> Date: Mon, 7 Jan 2013 19:53:31 +0100 Subject: [PATCH] Add script to check man page references MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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: Michael Hanselmann <hansmi@google.com> Reviewed-by: Guido Trotter <ultrotter@google.com> --- Makefile.am | 5 +++- autotools/check-man-references | 51 ++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 1 deletion(-) create mode 100755 autotools/check-man-references diff --git a/Makefile.am b/Makefile.am index b9473f0b9..871f73f38 100644 --- a/Makefile.am +++ b/Makefile.am @@ -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 diff --git a/autotools/check-man-references b/autotools/check-man-references new file mode 100755 index 000000000..34b9a32d4 --- /dev/null +++ b/autotools/check-man-references @@ -0,0 +1,51 @@ +#!/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 -- GitLab