diff options
Diffstat (limited to 'src/commands/download.rs')
-rw-r--r-- | src/commands/download.rs | 31 |
1 files changed, 26 insertions, 5 deletions
diff --git a/src/commands/download.rs b/src/commands/download.rs index e9a96b5..7aa0156 100644 --- a/src/commands/download.rs +++ b/src/commands/download.rs | |||
@@ -1,6 +1,7 @@ | |||
1 | 1 | ||
2 | use indicatif::MultiProgress; | 2 | use indicatif::{MultiProgress, ProgressStyle, ProgressBar}; |
3 | 3 | ||
4 | use crate::{STYLE_BAR_POS, PROGRESS_CHARS}; | ||
4 | use crate::{config::Cfg, List}; | 5 | use crate::{config::Cfg, List}; |
5 | use crate::{ | 6 | use crate::{ |
6 | db::userlist_get_all_current_versions_with_mods, | 7 | db::userlist_get_all_current_versions_with_mods, |
@@ -14,9 +15,12 @@ use crate::{ | |||
14 | pub async fn download(config: &Cfg, liststack: Vec<List>, clean: bool, delete_old: bool) -> MLE<()> { | 15 | pub async fn download(config: &Cfg, liststack: Vec<List>, clean: bool, delete_old: bool) -> MLE<()> { |
15 | 16 | ||
16 | let mp = MultiProgress::new(); | 17 | let mp = MultiProgress::new(); |
18 | let download_p = mp.add(ProgressBar::new(liststack.len().try_into().unwrap())); | ||
19 | download_p.set_style(ProgressStyle::with_template(STYLE_BAR_POS).unwrap().progress_chars(PROGRESS_CHARS)); | ||
17 | 20 | ||
18 | for current_list in liststack { | 21 | for current_list in liststack { |
19 | println!("Downloading current versions of mods in {}", current_list.id); | 22 | download_p.set_message(format!("Download in {}", current_list.id)); |
23 | |||
20 | let downloaded_versions = get_downloaded_versions(current_list.clone())?; | 24 | let downloaded_versions = get_downloaded_versions(current_list.clone())?; |
21 | let current_version_ids = match userlist_get_all_current_versions_with_mods( | 25 | let current_version_ids = match userlist_get_all_current_versions_with_mods( |
22 | config, | 26 | config, |
@@ -59,24 +63,41 @@ pub async fn download(config: &Cfg, liststack: Vec<List>, clean: bool, delete_ol | |||
59 | config.clone(), | 63 | config.clone(), |
60 | get_raw_versions(&config.apis.modrinth, to_download).await, | 64 | get_raw_versions(&config.apis.modrinth, to_download).await, |
61 | &mp, | 65 | &mp, |
62 | None | 66 | &download_p, |
63 | ) | 67 | ) |
64 | .await?; | 68 | .await?; |
65 | } else { | 69 | } else { |
66 | println!("There are no new versions to download"); | 70 | download_p.println(format!("There are no new versions to download for {}", current_list.id)); |
67 | } | 71 | } |
68 | 72 | ||
69 | if !to_disable.is_empty() { | 73 | if !to_disable.is_empty() { |
74 | let d_p = mp.insert_before(&download_p, ProgressBar::new(to_disable.len().try_into().unwrap())); | ||
75 | d_p.set_style(ProgressStyle::with_template(STYLE_BAR_POS).unwrap().progress_chars(PROGRESS_CHARS)); | ||
70 | for ver in to_disable { | 76 | for ver in to_disable { |
71 | if delete_old { | 77 | if delete_old { |
72 | // println!("Deleting version {} for mod {}", ver.1, ver.0); | 78 | d_p.set_message(format!("Delete version {}", ver.1)); |
79 | d_p.inc(1); | ||
73 | delete_version(current_list.clone(), ver.1)?; | 80 | delete_version(current_list.clone(), ver.1)?; |
74 | } else { | 81 | } else { |
82 | d_p.set_message(format!("Disable version {}", ver.1)); | ||
83 | d_p.inc(1); | ||
75 | disable_version(config, current_list.clone(), ver.1, ver.0)?; | 84 | disable_version(config, current_list.clone(), ver.1, ver.0)?; |
76 | }; | 85 | }; |
77 | } | 86 | } |
87 | |||
88 | let del_msg = if delete_old { | ||
89 | "Deleted all old versions" | ||
90 | } else { | ||
91 | "Disabled all old versions" | ||
92 | }; | ||
93 | |||
94 | d_p.finish_with_message(del_msg); | ||
78 | } | 95 | } |
96 | |||
97 | download_p.inc(1); | ||
79 | } | 98 | } |
80 | 99 | ||
100 | download_p.finish_with_message("Downloaded all lists"); | ||
101 | |||
81 | Ok(()) | 102 | Ok(()) |
82 | } | 103 | } |