Skip to content

marioortizmanero/structconf

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

StructConf

Combine argument parsing with a config file at compile time.

Build Status docs.rs version


StructConf is a small derive macro that allows you to combine argument parsing from clap and config file parsing from rust-ini at compile time. It's inspired by the argument parser structopt.

StructConf aims to be relatively small and simple. Here are its current selling points:

  • Options available in the config file, argument parser, both, or none.
  • Configurable option names.
  • Custom types supported.
  • Optional fields with Option.
  • Custom default expressions.
  • Insightful error messages.
  • Thoroughly tested.

Small example:

use structconf::{clap, StructConf};

#[derive(Debug, StructConf)]
struct ServerConfig {
    #[conf(help = "The public key")]
    pub public_key: String,
    #[conf(no_file, long = "your-secret", help = "Your secret API key")]
    pub secret_key: String,
    #[conf(default = "100", help = "timeout in seconds")]
    pub timeout: i32,
}

pub fn main() {
    let app = clap::App::new("demo");
    let conf = ServerConfig::parse(app, "config.ini");
    println!("Parsed config: {:#?}", conf);
}

For more details on how to use Structconf, read the docs and check out the examples.

About

A procedural macro to combine multiple configuration methods at compile time

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages