use argx::{Argv, Defaults, Environment};
#[derive(Debug, argx::Config)]
#[argx(prefix = "ARGX_EXAMPLE")]
struct Config {
#[argx(long, default = 4)]
workers: usize,
#[argx(long, default = String::from("http://localhost:8080"))]
endpoint: String,
#[argx(long, delimited, default = Vec::<String>::new())]
origins: Vec<String>,
}
fn main() -> Result<(), argx::ConfigError> {
let config = match Config::loader()
.layer(Defaults)
.layer(Environment)
.layer(Argv::current())
.resolve()
{
Ok(config) => config,
Err(argx::ConfigError::Arguments(error)) => error.exit(),
Err(error) => return Err(error),
};
println!("workers: {}", config.workers);
println!("endpoint: {}", config.endpoint);
println!("origins: {}", config.origins.join(","));
Ok(())
}