[Issue 16539] std.getopt should invoke callbacks in the order given on the command line

via Digitalmars-d-bugs digitalmars-d-bugs at puremagic.com
Sat Oct 15 11:31:00 PDT 2016


https://issues.dlang.org/show_bug.cgi?id=16539

--- Comment #1 from Jon Degenhardt <jrdemail2000-dlang at yahoo.com> ---
A similar example, but using an array shared by multiple command line options.
The arrays values are populated in the order specified lexically in the code.
It would be better if they were populated in the order specified at run-time on
the command line.

===== fillorder.d =====

void main(string [] args)
{
    import std.getopt;
    import std.stdio;

    string[] cmdvals;
    try {
        auto r = getopt(
            args,
            "b|bb", "VAL   Append VAL to cmdvals", &cmdvals,
            "a|aa", "VAL   Append VAL to cmdvals", &cmdvals,
            "c|cc", "VAL   Append VAL to cmdvals", &cmdvals,
            );

        if (r.helpWanted) {
            defaultGetoptPrinter(
                "std.getopt array fill order test. Use options multiple times
in different orders.",
                r.options);
            return;
        }
    } catch (Exception exc) {
        stderr.writeln("Error processing command line arguments: ", exc.msg);
        return;
    }

    writeln("cmdvals array: ", cmdvals);
}

==========================

$ dmd fillorder.d
$ ./fillorder -a 1 -b 2 -c 3 -a 4 -b 5 -c 6
cmdvals array: ["2", "5", "1", "4", "3", "6"]

--


More information about the Digitalmars-d-bugs mailing list