Thread overview
argument parsing into structure
Jun 26, 2019
Jesse Phillips
Jun 26, 2019
JN
Jun 26, 2019
Jesse Phillips
Jun 26, 2019
Basile B.
Jun 26, 2019
SealabJaster
Jun 26, 2019
Jesse Phillips
Jun 27, 2019
Basile B.
June 26, 2019
Sometimes a good API isn't the right answer. I like getopt as it is but I wanted a little different control. So I wrote up an article on my work around.

https://dev.to/jessekphillips/argument-parsing-into-structure-4p4n

I have another technique for sub commands I should write about too.
June 26, 2019
On Wednesday, 26 June 2019 at 05:38:32 UTC, Jesse Phillips wrote:
> Sometimes a good API isn't the right answer. I like getopt as it is but I wanted a little different control. So I wrote up an article on my work around.
>
> https://dev.to/jessekphillips/argument-parsing-into-structure-4p4n
>
> I have another technique for sub commands I should write about too.

http://code.dlang.org/packages/argsd

June 26, 2019
On Wednesday, 26 June 2019 at 09:40:06 UTC, JN wrote:
> On Wednesday, 26 June 2019 at 05:38:32 UTC, Jesse Phillips wrote:
>> Sometimes a good API isn't the right answer. I like getopt as it is but I wanted a little different control. So I wrote up an article on my work around.
>>
>> https://dev.to/jessekphillips/argument-parsing-into-structure-4p4n
>>
>> I have another technique for sub commands I should write about too.
>
> http://code.dlang.org/packages/argsd

http://code.dlang.org/packages/darg
June 26, 2019
On Wednesday, 26 June 2019 at 09:40:06 UTC, JN wrote:
> On Wednesday, 26 June 2019 at 05:38:32 UTC, Jesse Phillips wrote:
>> Sometimes a good API isn't the right answer. I like getopt as it is but I wanted a little different control. So I wrote up an article on my work around.
>>
>> https://dev.to/jessekphillips/argument-parsing-into-structure-4p4n
>>
>> I have another technique for sub commands I should write about too.
>
> http://code.dlang.org/packages/argsd

I think we are several having written alternative getopt() systems.
I made one too last year, it allows to write tools very nicely.
Recent example for a device flasher:

---
module app;

import
    iz.options;

struct Handler
{
private:

public:

    /// Handle the "--help" command.
    @Argument("--help", "prints the command line usage", ArgFlags(ArgFlag.allowShort))
    static void getHelp();

    /// Handle the "--info" command.
    @Argument("--info", "prints the list of connected mods", ArgFlags(ArgFlag.allowShort))
    static void getInfo();
    /// Handle the "--readFlash" command.
    @Argument("--readFlash", "read the firmware from the mod and save it to the specified file")
    static void readFlash(string fname);

    /// Handle the "--writeFlash" command.
    @Argument("--writeFlash", "read the firmware from the specified file and send it to the mod")
    static void saveFlash(string fname);

    /// Handle the "--reset" command.
    @Argument("--reset", "reset to factory state", ArgFlags(ArgFlag.allowShort))
    static void reset();
}

void main(string[] args)
{
    if (!handleArguments!(CanThrow, Handler)(args[1..$]) || args.length == 1)
        writeln(help!Handler);
}
---

https://github.com/Basile-z/iz/blob/master/import/iz/options.d#L379

Though I've detected several little flaws since it was written, but I don't care much  anymore about my own stuff these days...
June 26, 2019
On Wednesday, 26 June 2019 at 14:58:08 UTC, Basile B. wrote:
> I think we are several having written alternative getopt() systems.
> ...

Here's another one to add to the list: https://code.dlang.org/packages/jcli

Similar to you I'm pretty sure there's glaring issues I haven't seen/fixed yet.

Since it'll be *a while* until I get documentation written, features written, and bugs fixed, the points of interests (or detest :) ) over other libraries would be:

* I'm trying to make all the building blocks reusable, so even if the user doesn't like my particular style, they'll still have the tools to easily make their own version.

* Building blocks include: A dodgy pull parser for arguments; A builder class for help text, currently with two built-in content providers (which means the user can also make their own); An ArgBinder helper, which can be used to create user-defined argument binder without any boilerplate outside of simply making the binder; And while there's only a few right now, I'm wanting to add a bunch of utility functions similar to scriptlike.

The ArgBinder is probably the only fully interesting part tbh (more for how it's used, rather than how it's implemented), full documentation is in it's doc comment (binder.d).
June 26, 2019
On Wednesday, 26 June 2019 at 14:58:08 UTC, Basile B. wrote:
> On Wednesday, 26 June 2019 at 09:40:06 UTC, JN wrote:
>> On Wednesday, 26 June 2019 at 05:38:32 UTC, Jesse Phillips wrote:
>>> Sometimes a good API isn't the right answer. I like getopt as it is but I wanted a little different control. So I wrote up an article on my work around.
>>>
>>> https://dev.to/jessekphillips/argument-parsing-into-structure-4p4n
>>>
>>> I have another technique for sub commands I should write about too.
>>
>> http://code.dlang.org/packages/argsd
>
> I think we are several having written alternative getopt() systems.
> I made one too last year, it allows to write tools very nicely.
> Recent example for a device flasher:

The thing is, I didn't write an alternative, mine utilizes getopt which was the point of the article. I could build out new functionality onto a standard API which didn't support it. It isn't as robust as it could be.
June 27, 2019
On Wednesday, 26 June 2019 at 23:35:59 UTC, Jesse Phillips wrote:
> On Wednesday, 26 June 2019 at 14:58:08 UTC, Basile B. wrote:
>> On Wednesday, 26 June 2019 at 09:40:06 UTC, JN wrote:
>>> On Wednesday, 26 June 2019 at 05:38:32 UTC, Jesse Phillips wrote:
>>>> Sometimes a good API isn't the right answer. I like getopt as it is but I wanted a little different control. So I wrote up an article on my work around.
>>>>
>>>> https://dev.to/jessekphillips/argument-parsing-into-structure-4p4n
>>>>
>>>> I have another technique for sub commands I should write about too.
>>>
>>> http://code.dlang.org/packages/argsd
>>
>> I think we are several having written alternative getopt() systems.
>> I made one too last year, it allows to write tools very nicely.
>> Recent example for a device flasher:
>
> The thing is, I didn't write an alternative, mine utilizes getopt which was the point of the article. I could build out new functionality onto a standard API which didn't support it. It isn't as robust as it could be.

Sorry budy, I didn't want to ruin your announce.
Hold on ;)