coda-api 0.3.0

Coda API client
Documentation
use clap::Parser;
use coda_api::Client;
use serde_json::json;

#[derive(Clone, Debug, Parser)]
pub struct MetadataCli {
    #[arg(long, short, env = "CODA_API_KEY", hide_env_values = true)]
    pub api_key: String,

    #[arg(long, short, env = "CODA_DOC_ID")]
    pub doc_id: String,
}

impl MetadataCli {
    pub async fn run(&self) -> Result<(), Box<dyn std::error::Error>> {
        let client = Client::new_with_key(&self.api_key)?;
        let tables = client.tables(&self.doc_id).await?;
        let output = json!({
            "tables": tables,
        });
        println!("{output}");
        Ok(())
    }
}

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let cli = MetadataCli::parse();
    cli.run().await
}

#[test]
fn verify_cli() {
    use clap::CommandFactory;
    MetadataCli::command().debug_assert();
}