boilerplate for rust CLI apps
Ondřej Hruška 09fcbc4d98
fix API to not report own crate version if None given
4 months ago
examples fix API to not report own crate version if None given 4 months ago
src fix API to not report own crate version if None given 4 months ago
.gitignore improvements, add example, readme 5 months ago
Cargo.toml fix API to not report own crate version if None given 4 months ago
LICENSE.txt add license file 5 months ago
README.md fix examples 4 months ago

README.md

clappconfig - CLI app config boilerplate

Clap
  App
     Config
-----------
clappconfig

This crate provides a simple CLI app boilerplate that takes care of the most repetitive init tasks:

  • Load JSON5 config from a custom or default path (or use Default::default())
  • Set up logging, with CLI and config-based overrides
  • Optionally print the loaded or default config
  • Show help / version on demand, courtesy of clap
  • Optional start-up banner print

Supports custom clap arguments as well.

-> The repository is open to improvement PRs.

Logging

  • uses env_logger by default
  • level can be set in the config file
  • log level can be overridden by the --log CLI flag
  • log level can be increased by repeated use of -v or --verbose

Re-exports

The crates re-exports crates used in public API: clap, anyhow, log.

Example

See the examples directory.

The example called "rotn" implements rot13 as a command-line tool.

$ cargo run --example rotn -- -h

Rot-N 0.1.0 by Ondřej Hruška <ondra@ondrovo.com>

USAGE:
    rotn [FLAGS] [OPTIONS] --input <FILE>

FLAGS:
        --default-config    Print the default config JSON for reference (or to be piped to a file)
        --dump-config       Print the loaded config struct
    -h, --help              Prints help information
    -V, --version           Prints version information
    -v, --verbose           Increase logging verbosity (repeat to increase)

OPTIONS:
    -c, --config <FILE>    Sets a custom config file (JSON5)
    -i, --input <FILE>     Input file
        --log <LEVEL>      Set logging verbosity (error,warning,info,debug,trace)
    -n, --shift <N>        Positive or negative shift, default 13

To get rot13 of this README, run cargo run --example rotn -- -iREADME.md.