use std::{net::IpAddr, time::Duration};
use clap::Args;
use humantime::parse_duration;
use crate::dns::{DEFAULT_RESOLVERS, LookupStrategy, Protocol};
#[derive(Args)]
pub struct DnsCli {
#[clap(env, long, value_delimiter = ',', default_values_t = DEFAULT_RESOLVERS)]
pub dns_servers: Vec<IpAddr>,
#[clap(env, long, default_value = "clear")]
pub dns_protocol: Protocol,
#[clap(env, long, default_value = "2048")]
pub dns_cache_size: u64,
#[clap(env, long, default_value = "5s", value_parser = parse_duration)]
pub dns_timeout: Duration,
#[clap(env, long, default_value = "3")]
pub dns_attempts: usize,
#[clap(env, long, default_value = "cloudflare-dns.com")]
pub dns_tls_name: String,
#[clap(env, long, default_value = "ipv4_and_ipv6")]
pub dns_lookup_strategy: LookupStrategy,
#[clap(env, long)]
pub dns_dnssec_disabled: bool,
}