#cli-config #boilerplate #clap #logging #cli #config #setup

clappconfig

Clap-based app config boilerplate: set up logging, load config, parse args

5 releases (3 breaking)

0.4.0 May 10, 2020
0.3.1 May 7, 2020
0.3.0 May 7, 2020
0.2.0 Apr 24, 2020
0.1.0 Apr 20, 2020

#1041 in Command-line interface

MIT license

12KB
179 lines

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.

Dependencies

~6–15MB
~195K SLoC