💾 Archived View for ser1.net › post › claptrap.gmi captured on 2023-05-24 at 17:45:56. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2023-01-29)
-=-=-=-=-=-=-
claptrap opts lib: very small, much features, getoptish
Every few months, when I start a new CLI, I spend a good amount of time looking around for a flags library. For trivial programs, the stdlib `flag` library is OK, but it breaks `getopt` arguments style, the undisputed most popular arguments standard for POSIXy OSes, in the world. And there are a wealth of alternative flags libraries available, some quite good, but I am inevitably unsatisfied with them for usually one of three reasons:
Over time, I'd built up some tooling to evaluate lib tools; I've posted that, and the analysis, here, and I focused this time on clapper, which seemed to fit the bill. There were a couple of small features I wanted, and I sent in a couple of patches, but after one particularly engaging hacking session I ended up with a drastic rewrite that maintained and expanded the feature set while preserving the small size and general `getopts` compatability. At this point, it was a different library, so I rebranded it and Claptrap was born.
Claptrap is a small but powerful Go package to parse command-line arguments
And it's 455 lines of code, and **0** dependencies.