public inbox for gentoo-dev@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Michał Górny" <mgorny@gentoo.org>
To: gentoo-dev@lists.gentoo.org,kentnl@gentoo.org
Cc: vapier@gentoo.org,tools-portage@gentoo.org,Kent Fredric
	<kentnl@gentoo.org>
Subject: Re: [gentoo-dev] [PATCH] app-portage/eclass-manpages: Add support for @DEFAULT-VALUE
Date: Mon, 01 May 2017 12:14:01 +0200	[thread overview]
Message-ID: <F353CC7C-6249-45C3-B8DA-1945FB68C9D4@gentoo.org> (raw)
In-Reply-To: <20170430213741.21740-1-kentnl@gentoo.org>

Dnia 30 kwietnia 2017 23:37:41 CEST, kentnl@gentoo.org napisał(a):
>From: Kent Fredric <kentnl@gentoo.org>
>
>@DEFAULT-VALUE allows eclasses to document the default values they
>will inject when eclass-to-manpage can't extract it.
>
>When eclass-to-manpage *can* extract it, it adds a warning when
>the extracted value is different from that declared, (but the
>declared value still takes precedence)
>
>Note: there is a pre-exisitng poorly documented hack where
>
>  # FOO=VALUE
>
>In a comment serves as a fallback for literal value parsing, which
>can supplement DEFAULT-VALUE in a less clear way.
>
>But due to the nature of this syntax, its not trivial to identify
>which eclasses are, and aren't using it as variables are routinely
>commented without intending them to be used as documentation.
>
>Some such commented assignments lurk in @CODE examples, which are
>surely not intended to be extracted as their values
>
>Subsequently, if present, @DEFAULT-VALUE will also trump any such
>commented assignments
>---
>.../eclass-manpages/files/eclass-to-manpage.awk     | 21
>+++++++++++++++++----
> 1 file changed, 17 insertions(+), 4 deletions(-)
>
>diff --git a/app-portage/eclass-manpages/files/eclass-to-manpage.awk
>b/app-portage/eclass-manpages/files/eclass-to-manpage.awk
>index 0d41f96327..d6ed59efd9 100644
>--- a/app-portage/eclass-manpages/files/eclass-to-manpage.awk
>+++ b/app-portage/eclass-manpages/files/eclass-to-manpage.awk
>@@ -40,6 +40,7 @@
> # [@DEFAULT_UNSET]
> # [@INTERNAL]
> # [@REQUIRED]
>+# @DEFAULT-VALUE: <initial value>

I think you meant to make it [optional].

> # @DESCRIPTION:
> # <required; blurb about this variable>
> # foo="<default value>"
>@@ -49,6 +50,7 @@
> # [@DEFAULT_UNSET]
> # [@INTERNAL]
> # [@REQUIRED]
>+# @DEFAULT-VALUE: <initial value>
> # @DESCRIPTION:
> # <required; blurb about this variable>
> # foo="<default value>"
>@@ -283,6 +285,7 @@ function _handle_variable() {
> 	default_unset = 0
> 	internal = 0
> 	required = 0
>+	default_value = ""
> 
> 	# make sure people haven't specified this before (copy & paste error)
> 	if (all_vars[var_name])
>@@ -299,6 +302,10 @@ function _handle_variable() {
> 			internal = 1
> 		else if ($2 == "@REQUIRED")
> 			required = 1
>+		else if ($2 == "@DEFAULT-VALUE:") {
>+			sub(/^# @[A-Z_]*:[[:space:]]*/,"")

Any reason you can't just eat_line?

>+			default_value = $0
>+		}
> 		else
> 			opts = 0
> 	}
>@@ -315,15 +322,21 @@ function _handle_variable() {
> 		op = "?="
> 		regex = "^[[:space:]]*:[[:space:]]*[$]{" var_name ":?=(.*)}"
> 		val = gensub(regex, "\\1", 1, $0)
>-		if (val == $0) {
>-			if (default_unset + required + internal == 0)
>+	}
>+	if (default_value != "") {
>+		if ( val != $0 && default_value != val )
>+			warn( var_name ": extracted different from DEFAULT-VALUE: "
>default_value " <=> " val )
>+		op  = "="
>+		val = default_value
>+	}
>+	if ( val == $0 ) {
>+		if (default_unset + required + internal == 0)
> 				warn(var_name ": unable to extract default variable content: " $0)
> 			val = ""
>-		} else if (val !~ /^["']/ && val ~ / /) {
>+	} else if (val !~ /^["']/ && val ~ / /) {
> 			if (default_unset == 1)
> 				warn(var_name ": marked as unset, but has value: " val)
> 			val = "\"" val "\""
>-		}
> 	}
> 	if (length(val))
> 		val = " " op " \\fI" val "\\fR"


-- 
Best regards,
Michał Górny (by phone)


  parent reply	other threads:[~2017-05-01 10:14 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-04-30 21:37 [gentoo-dev] [PATCH] app-portage/eclass-manpages: Add support for @DEFAULT-VALUE kentnl
2017-05-01 10:05 ` Ulrich Mueller
2017-05-01 13:35   ` Kent Fredric
2017-05-01 10:14 ` Michał Górny [this message]
2017-05-01 13:38   ` Kent Fredric

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=F353CC7C-6249-45C3-B8DA-1945FB68C9D4@gentoo.org \
    --to=mgorny@gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    --cc=kentnl@gentoo.org \
    --cc=tools-portage@gentoo.org \
    --cc=vapier@gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox