help-gengetopt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [help-gengetopt] Feature requests: dependencies between option value


From: Niels Lohmann
Subject: Re: [help-gengetopt] Feature requests: dependencies between option values; description of option values
Date: Thu, 6 Mar 2008 22:42:10 +0100

Hi Lorenzo,


see the other following comments (I assume you're already using the most recent version 2.22, right?)

I am using the patch you sent me: 2.22.1 (which perfectly solved the bug I filed).

GNU BPEL2oWFN can be run in a whole different modes. I use one option
"--mode" to chose one of this modes, e.g. "--mode=net". Additionally, there
are a lot of parameters, currently invoked via "--parameter", e.g.
"--parameter=reduce".

gengetopt now supports mode options (http://www.gnu.org/software/gengetopt/gengetopt.html#Mode-options ) but I don't think this would solve your problem.

Not really: as far as I understand, I can only describe dependencies between options, but not their values.

I'll try to see what I can do for your request.

Now I miss two features in gengetopt:
1. I would like to make certain parameters dependend on the mode chosen. For example, parameter "reduce" should only be valid together with mode "net". As far as I understand, I currently can only express dependence between
whole options, but not between their chosen values.

see above

2. I would like to add descriptions not only to the option itself, but also to the valid values. I know I could do this with "text" insertions, I like the way gengetopt does all the wrapping and layout of the help output.

with text insertions could you achieve your goal? or am I missing something?

Of course, I could. But then I would have to take care about wrapping and indenting (see example below)...

otherwise what syntax (and what help output) would you suggest?



Alright, here is need:

Assume two parameters "type" and "option" with several possible values.

1. Only some combinations should be valid, e.g. option="reduce" should only work for type="IG" or type="OG". 2. I want to skip the lengthy list of all possible values in the standard help. 3. I want a detailed description of each possible value in the detailed help.

Example for --help:

----------------------------------------------------------------------
  -t, --type=TYPE      Selects the type of the data structure to
                         calculate. (mandatory)
  -o, --option=OPTION  Selects additional options for the calculation.
----------------------------------------------------------------------

Example for --detailed-help

----------------------------------------------------------------------
  -t, --type=TYPE      Selects the type of the data structure to
                         calculate. (mandatory)

      TYPE can be one of the following values:
        `OG'  compute operating guideline
        `IG'  compute interaction graph
        `PV'  calculate the public view of a given OG (the result
                is an automaton in OG file format)

  -o, --option=OPTION  Selects additional options for the calculation.

      OPTION can be one of the following values:
        `reduce'             use node reduction which stores less
                               states per IG/OG node (reduces memory,
                               but increases time)
        `multipledeadlocks'  create multiple deadlocks of public view
----------------------------------------------------------------------

Syntax proposal for a cmdline.ggo:

----------------------------------------------------------------------
option "type" t
  "Selects the type of the data structure to calculate."
  details="TYPE can be one of the following values:"
  string values="OG", "IG", "PV" enum
valuedetails="compute operating guideline", "compute interaction graph", "calculate the public view of a given OG (the result is an automaton in OG file format)"
  typestr="TYPE"
  required
  hide-possible-values

option "option" o
  "Selects additional options for the calculation."
  details="OPTION can be one of the following values:"
  string values="reduce", "multipledeadlocks" enum
valuedetails="use node reduction (IG or OG) which stores less states per IG/OG node (reduces memory, but increases time)", "create multiple deadlocks of public view"
  valuedependon="reduce" "type" "OG"
  valuedependon="reduce" "type" "IG"
  valuedependon="multipledeadlocks" "type" "PV"
  typestr="OPTION"
  optional
  hide-possible-values
----------------------------------------------------------------------

It's just a proposal, but I don't think I'm the only one in the world who would like to have stuff like this generated instead of coding it myself.

- "valuedetails" would be a comma-separated list of strings, each documenting the value with the same index. There, it would be extremely nice of gengetopt could take care of wrapping and indentation.

- "hide-possible-values" would do what is says: hides the listing of the possible values. I have another project where an option accepts values from 1 to 21 -- this does not look too nice when each value is listed... (by the way: Why are all values listed with "" (e.g. "5"), and why are default values listed with `' (e.g. `five')?)

- "valuedependon" would express dependencies between values of the given option and values of another option. It's not a nice syntax, and probably misleading because the repeated mentioning of "reduce" in the example above could also be understood as the requirement to have "type" set to "OG" _and_ "IG". An alternative could be a list of constraints that should hold, e.g.

----------------------------------------------------------------------
"option"="reduce" DEPENDS_ON ("type"="IG" OR "type"="OG")
"option"="multipledeadlocks" DEPENDS_ON ("type"="PV")
----------------------------------------------------------------------

Anyway, if there are things left unclear, I am happy to render my example more precisely.

Thanks for the quick responses,
cheers,
Niels.

Attachment: smime.p7s
Description: S/MIME cryptographic signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]