I am starting construction on a somewhat complicated internal application whose primary interface will be the command line. In the past, for similar projects, I've just used OptionParser, but I think I need something a little beefier. Specifically, I think I need these features: * colorized output * sensible option parsing * sensible enumeration of options for help output * support for `git`-like subcommands, e.g., `app create`, `app delete`, etc., that can be intuitively and cleanly mapped to methods * ability to be insensitive to option ordering, e.g. `app create --foo quux --bar` should be semantically identical to `app create --bar --foo quux` Does that sort of thing exist? I've noticed there are some apparently more powerful alternatives like Thor, which is more of a full-stack scripting framework, and I'm wondering what else might be useful to take a look at. Any and all suggestions would be much appreciated. Thanks!