mirror of
https://github.com/RsyncProject/rsync.git
synced 2026-03-10 02:16:35 -04:00
Turn help-from-md into an awk script.
This commit is contained 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 \
|
||||
|
||||
32
help-from-md
32
help-from-md
@@ -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 <<EOT
|
||||
/* DO NOT EDIT THIS FILE! It is auto-generated from the option list in $mdfile! */
|
||||
|
||||
EOT
|
||||
cat "$newfile"
|
||||
) >"$helpfile"
|
||||
rm "$newfile"
|
||||
40
help-from-md.awk
Executable file
40
help-from-md.awk
Executable file
@@ -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
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user