Improve and future-proof the `arti` CLI
This switches out arti
's argument-parsing library with clap
, which
is a lot more featureful (and very widely used within the Rust
ecosystem). We also now use a lot of clap
's features to improve the
CLI experience:
- The CLI now expects a subcommand (currently, either "help", or "proxy" for the existing SOCKS proxy behaviour). This should let us add additional non-SOCKS-proxy features to arti in future.
-
clap
supports default values determined at runtime, so the way the default config file is loaded was changed: now, we determine the OS-specific path for said file before invokingclap
, so the help command can show it properly.- The behaviour of
tor_config
was also changed; now, one simply specifies a list of configuration files to load, together with whether they're required. - That function also way overused generics; this has been fixed.
- The behaviour of
- Instead of using the ARTI_LOG environment variable to configure
logging, one now uses the
-l, --log-level
CLI option. (The intent is for this option to be more discoverable by users.) - The
proxy
subcommand allows the user to override the SOCKS port used on the CLI without editing the config file.