From: Wayne Davison Date: Tue, 16 Jun 2020 01:14:08 +0000 (-0700) Subject: Turn help-from-md into an awk script. X-Git-Tag: v3.2.0pre3~22 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5496eda5d18afb67fdae4e482a97516cab1e0267;p=thirdparty%2Frsync.git Turn help-from-md into an awk script. --- diff --git a/Makefile.in b/Makefile.in index a0681c89..5e5038d7 100644 --- a/Makefile.in +++ b/Makefile.in @@ -104,7 +104,7 @@ options.o: latest-year.h help-rsync.h help-rsyncd.h flist.o: rounding.h help-rsync.h help-rsyncd.h: rsync.1.md - ./help-from-md "$(srcdir)/$<" $@ + awk -f $(srcdir)/help-from-md.awk -v helpfile=$@ $(srcdir)/$< rounding.h: rounding.c rsync.h proto.h @for r in 0 1 3; do \ diff --git a/help-from-md b/help-from-md deleted file mode 100755 index a5b61577..00000000 --- a/help-from-md +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/bash - -if [[ "$#" != 2 ]]; then - echo "Usage: $0 MD_FILE HELP_FILE.h" - exit 1 -fi - -mdfile="$1" -helpfile="$2" -newfile="$helpfile.new" -findfile="${helpfile/./\\.}" - -sed '1,/^\[comment\].*'"$findfile"'/d' <"$mdfile" | \ - sed '1,/^```/d' | \ - sed '/^```/,$d' | \ - sed 's/"/\\"/g' | \ - sed 's/^/ rprintf(F,"/' | \ - sed 's/$/\\n");/' >"$newfile" - -if [[ ! -s "$newfile" ]]; then - rm "$newfile" - echo "Discarding empty output for $helpfile file from $mdfile" - exit 1 -fi - -(cat <"$helpfile" -rm "$newfile" diff --git a/help-from-md.awk b/help-from-md.awk new file mode 100755 index 00000000..ca358c89 --- /dev/null +++ b/help-from-md.awk @@ -0,0 +1,40 @@ +#!/usr/bin/awk -f + +# The caller must set -v helpfile=help-NAME.h and pass arg NAME.NUM.md + +BEGIN { + heading = "/* DO NOT EDIT THIS FILE! It is auto-generated from the option list in " ARGV[1] "! */" + findcomment = helpfile + sub("\\.", "\\.", findcomment) + findcomment = "\\[comment\\].*" findcomment + backtick_cnt = 0 + prints = "" +} + +/^```/ { + backtick_cnt++ + next +} + +foundcomment { + if (backtick_cnt > 1) exit + if (backtick_cnt == 1) { + gsub(/"/, "\\\"") + prints = prints "\n rprintf(F,\"" $0 "\\n\");" + } + next +} + +$0 ~ findcomment { + foundcomment = 1 + backtick_cnt = 0 +} + +END { + if (foundcomment && backtick_cnt > 1) + print heading "\n" prints > helpfile + else { + print "Failed to find " helpfile " section in " ARGV[1] + exit 1 + } +}