use clap::Subcommand;
#[derive(Subcommand, Debug)]
pub(crate) enum ServerCommands {
List {
#[arg(short, long)]
server_id: Option<String>,
},
}
impl ServerCommands {
pub(crate) fn dispatch(
&self,
client: &pdns_client::Client,
) -> Result<(), Box<dyn std::error::Error>> {
match self {
ServerCommands::List { server_id } => list_servers(client, server_id.as_ref())?,
}
Ok(())
}
}
fn list_servers(
client: &pdns_client::Client,
server_id: Option<&String>,
) -> Result<(), Box<dyn std::error::Error>> {
if let Some(server_id) = server_id {
let server = client.list_server(server_id)?;
println!("{}", tabled::Table::new([server])); } else {
let servers = client.list_servers()?;
println!("{}", tabled::Table::new(&servers));
}
Ok(())
}