convert texinfo checks to proper awk script, add detection for awk/gawk,
authorng0 <ng0@n0.is>
Sun, 1 Dec 2019 23:19:58 +0000 (23:19 +0000)
committerng0 <ng0@n0.is>
Sun, 1 Dec 2019 23:19:58 +0000 (23:19 +0000)
remove obsolete code.

Makefile.am
configure.ac
contrib/scripts/.gitignore
contrib/scripts/Makefile.am
contrib/scripts/check-texinfo.awk.in [new file with mode: 0755]

index a5b12bad97167f021406ca341b0b3e6178368041..aea6c2f6c8151f31b18f09b2542f61695507eecb 100644 (file)
@@ -73,28 +73,4 @@ check-python:
 # exception to add: ignore license files.
 # exception to add: uref's can go above 79 chars.
 check-texinfo:
-       printf "Running basic texinfo linters\n"
-       printf "...lines containing tabstops?\n" 2>&1 | tee $(top_srcdir)/doc/handbook/texinfo_handbook.log || true
-       printf "...lines containing tabstops?\n" 2>&1 | tee $(top_srcdir)/doc/tutorial/texinfo_tutorial.log || true
-       @cd $(top_srcdir)/doc/handbook ; find . -type f ! -path '*/.*' -name '*.texi' -print0 | xargs -0 awk '/\t/ {print FILENAME":"NR":"$$0}' > $(srcdir)/texinfo_handbook.log || true
-       @cd $(top_srcdir)/doc/tutorial ; find . -type f ! -path '*/.*' -name '*.texi' -print0 | xargs -0 awk '/\t/ {print FILENAME":"NR":"$$0}' > $(srcdir)/texinfo_tutorial.log || true
-       printf "...line length over 79 chars?\n" 2>&1 | tee $(top_srcdir)/doc/handbook/texinfo_handbook.log || true
-       @cd $(top_srcdir)/doc/handbook ; find . -type f ! -path '*/.*' -name '*.texi' -print0 | xargs -0 awk 'length>79 {print FILENAME":"NR":"$$0}' > $(srcdir)/texinfo_handbook.log || true
-       printf "...line length over 79 chars?\n" 2>&1 | tee $(top_srcdir)/doc/tutorial/texinfo_tutorial.log || true
-       @cd $(top_srcdir)/doc/tutorial ; find . -type f ! -path '*/.*' -name '*.texi' -print0 | xargs -0 awk 'length>79 {print FILENAME":"NR":"$$0}' > $(srcdir)/texinfo_tutorial.log || true
-       printf "...lines containing macros incompatible with old makeinfo?\n" 2>&1 | tee -a $(top_srcdir)/doc/handbook/texinfo_handbook.log || true
-       @cd $(top_srcdir)/doc/handbook ; find . -type f ! -path '*/.*' -name '*.texi' -print0 | xargs -0 awk '/@geq\{\}/ {print FILENAME":"NR":"$$0}' >> $(srcdir)/texinfo_handbook.log || true
-       printf "...lines containing macros incompatible with old makeinfo?\n" 2>&1 | tee -a $(top_srcdir)/doc/tutorial/texinfo_tutorial.log || true
-       @cd $(top_srcdir)/doc/tutorial ; find . -type f ! -path '*/.*' -name '*.texi' -print0 | xargs -0 awk '/@geq\{\}/ {print FILENAME":"NR":"$$0}' >> $(srcdir)/texinfo_tutorial.log || true
-       printf "...lines containing macros incompatible with texi2mdoc?\n" 2>&1 | tee -a $(top_srcdir)/doc/handbook/texinfo_handbook.log || true
-       @cd $(top_srcdir)/doc/handbook ; find . -type f ! -path '*/.*' -name '*.texi' -print0 | xargs -0 awk '/@footnote\{/ {print FILENAME":"NR":"$$0}' >> $(srcdir)/texinfo_handbook.log || true
-       printf "...lines containing macros incompatible with texi2mdoc?\n" 2>&1 | tee -a $(top_srcdir)/doc/tutorial/texinfo_tutorial.log || true
-       @cd $(top_srcdir)/doc/tutorial ; find . -type f ! -path '*/.*' -name '*.texi' -print0 | xargs -0 awk '/@footnote\{/ {print FILENAME":"NR":"$$0}' >> $(srcdir)/texinfo_tutorial.log || true
-       printf "...lines telling us what is left TODO or to fix?\n" 2>&1 | tee -a $(top_srcdir)/doc/handbook/texinfo_handbook.log || true
-       @cd $(top_srcdir)/doc/handbook ; find . -type f ! -path '*/.*' -name '*.texi' -print0 | xargs -0 awk '/TODO/ {print FILENAME":"NR":"$$0}' >> $(srcdir)/texinfo_handbook.log || true
-       @cd $(top_srcdir)/doc/handbook ; find . -type f ! -path '*/.*' -name '*.texi' -print0 | xargs -0 awk '/XXX/ {print FILENAME":"NR":"$$0}' >> $(srcdir)/texinfo_handbook.log || true
-       printf "...lines telling us what is left TODO or to fix?\n" 2>&1 | tee -a $(top_srcdir)/doc/tutorial/texinfo_tutorial.log || true
-       @cd $(top_srcdir)/doc/tutorial ; find . -type f ! -path '*/.*' -name '*.texi' -print0 | xargs -0 awk '/TODO/ {print FILENAME":"NR":"$$0}' >> $(srcdir)/texinfo_tutorial.log || true
-       @cd $(top_srcdir)/doc/tutorial ; find . -type f ! -path '*/.*' -name '*.texi' -print0 | xargs -0 awk '/XXX/ {print FILENAME":"NR":"$$0}' >> $(srcdir)/texinfo_tutorial.log || true
-       printf "...lines containing a popular typo\n" 2>&1 | tee -a $(top_srcdir)/lint.log || true
-       @cd $(top_srcdir) ; find . -type f ! -path '*/.*' -name '*' -print0 | xargs -0 awk '/wether/ {print FILENAME":"NR":"$$0}' >> $(srcdir)/lint.log || true
+       @cd $(top_srcdir); find . -type f ! -path '*/.*' -name '*.texi' -print0 | xargs -0 ./contrib/scripts/check-texinfo.awk > $(srcdir)/texinfo_lint.log || true
index ad59c9231deaad9c93fc15a36dcc5bd7c8e29076..e8a450b6138feca46df9762a260d7c12ca5bf6c3 100644 (file)
@@ -251,6 +251,10 @@ AS_IF([test -x "$PERL"],
   [AC_DEFINE_UNQUOTED([HAVE_PERL], [1], [Path to Perl])],
   [AC_DEFINE_UNQUOTED([HAVE_PERL], [0], [Path to Perl])])
 
