One of my very, very, very favorite things about Python is argparse. [1]

Very few libraries creates its API so well as to transcend its origins (JodaTime comes to mind).

* Node.js [2]

* Java/JVM [3]

* Go [4]

* Lua [5]

* C++ [6] [7]

It appears there is no Swift port.

That is unfortunate, because besides the basics (optionals, positions, defaults, short and log options, auto generated docs, subcommands, descriptions, repeating options), it lets you do argument groups, mutually exclusive options, customizable help behavior, variable customization, custom parsers/validators, options with multiple arguments. There's even Python support for shell autocomplete library. [7].

(One potential limitation is that it is naturally dynamic, and not typesafe like Swift's new ArgumentParser. IMO that is of relatively small practical importance compared to its other features.)

It's both simple enough to get going, but sophisticated enough that I've never wanted for anything. It's the first thing I look for when writing a CLI.

[1] https://docs.python.org/3/library/argparse.html

[2] http://nodeca.github.io/argparse/

[3] https://argparse4j.github.io/

[4] https://github.com/akamensky/argparse

[5] https://github.com/mpeterv/argparse

[6] https://github.com/jbms/argparse

[7] https://github.com/mmahnic/argumentum

[8] https://pypi.org/project/argcomplete/