diff options
Diffstat (limited to 'scripts/doxy_filter.awk')
-rw-r--r-- | scripts/doxy_filter.awk | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/scripts/doxy_filter.awk b/scripts/doxy_filter.awk new file mode 100644 index 0000000000..5ec0406298 --- /dev/null +++ b/scripts/doxy_filter.awk @@ -0,0 +1,103 @@ +#!/usr/bin/awk + +/BAREBOX_CMD_HELP_START[[:space:]]*\((.*)\)/ { + + this_opt = 0; + my_usage = ""; + my_short = ""; + my_cmd = gensub("BAREBOX_CMD_HELP_START[[:space:]]*\\((.*)\\)", "\\1", "g"); + this_text = 0; + delete(my_text); + delete(my_opts); + next; +} + +/BAREBOX_CMD_HELP_USAGE[[:space:]]*\((.*)\)/ { + + $0 = gensub("<", "\\<", "g"); + $0 = gensub(">", "\\>", "g"); + $0 = gensub("BAREBOX_CMD_HELP_USAGE[[:space:]]*\\((.*)\\)", "\\1", "g"); + $0 = gensub("\\\\n", "", "g"); + my_usage = gensub("\"", "", "g"); + next; + +} + +/BAREBOX_CMD_HELP_SHORT[[:space:]]*\((.*)\)/ { + + $0 = gensub("<", "\\<", "g"); + $0 = gensub(">", "\\>", "g"); + $0 = gensub("BAREBOX_CMD_HELP_SHORT[[:space:]]*\\((.*)\\)", "\\1", "g"); + $0 = gensub("\\\\n", "", "g"); + my_short = gensub("\"", "", "g"); + next; + +} + +/BAREBOX_CMD_HELP_OPT[[:space:]]*\([[:space:]]*(.*)[[:space:]]*,[[:space:]]*(.*)[[:space:]]*\)/ { + + $0 = gensub("<", "\\<", "g"); + $0 = gensub(">", "\\>", "g"); + $0 = gensub("@", "\\\\@", "g"); + $0 = gensub("BAREBOX_CMD_HELP_OPT[[:space:]]*\\([[:space:]]*\"*(.*)\"[[:space:]]*,[[:space:]]*\"(.*)\"[[:space:]]*\\)", \ + "<tr><td><tt> \\1 </tt></td><td>\\ \\ \\ </td><td> \\2 </td></tr>", "g"); + $0 = gensub("\\\\n", "", "g"); + my_opts[this_opt] = gensub("\"", "", "g"); + this_opt ++; + next; +} + +/BAREBOX_CMD_HELP_TEXT[[:space:]]*\((.*)\)/ { + + $0 = gensub("<", "\\<", "g"); + $0 = gensub(">", "\\>", "g"); + $0 = gensub("BAREBOX_CMD_HELP_TEXT[[:space:]]*\\((.*)\\)", "\\1", "g"); + $0 = gensub("\\\\n", "<br>", "g"); + my_text[this_text] = gensub("\"", "", "g"); + this_text ++; + next; +} + +/BAREBOX_CMD_HELP_END/ { + + printf "/**\n"; + printf " * @page " my_cmd "_command " my_cmd "\n"; + printf " *\n"; + printf " * \\par Usage:\n"; + printf " * " my_usage "\n"; + printf " *\n"; + + if (this_opt != 0) { + printf " * \\par Options:\n"; + printf " *\n"; + printf " * <table border=\"0\" cellpadding=\"0\">\n"; + n = asorti(my_opts, my_opts_sorted); + for (i=1; i<=n; i++) { + printf " * " my_opts[my_opts_sorted[i]] "\n"; + } + printf " * </table>\n"; + printf " *\n"; + } + + printf " * " my_short "\n"; + printf " *\n"; + + n = asorti(my_text, my_text_sorted); + if (n > 0) { + for (i=1; i<=n; i++) { + printf " * " my_text[my_text_sorted[i]] "\n"; + } + printf " *\n"; + } + + printf " */\n"; + + next; +} + +/^.*$/ { + + print $0; + +} + |