Mike Wey wrote: > On 07/17/2011 11:06 AM, Jens Mueller wrote: > >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 > > I think you generally want long arguments like "timeout" to start > with "--" and the one character ones like "t" to start with "-".
That's true. It's only that changing it means breaking code. Though I don't believe that there are many scripts out there. But for example dmd uses long options without double dashes. I'm up to change this hoping it won't break too much code. > Also with "--timeout5" the 5 might be seen as part of the flag and > shouldn't be allowed. Very true. It's correct that --timeout5 fails. Jens
