aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMelody Horn <melody@boringcactus.com>2021-03-27 10:11:20 -0600
committerMelody Horn <melody@boringcactus.com>2021-03-27 10:11:20 -0600
commite0f4483ff90e85b841a3cd4748811fcf3738d495 (patch)
tree92ab4c2ef8e1274dc06f19ffa5558ee8eeeb86bc
parentb5cb3fe9bafc4448b14335c9e0b9d90f1f7c78cb (diff)
downloadwebget-e0f4483ff90e85b841a3cd4748811fcf3738d495.tar.gz
webget-e0f4483ff90e85b841a3cd4748811fcf3738d495.zip
allow user to specify output directory
-rw-r--r--src/download.rs4
-rw-r--r--src/main.rs4
2 files changed, 8 insertions, 0 deletions
diff --git a/src/download.rs b/src/download.rs
index 72cdaf3..82bb302 100644
--- a/src/download.rs
+++ b/src/download.rs
@@ -14,6 +14,8 @@ use super::Args;
type HttpsClient = Client<HttpsConnector<HttpConnector>>;
pub(crate) async fn download(url: Uri, args: &Args) -> Result<(), Error> {
+ let output_file_dir = &args.directory_prefix;
+
let output_file_path = if let Some(output) = &args.output_document {
Some(output.clone())
} else {
@@ -49,6 +51,8 @@ pub(crate) async fn download(url: Uri, args: &Args) -> Result<(), Error> {
PathBuf::from(format!("index{}", extension))
};
+ let output_file_path = output_file_dir.join(output_file_path);
+
let mut output_file = fs::File::create(output_file_path).await?;
while let Some(data) = response.body_mut().data().await {
diff --git a/src/main.rs b/src/main.rs
index 28de762..a622afd 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -20,6 +20,10 @@ struct Args {
#[structopt(short = "O", long)]
output_document: Option<PathBuf>,
+ /// Set output directory
+ #[structopt(short = "P", long, default_value = ".")]
+ directory_prefix: PathBuf,
+
/// The URLs to download
urls: Vec<Uri>,
}