use datahugger::resolve;
use futures_util::future::join_all;
use indicatif::MultiProgress;
use reqwest::ClientBuilder;
use tracing_subscriber::FmtSubscriber;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let subscriber = FmtSubscriber::builder()
.with_thread_ids(true)
.with_target(false)
.finish();
tracing::subscriber::set_global_default(subscriber)?;
let repos = [
"https://osf.io/3ua2c/",
];
let user_agent = format!("datahugger-ng-cli/{}", env!("CARGO_PKG_VERSION"));
let client = ClientBuilder::new().user_agent(user_agent).build()?;
let futures = repos.into_iter().map(|repo| {
let client = client.clone();
async move {
let repo = match resolve(repo).await {
Ok(repo) => repo,
Err(err) => {
eprintln!("failed to resolve '{repo}': {err:?}");
std::process::exit(1);
}
};
let mp = MultiProgress::new();
repo.print_meta(&client, mp, 0, None).await
}
});
let results = join_all(futures).await;
for result in results {
if let Err(err) = result {
eprintln!("{err:?}");
}
}
Ok(())
}