summaryrefslogtreecommitdiffstats
path: root/help-from-md.awk
diff options
context:
space:
mode:
Diffstat (limited to 'help-from-md.awk')
-rwxr-xr-xhelp-from-md.awk40
1 files changed, 40 insertions, 0 deletions
diff --git a/help-from-md.awk b/help-from-md.awk
new file mode 100755
index 0000000..1900797
--- /dev/null
+++ b/help-from-md.awk
@@ -0,0 +1,40 @@
+#!/usr/bin/awk -f
+
+# The caller must pass args: -v hfile=help-NAME.h NAME.NUM.md
+
+BEGIN {
+ heading = "/* DO NOT EDIT THIS FILE! It is auto-generated from the option list in " ARGV[1] "! */"
+ findcomment = hfile
+ 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 > hfile
+ else {
+ print "Failed to find " hfile " section in " ARGV[1]
+ exit 1
+ }
+}