aboutsummaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorнаб <[email protected]>2021-05-27 01:31:43 +0200
committerBrian Behlendorf <[email protected]>2021-06-09 13:05:34 -0700
commit13c9a41140f11928ad6d483bfb7aacdbafed6491 (patch)
tree384a7e86dc892873965719117d4f9b40b7bb54e6 /scripts
parentaf80160f48ea389bf1678adc0def39d38b4ddd0e (diff)
mancheck: accept lints, accept lint overrides
Reviewed-by: Richard Laager <[email protected]> Reviewed-by: Brian Behlendorf <[email protected]> Reviewed-by: Tony Nguyen <[email protected]> Reviewed-by: Ryan Moeller <[email protected]> Signed-off-by: Ahelenia Ziemiańska <[email protected]> Closes #12129
Diffstat (limited to 'scripts')
-rw-r--r--scripts/Makefile.am3
-rwxr-xr-xscripts/mancheck.sh43
2 files changed, 45 insertions, 1 deletions
diff --git a/scripts/Makefile.am b/scripts/Makefile.am
index f338cdc39..6c59fd7d4 100644
--- a/scripts/Makefile.am
+++ b/scripts/Makefile.am
@@ -17,7 +17,8 @@ EXTRA_SCRIPTS = \
kmodtool \
make_gitrev.sh \
man-dates.sh \
- paxcheck.sh
+ paxcheck.sh \
+ mancheck.sh
EXTRA_DIST = \
cstyle.pl \
diff --git a/scripts/mancheck.sh b/scripts/mancheck.sh
new file mode 100755
index 000000000..a5b8b0d0a
--- /dev/null
+++ b/scripts/mancheck.sh
@@ -0,0 +1,43 @@
+#!/bin/sh
+#
+# Permission to use, copy, modify, and/or distribute this software for
+# any purpose with or without fee is hereby granted.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
+# AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+# OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+#
+# shellcheck disable=SC2086
+
+if [ "$#" -eq 0 ]; then
+ echo "Usage: $0 manpage-directory..."
+ exit 1
+fi
+
+if ! command -v mandoc > /dev/null; then
+ echo "skipping mancheck because mandoc is not installed"
+ exit 0
+fi
+
+IFS="
+"
+
+files="$(find "$@" -type f -name '*[1-9]*' ! -name '*module-param*' ! -name 'zpool-features*' ! -name 'zfs-mount-generator*')" || exit 1
+
+add_excl="$(awk '
+ /^.\\" lint-ok:/ {
+ print "-e"
+ $1 = "mandoc:"
+ $2 = FILENAME ":[[:digit:]]+:[[:digit:]]+:"
+ print
+ }' $files)"
+
+# Redirect to file instead of 2>&1ing because mandoc flushes inconsistently(?) which tears lines
+# https://github.com/openzfs/zfs/pull/12129/checks?check_run_id=2701608671#step:5:3
+etmp="$(mktemp)"
+! { mandoc -Tlint $files 2>"$etmp"; cat "$etmp"; rm -f "$etmp"; } |
+ grep -vE -e 'mandoc: outdated mandoc.db' -e 'STYLE: referenced manual not found' $add_excl >&2