diff options
author | наб <[email protected]> | 2021-05-27 01:31:43 +0200 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2021-06-09 13:05:34 -0700 |
commit | 13c9a41140f11928ad6d483bfb7aacdbafed6491 (patch) | |
tree | 384a7e86dc892873965719117d4f9b40b7bb54e6 /scripts | |
parent | af80160f48ea389bf1678adc0def39d38b4ddd0e (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.am | 3 | ||||
-rwxr-xr-x | scripts/mancheck.sh | 43 |
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 |