#![allow(dead_code)]
use std::{net::IpAddr, path::PathBuf};
use confique::Config;
use clap::Parser;
#[derive(Debug, Config)]
#[config(layer_attr(derive(clap::Args)))] struct Conf {
#[config(default = 8080)]
#[config(layer_attr(arg(short, long)))] port: u16,
#[config(default = "127.0.0.1")]
#[config(layer_attr(arg(long)))] bind: IpAddr,
}
#[derive(Parser)]
struct Cli {
#[arg(long, default_value = "examples/files/simple.toml")]
config_file: PathBuf,
#[command(flatten)] cli_config: <Conf as Config>::Layer,
}
fn main() {
let cli = Cli::parse();
let r = Conf::builder()
.preloaded(cli.cli_config) .file(cli.config_file)
.load();
match r {
Ok(conf) => println!("{:#?}", conf),
Err(e) => println!("{e:#}"),
}
}