Command-line arguments

Steven Schveighoffer schveiguy at yahoo.com
Fri Jul 4 06:19:08 PDT 2008


"superdan" <super at dan.org> wrote in message 
news:g4k9tr$34r$1 at digitalmars.com...
> Bill Baxter Wrote:
>
>> Jarrett Billingsley wrote:
>> > "Matt" <no-one at none.nowhere.com> wrote in message
>> > news:g4jqum$269v$1 at digitalmars.com...
>> >> Is there an established library in D for handling command-line 
>> >> arguments?
>> >>
>> >> In particular:
>> >> - handling differences between Windows and UNIX shells (i.e. wildcard
>> >> expansion)
>> >> - handling equivalent options such as "-n 10" === --count=10
>> >> - handling combination of multiple flags, e.g. "-lcf" == "-l -f -c"
>> >>
>> >> Thanks
>> >>
>> >> Matt
>> >
>> > I don't believe there is an argument parser in either Phobos 1 or 
>> > Phobos 2.
>> > However, there is one in Tango.
>> >
>> >
>>
>> doost has one that works with Phobos. (http://dsource.org/projects/doost)
>>
>> D2/Phobos2 has std.getopt.
>>
>> There's a port std.getopt to D1 in the std2 project:
>> http://www.dsource.org/projects/std2
>>
>> There's a simple port of BSD's getopt in OpenMesh/D:
>> http://www.dsource.org/projects/openmeshd/browser/trunk/OpenMeshD/OpenMesh/Tools/Utils/getopt.d
>>
>> --bb
>
> there's one in tango too but it takes 20 lines to do anything, as most 
> others do. create a freakin' "command line object". give me a lunch break. 
> std.getopt in phobos is best in the world for my money. and across all 
> languages for that matter. could never imagine do so much shit in one 
> call.

There is a new one in Tango as of the latest release called Arguments.  It's 
very simple to use:

auto args = new Arguments(argv[1..$]);

if(args.contains("c")) {} // test for -c
auto filename = args["f"]; // get parameter for -f filename

Of course, you can also configure it to be more strict, or to change every 
detail, down to the switch character (instead of '-'), but it is easy to use 
to get something up and running quickly.

http://www.dsource.org/projects/tango/docs/current/tango.util.Arguments.html

-Steve 





More information about the Digitalmars-d mailing list