diff options
author | rillig <rillig> | 2006-10-23 14:40:14 +0000 |
---|---|---|
committer | rillig <rillig> | 2006-10-23 14:40:14 +0000 |
commit | eafb8f04f9c6efd5ecd47fdc8344152a0b1b13ff (patch) | |
tree | d66103b62a45cb6cee43310ee182acb6cc507036 | |
parent | 3ae2f65d101af9068524c0260835ea3595dcaa5e (diff) | |
download | pkgsrc-eafb8f04f9c6efd5ecd47fdc8344152a0b1b13ff.tar.gz |
Moved the help system into its own subdirectory. Extracted the AWK
program into its own file, since that way, one can add comments to the
code.
For convenience, keyword search is case insensitive.
-rw-r--r-- | mk/bsd.pkg.help.mk | 90 | ||||
-rw-r--r-- | mk/bsd.pkg.mk | 4 | ||||
-rw-r--r-- | mk/help/help.awk | 73 | ||||
-rw-r--r-- | mk/help/help.mk | 38 |
4 files changed, 113 insertions, 92 deletions
diff --git a/mk/bsd.pkg.help.mk b/mk/bsd.pkg.help.mk deleted file mode 100644 index 5f51305a23f..00000000000 --- a/mk/bsd.pkg.help.mk +++ /dev/null @@ -1,90 +0,0 @@ -# $NetBSD: bsd.pkg.help.mk,v 1.5 2006/10/01 14:52:32 rillig Exp $ -# - -# This is the integrated pkgsrc online help system. To query for the -# meaning of a variable, run "make help TOPIC=VARNAME". All variables from -# certain pkgsrc Makefile fragments that have inline comments are eligible -# for querying. - -.if !defined(_PKGSRC_HELP_MK) -_PKGSRC_HELP_MK= # defined - -_HELP_FILES= # empty -_HELP_FILES+= mk/*.mk -_HELP_FILES+= mk/*/*.mk - -_HELP_AWK= \ - BEGIN { \ - no = 0; yes = 1; \ - hline = "==============="; \ - hline = hline hline hline hline hline; \ - found = no; var = no; comment = no; n = 0; \ - rcsid = ""; \ - last_line_was_rcsid = no; \ - last_line_was_empty = yes; \ - } \ - /./ { \ - if ($$0 ~ /^\\#.*\$$.*\$$$$/) { \ - rcsid = $$0; \ - last_line_was_rcsid = yes; \ - } else { \ - if (!(last_line_was_rcsid && $$0 == "\#")) { \ - lines[n++] = $$0; \ - } \ - last_line_was_rcsid = no; \ - } \ - } \ - ($$1 == VARNAME"?=") || ($$1 == "\#"VARNAME"=") \ - || ($$1 == "\#" && last_line_was_empty && \ - ($$2 == VARNAME || $$2 == VARNAME":")) { \ - var = 1; \ - } \ - /^\#/ { \ - comment = 1; \ - } \ - /^$$/ { \ - if (var && comment) { \ - found = yes; \ - print hline; \ - if (rcsid != "") { print rcsid; print "\#"; } \ - for (i = 0; i < n; i++) { print lines[i]; } \ - } \ - var = no; comment = no; n = 0; \ - } \ - /./ { \ - last_line_was_empty = no; \ - } \ - /^\\#$$/ || /^$$/ { \ - last_line_was_empty = yes; \ - } \ - END { \ - if (found) { \ - print hline; \ - } else { \ - print "No help found for " VARNAME "."; \ - } \ - } - -.if !defined(TOPIC) && defined(VARNAME) -TOPIC= ${VARNAME} -.endif -.if !defined(TOPIC) && defined(topic) -TOPIC= ${topic} -.endif - -.PHONY: help -help: -.if !defined(TOPIC) - @${PRINTF} "usage: %s help topic=<topic>\\n" ${MAKE:Q} - @${PRINTF} "\\n" - @${PRINTF} "\\t<topic> may be a variable name or a make target,\\n" - @${PRINTF} "\\tfor example CONFIGURE_DIRS or patch.\\n" - @${PRINTF} "\\n" -.else - ${_PKG_SILENT}${_PKG_DEBUG} set -e; \ - cd ${PKGSRCDIR}; \ - { for i in ${_HELP_FILES}; do ${CAT} "$$i"; ${ECHO} ""; done; } \ - | ${AWK} -v VARNAME=${TOPIC} '${_HELP_AWK}' -.endif - -.endif diff --git a/mk/bsd.pkg.mk b/mk/bsd.pkg.mk index 790781698d5..5e0beb34eb6 100644 --- a/mk/bsd.pkg.mk +++ b/mk/bsd.pkg.mk @@ -1,4 +1,4 @@ -# $NetBSD: bsd.pkg.mk,v 1.1891 2006/10/22 07:20:06 rillig Exp $ +# $NetBSD: bsd.pkg.mk,v 1.1892 2006/10/23 14:40:14 rillig Exp $ # # This file is in the public domain. # @@ -946,5 +946,5 @@ changes-entry: .include "${PKGSRCDIR}/mk/bsd.pkg.debug.mk" .endif .if make(help) -.include "${PKGSRCDIR}/mk/bsd.pkg.help.mk" +.include "${PKGSRCDIR}/mk/help/help.mk" .endif diff --git a/mk/help/help.awk b/mk/help/help.awk new file mode 100644 index 00000000000..c319ea7599a --- /dev/null +++ b/mk/help/help.awk @@ -0,0 +1,73 @@ +# $NetBSD: help.awk,v 1.1 2006/10/23 14:40:15 rillig Exp $ +# + +BEGIN { + no = 0; yes = 1; + hline = "==============="; + hline = hline hline hline hline hline; + found = no; var = no; comment = no; n = 0; + rcsid = ""; + last_line_was_rcsid = no; + last_line_was_empty = yes; + topic = ENVIRON["TOPIC"]; + uctopic = toupper(topic); +} + +/.*/ { + if ($0 ~ /^#.*\$.*\$$/) { + rcsid = $0; + last_line_was_rcsid = yes; + } else { + if (last_line_was_rcsid && $0 == "#") { + # Skip this line + } else if ($0 == "") { + # Skip completely empty lines, too. + } else { + lines[n++] = $0; + } + last_line_was_rcsid = no; + } +} + +/./ { + # When looking for "configure", catch lines that contain + # "configure" and "CONFIGURE", but not "Configure". + w1 = ($1 == tolower($1)) ? toupper($1) : $1; + w2 = ($2 == tolower($2)) ? toupper($2) : $2; + + if ((w1 == uctopic"?=") || + (w1 == "#"uctopic"=") || + (w1 == "#" && last_line_was_empty && + (w2 == uctopic || w2 == uctopic":"))) { + var = 1; + } +} + +/^#/ { + comment = 1; +} + +/^$/ { + if (var && comment) { + found = yes; + print hline; + if (rcsid != "") { print rcsid; print "#"; } + for (i = 0; i < n; i++) { print lines[i]; } + } + var = no; comment = no; n = 0; +} + +/./ { + last_line_was_empty = no; +} +/^#$/ || /^$/ { + last_line_was_empty = yes; +} + +END { + if (found) { + print hline; + } else { + print "No help found for "topic"."; + } +} diff --git a/mk/help/help.mk b/mk/help/help.mk new file mode 100644 index 00000000000..2c05935f47e --- /dev/null +++ b/mk/help/help.mk @@ -0,0 +1,38 @@ +# $NetBSD: help.mk,v 1.1 2006/10/23 14:40:15 rillig Exp $ +# + +# This is the integrated pkgsrc online help system. To query for the +# meaning of a variable, run "make help TOPIC=VARNAME". All variables from +# certain pkgsrc Makefile fragments that have inline comments are eligible +# for querying. + +.if !defined(_PKGSRC_HELP_MK) +_PKGSRC_HELP_MK= # defined + +_HELP_FILES= mk/*.mk mk/*/*.mk + +.if defined(VARNAME) +TOPIC?= ${VARNAME} +.endif +.if defined(topic) +TOPIC?= ${topic} +.endif + +.PHONY: help +help: +.if !defined(TOPIC) + @${PRINTF} "usage: %s help topic=<topic>\\n" ${MAKE:Q} + @${PRINTF} "\\n" + @${PRINTF} "\\t<topic> may be a variable name or a make target,\\n" + @${PRINTF} "\\tfor example CONFIGURE_DIRS or patch. For convenience,\\n" + @${PRINTF} "\\tyou don't need to use uppercase letters when typing\\n" + @${PRINTF} "\\tvariable names.\\n" + @${PRINTF} "\\n" +.else + ${_PKG_SILENT}${_PKG_DEBUG} set -e; \ + cd ${PKGSRCDIR}; \ + { for i in ${_HELP_FILES}; do ${CAT} "$$i"; ${ECHO} ""; done; } \ + | env TOPIC=${TOPIC:Q} ${AWK} -f ${PKGSRCDIR}/mk/help/help.awk +.endif + +.endif |