scryfall 0.25.0

A wrapper around the scryfall magic the gathering api
Documentation
use std::process::ExitCode;

async fn run() -> Result<(), Box<dyn std::error::Error>> {
    let mut argv = std::env::args().skip(1);
    let card = match argv.next().as_deref() {
        Some("-i") => {
            scryfall::Card::scryfall_id(
                argv.next()
                    .expect("missing scryfall_id argument")
                    .parse()
                    .expect("invalid uuid"),
            )
            .await?
        },
        Some("-n") => {
            scryfall::Card::named(&argv.next().expect("missing scryfall_id argument")).await?
        },
        Some(opt) => return Err(format!("invalid option {opt}").into()),
        None => scryfall::Card::random().await?,
    };

    println!("{card:#?}");
    Ok(())
}

#[tokio::main]
async fn main() -> ExitCode {
    if let Err(e) = run().await {
        eprintln!("{e:#?}");
        ExitCode::FAILURE
    } else {
        ExitCode::SUCCESS
    }
}