+# awk
+AC_PATH_PROGS( AWK_BINARY, [awk gawk], ,$PATH:/usr/bin/:/usr/local/bin )
+AC_SUBST([AWK_BINARY])
+
 # should we install gnunet-logread?
 AC_MSG_CHECKING(whether to install gnunet-logread)
 AC_ARG_WITH([gnunet-logread],
index 547c891850b01d96eb07fc8642e76a43e08683f3..3b34b9b69d90b96b5c7fc2a4c0bd74698d9babc8 100644 (file)
@@ -1,2 +1,3 @@
 gnunet-chk.py
 removetrailingwhitespace.py
+check-texinfo.awk
index 367e5c4c9a276280de02193cb62977839e78b283..b76e57db7f72fc5180de41cac68b204eab1d5939 100644 (file)
@@ -9,7 +9,8 @@ noinst_SCRIPTS = \
  removetrailingwhitespace.py \
  gnunet_pyexpect.py \
  gnunet_janitor.py \
- gnunet-chk.py
+ gnunet-chk.py \
+ check-texinfo.awk
 
 bin_SCRIPTS = \
  gnunet-bugreport \
@@ -24,12 +25,13 @@ EXTRA_DIST = \
  $(SCRIPTS) \
  removetrailingwhitespace.py.in \
  pydiffer.py.in \
- gnunet-suidfix
+ gnunet-suidfix \
+ check-texinfo.awk.in
 
 CLEANFILES = \
   $(noinst_SCRIPTS)
 
-do_subst = $(AWK) -v py="$(PYTHON)" '{gsub("@PYTHONEXE@",py); print $$0}'
+do_subst = $(AWK) -v py="$(PYTHON)" -v awkay="$(AWK_BINARY)" '{if (/@AWKEXE@/) { gsub("@AWKEXE@",awkay)}; gsub("@PYTHONEXE@",py); print $$0}'
 
 # Use SUFFIX Extension rules, they are more portable for every
 # implementation of 'make'.
@@ -46,3 +48,7 @@ SUFFIXES = .py.in .py
 .py.in.py:
        $(do_subst) < $< > $@
        chmod +x $@
+
+check-texinfo.awk: check-texinfo.awk.in Makefile
+       $(do_subst) < $(srcdir)/check-texinfo.awk.in > check-texinfo.awk
+       chmod +x check-texinfo.awk
diff --git a/contrib/scripts/check-texinfo.awk.in b/contrib/scripts/check-texinfo.awk.in
new file mode 100755 (executable)
index 0000000..12f71b5
--- /dev/null
@@ -0,0 +1,55 @@
+#!@AWKEXE@ -f
+
+# Dedicated to the Public Domain.
+# SPDX-License-Identifier: 0BSD
+
+BEGIN {
+  printf "Running basic texinfo linters\n" ;
+}
+
+{
+    if(/\t/) {
+      printf "...lines containing tabstops?\n" ;
+      print FILENAME":"NR":"$0 ;
+    }
+}
+
+{
+    if(length>79) {
+      printf "...line length over 79 chars?\n" ;
+      print FILENAME":"NR":"$0 ;
+    }
+}
+
+{
+  if(/@geq\{\}/) {
+    printf "...lines containing macros incompatible with old makeinfo?\n" ;
+    print FILENAME":"NR":"$0 ;
+  }
+}
+
+{
+  if (/@footnote\{/) {
+    printf "...lines containing macros incompatible with texi2mdoc?\n" ;
+    print FILENAME":"NR":"$0 ;
+  }
+}
+
+{
+  if (/TODO/) {
+    printf "...lines telling us what is left TODO?\n" ;
+    print FILENAME":"NR":"$0 ;
+  }
+
+  if (/XXX/) {
+    printf "...lines telling us what is left to fix?\n" ;
+    print FILENAME":"NR":"$0 ;
+  }
+}
+
+{
+  if (/wether/) {
+    printf "...lines containing a popular typo\n" ;
+    print FILENAME":"NR":"$0 ;
+  }
+}