use std::string::String;
use anyhow::Result;
use clap::Args;
use pimalaya_cli::printer::Printer;
use pimalaya_stream::tls::Tls;
use url::Url;
use crate::{pacc::client::DiscoveryPaccClientStd, shared::dns::DNS_SERVER};
#[derive(Debug, Args)]
pub struct PaccCommand {
pub domain: String,
#[arg(long, default_value = DNS_SERVER)]
pub dns_server: String,
}
impl PaccCommand {
pub fn execute(self, printer: &mut impl Printer, tls: &Tls) -> Result<()> {
let resolver = Url::parse(&format!("tcp://{}", self.dns_server))?;
let mut client = DiscoveryPaccClientStd::new(resolver).with_tls(tls.clone());
let config = client.discover(&self.domain)?;
printer.out(config)
}
}