CLI is an API, so I decided to treat it as such and created Jargon (for Crystal). Define CLI in JSON Schema, get argument parsing, validation, help text, and shell completions for free. Supports nested options with dot notation, subcommands, config file loading and merging, env vars, XDG base dir compliant, and JSON to stdin.
Honestly if it were not for my extensive Ruby background that I have now been able to carry over to Crystal, I probably would have dived into Guile.
(I have been enjoying Elixir too, but at the end of the day it doesn’t quite sit right with me — just feels a bit clunky. Gleam seems an attractive alternative though. The BEAM rocks, but it is a heavy dependency that doesn’t fit all distribution needs.)
If you were to stop using things because of the political views of the people who are involved in their creation, you would end up having to give up most everything.