summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/commands/download.rs19
-rw-r--r--src/input.rs4
2 files changed, 16 insertions, 7 deletions
diff --git a/src/commands/download.rs b/src/commands/download.rs
index 993294b..db0fc93 100644
--- a/src/commands/download.rs
+++ b/src/commands/download.rs
@@ -4,22 +4,31 @@ use reqwest::Client;
4 4
5use futures_util::StreamExt; 5use futures_util::StreamExt;
6 6
7use crate::{get_current_list, config::Cfg, db::userlist_get_all_downloads}; 7use crate::{List, get_current_list, config::Cfg, db::userlist_get_all_downloads, input::Input};
8 8
9pub async fn download(config: Cfg) -> Result<(), Box<dyn std::error::Error>> { 9pub async fn download(config: Cfg, input: Input) -> Result<(), Box<dyn std::error::Error>> {
10 let list = get_current_list(config.clone())?; 10 let list = get_current_list(config.clone())?;
11 11
12 let links = userlist_get_all_downloads(config.clone(), list.id)?; 12 let links = userlist_get_all_downloads(config.clone(), list.clone().id)?;
13 13
14 download_links(config, links).await?; 14 download_links(config, input, list, links).await?;
15 15
16 Ok(()) 16 Ok(())
17} 17}
18 18
19async fn download_links(config: Cfg, links: Vec<String>) -> Result<String, Box<dyn std::error::Error>> { 19async fn download_links(config: Cfg, input: Input, current_list: List, links: Vec<String>) -> Result<String, Box<dyn std::error::Error>> {
20 20
21 let dl_path = String::from(&config.downloads); 21 let dl_path = String::from(&config.downloads);
22 22
23 if input.clean {
24 let dl_path = &current_list.download_folder;
25 println!("Cleaning {}", dl_path);
26 for entry in std::fs::read_dir(dl_path)? {
27 let entry = entry?;
28 std::fs::remove_file(entry.path())?;
29 }
30 }
31
23 for link in links { 32 for link in links {
24 let filename = link.split('/').last().unwrap(); 33 let filename = link.split('/').last().unwrap();
25 let dl_path_file = format!("{}/{}", config.downloads, filename); 34 let dl_path_file = format!("{}/{}", config.downloads, filename);
diff --git a/src/input.rs b/src/input.rs
index 109fa0c..19aa2c2 100644
--- a/src/input.rs
+++ b/src/input.rs
@@ -122,7 +122,7 @@ pub async fn get_input(config: Cfg) -> Result<(), Box<dyn std::error::Error>> {
122 setup(config).await 122 setup(config).await
123 }, 123 },
124 Cmd::Download => { 124 Cmd::Download => {
125 download(config).await 125 download(config, input).await
126 } 126 }
127 } 127 }
128} 128}
@@ -130,6 +130,6 @@ pub async fn get_input(config: Cfg) -> Result<(), Box<dyn std::error::Error>> {
130#[test] 130#[test]
131fn input_from() { 131fn input_from() {
132 let string = "lis add test 1.19.2 fabric"; 132 let string = "lis add test 1.19.2 fabric";
133 let input = Input{ command: Cmd::List, subcommand: Some(Subcmd::Add), args: Some(vec![String::from("test"), String::from("1.19.2"), String::from("fabric")]), force_download: false, direct_download: false, all_lists: false }; 133 let input = Input{ command: Cmd::List, subcommand: Some(Subcmd::Add), args: Some(vec![String::from("test"), String::from("1.19.2"), String::from("fabric")]), force_download: false, direct_download: false, all_lists: false, clean: false, delete_old: false };
134 assert_eq!(Input::from(string).unwrap(), input); 134 assert_eq!(Input::from(string).unwrap(), input);
135} 135}