use lino_arguments::Parser;
#[derive(Parser, Debug)]
#[command(name = "my-server")]
#[command(about = "A web server with unified configuration")]
#[command(version)]
struct Args {
#[arg(short, long, env = "PORT", default_value = "3000")]
port: u16,
#[arg(short = 'k', long, env = "API_KEY")]
api_key: Option<String>,
#[arg(short, long, env = "VERBOSE")]
verbose: bool,
#[arg(short, long)]
configuration: Option<String>,
}
fn main() {
let args = Args::parse();
if let Some(ref config_path) = args.configuration {
if let Err(e) = lino_arguments::load_lenv_file(config_path) {
eprintln!("Warning: Failed to load config '{}': {}", config_path, e);
}
}
println!("Configuration:");
println!(" Port: {}", args.port);
println!(
" API Key: {}",
if let Some(ref key) = args.api_key {
key.as_str()
} else {
"(not set)"
}
);
println!(" Verbose: {}", args.verbose);
println!("\nServer would start on port {}", args.port);
}