From 4e79ab051917fece21fcec0bd31cc2942462fda0 Mon Sep 17 00:00:00 2001 From: Melody Horn Date: Sat, 27 Mar 2021 09:02:59 -0600 Subject: rough draft --- src/main.rs | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 src/main.rs (limited to 'src/main.rs') diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..da1ae1f --- /dev/null +++ b/src/main.rs @@ -0,0 +1,39 @@ +use std::mem; +use std::path::PathBuf; + +use anyhow::Error; +use hyper::Uri; +use structopt::StructOpt; + +mod download; +use download::download; + +#[derive(StructOpt, Debug)] +struct Args { + /// Specify output filename (will cause an error if multiple URLs are given) + #[structopt(short = "O", long)] + output_document: Option, + + /// The URLs to download + urls: Vec, +} + +#[tokio::main] +async fn main() -> Result<(), Error> { + let (args, urls) = { + let mut args: Args = Args::from_args(); + let urls = mem::take(&mut args.urls); + (args, urls) + }; + if urls.len() != 1 && args.output_document.is_some() { + panic!("can't use the same output file for multiple URLs!") + } + + let download_handles = urls + .into_iter() + .map(|url| download(url, &args)); + let downloads = futures::future::join_all(download_handles); + let _downloads = downloads.await; + + Ok(()) +} -- cgit v1.2.3