claps 0.2.0

CLIs written in Rust
Documentation
use anyhow::Result;
use clap::Args;

use colored::Colorize;
use tabled::builder::Builder;
use tabled::settings::Style;

use claps::api::cloudflare::Client;

use super::CommonArgs;

#[derive(Debug, Args)]
pub(super) struct Cmd {}

impl Cmd {
    pub async fn run(self, args: CommonArgs) -> Result<()> {
        let name = args.name()?;
        let token = args.token()?;
        let zone = args.zone()?;
        let client = Client::new(token);
        let records = client.list(&zone, &name).await?;
        let mut builder = Builder::new();
        builder.push_record(["Name", "Address"]);
        records.iter().for_each(|record| {
            builder.push_record([
                record.name.bold().green().to_string(),
                record.content.bold().blue().to_string(),
            ]);
        });
        let mut table = builder.build();
        table.with(Style::rounded());
        println!("{}", table);
        Ok(())
    }
}