By all means, do your own thing, but

> and don't let you write your own docstrings

is (and always has been) simply untrue of (at least) 
[cligen](https://github.com/c-blake/cligen).
    
    
    proc foo(myParam=1) = discard
    import cligen; include cligen/mergeCfgEnv
    dispatch foo, usage="the whole usage message"
    
    
    Run

which even takes a config file as a source of flags. Of course, part of its 
point is to automate usage strings to be informative to CLusers at less effort 
to CLauthors.

As for opinionated, you may not like opinions of The Defaults, but almost 
everything is adjustable, sometimes even by CLusers (CLauthors may not even 
know what kind of terminal app will be used, after all!). Package docs could 
always be better, but that is also more to read. This model has worked well for 
just me personally for literally 150 CLI utility programs in Nim without 
cluttering said programs with a lot of CL parsing boilerplate.

It's often easier to learn a lower-level API, especially if that is closer to 
what you are used to. History on this Forum is often unreliable. Another home 
for your example might be a short tutorial for using `std/parseopt` on [the Nim 
wiki](https://github.com/nim-lang/Nim/wiki).

Reply via email to