use std::sync::Arc;
use clap::Parser;
use ibmcloud_iam::token::TokenManager;
use tracing_subscriber;
use ibmcloud_cos::cos;
#[derive(Parser, Debug)]
#[command(author, version, about, long_about = None)]
struct Args {
endpoint: String,
bucket: String,
key: String,
}
fn main() -> Result<(), Box<dyn std::error::Error>> {
tracing_subscriber::fmt::init();
let args = Args::parse();
eprintln!("Downloading {}/{}", args.bucket, args.key);
let tm = Arc::new(TokenManager::default());
let c = cos::Client::new(tm, &args.endpoint);
let mut r = c.get_object(&args.bucket, &args.key)?;
let mut stdout = std::io::stdout().lock();
std::io::copy(&mut r, &mut stdout)?;
Ok(())
}