std.getopt

Jens Mueller jens.k.mueller at gmx.de
Sun Jul 17 02:06:48 PDT 2011


Andrei Alexandrescu wrote:
> On 7/16/11 8:58 AM, Jens Mueller wrote:
> >Trass3r wrote:
> >>Why doesn't std.getopt support standard unix style like 'make -j 4'?
> >>
> >>"uint timeout;
> >>getopt(args, "timeout|t",&timeout);
> >>To set timeout to 5, use either of the following: --timeout=5,
> >>--timeout 5, --t=5, --t 5, or -t5. Forms such as -t 5 and -timeout=5
> >>will be not accepted."
> >>
> >>Also it doesn't make any sense to me that --t=5 and --t 5 is allowed
> >>in this case.
> >>I expected the short alias only to be used with a single dash.
> >
> >I agree. Not supporting -t 5 is no good. std.getopt took its inspiration
> >from Perl's Getopt::Long (http://perldoc.perl.org/Getopt/Long.html)
> >which supports it as well.
> >
> >I'm unsure about --t=5 and --t 5. I don't like them but I don't have to
> >use them. But without them the rules would be simpler but removing them
> >may break code. Adding -t 5 is safe I think.
> >And maybe we enhance the documentation a bit such that more common
> >choices are given first and less known but still supported later.
> >
> >If Andrei agrees maybe you or I can create a pull request for -t 5 and
> >enhancing the documentation regarding -- for short options.
> >
> >BTW
> >-timeout=5 is accepted but it shouldn't. I just wrote unittests for all
> >combinations.
> >
> >Jens
> 
> Yes please. So, this stuff should work if we have t|timeout bound to
> an integral:
> 
> -t5, -t 5, --timeout 5, --timeout=5
> 
> This stuff should not:
> 
> -t=5, -timeout 5, -timeout=5
> 
> Right?

--timeout 5 and --timeout=5 work as expected.
--timeout5 fails as expected.

-t5 works as expected.
But -t 5 fails (I will try to fix).

And you don't want -t=5, -timeout 5, and -timeout=5 to work?
Currently they all pass as unexpected. Should I make them fail?
-timeout5 fails as expected.

What about
--t 5 (works currently)
--t=5 (works currently)
--t5 (fails currently)

These are all 12 combinations of "--" or "-" and "t" or "timeout" and
"=5", " 5", or "5".

Jens


More information about the Digitalmars-d mailing list