diff --git a/Cargo.lock b/Cargo.lock index 5dc21b3..32b9ea2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -162,9 +162,7 @@ dependencies = [ "encode_unicode", "libc", "once_cell", - "regex", "terminal_size", - "unicode-width", "winapi", ] @@ -359,9 +357,9 @@ checksum = "cb56e1aa765b4b4f3aadfab769793b7087bb03a4ea4920644a6d238e2df5b9ed" [[package]] name = "indicatif" -version = "0.15.0" +version = "0.17.0-beta.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7baab56125e25686df467fe470785512329883aab42696d661247aca2a2896e4" +checksum = "500f7e5a63596852b9bf7583fe86f9ad08e0df9b4eb58d12e9729071cb4952ca" dependencies = [ "console 0.15.0", "lazy_static", @@ -457,9 +455,9 @@ dependencies = [ [[package]] name = "number_prefix" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17b02fc0ff9a9e4b35b3342880f48e896ebf69f2967921fe8646bf5b7125956a" +checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" [[package]] name = "once_cell" diff --git a/Cargo.toml b/Cargo.toml index bb0ba77..2b6bf2c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,7 +15,7 @@ env_logger = "0.8.2" futures = "0.3.8" glob = "0.3.0" hostname = "0.3.1" -indicatif = "0.15.0" +indicatif = "0.17.0-beta.1" libc = "0.2.81" log = "0.4.11" quit = "1.1.2" diff --git a/src/progress.rs b/src/progress.rs index 5813708..1666be2 100644 --- a/src/progress.rs +++ b/src/progress.rs @@ -2,13 +2,9 @@ use std::future::Future; use std::sync::Arc; -use std::sync::atomic::{AtomicBool, Ordering}; -use std::thread; -use std::time::Duration; use atty::Stream; use console::Style; -use futures::join; use indicatif::{ MultiProgress, @@ -79,7 +75,7 @@ impl Progress { if let Some(multi) = self.multi.as_ref() { let bar = multi.add(IndicatifBar::new(100)); let (style, _) = get_spinner_styles(self.label_width); - bar.set_prefix(&label); + bar.set_prefix(label); bar.set_style(style); bar.enable_steady_tick(100); @@ -93,36 +89,8 @@ impl Progress { pub async fn run(self: Arc, func: U) -> F::Output where U: FnOnce(Arc) -> F { - if let Some(multi) = self.multi.as_ref() { - let multi = multi.clone(); - let finished = Arc::new(AtomicBool::new(false)); - - let redraw_future = { - let finished = finished.clone(); - tokio::task::spawn_blocking(move || { - while !finished.load(Ordering::SeqCst) { - multi.join().unwrap(); - thread::sleep(Duration::from_millis(100)); - } - multi.join().unwrap(); - }) - }; - let func_future = { - let finished = finished.clone(); - async move { - let result = func(self).await; - finished.store(true, Ordering::SeqCst); - // root_bar.finish_and_clear(); - result - } - }; - - let (func_result, _) = join!(func_future, redraw_future); - func_result - } else { - // Plain output. Simple. - func(self.clone()).await - } + // TODO: Remove this - Previous trick no longer required in indicatif 0.7 + func(self.clone()).await } fn init_multi() -> MultiProgress { @@ -176,7 +144,7 @@ impl TaskProgress { } if let Some(bar) = self.bar.as_ref() { - bar.set_message(message); + bar.set_message(message.to_owned()); } else { let style = Style::new().bold(); self.plain_print(style, message); @@ -190,7 +158,7 @@ impl TaskProgress { } if let Some(bar) = self.bar.as_ref() { - bar.finish_with_message(message); + bar.finish_with_message(message.to_owned()); } else { let style = Style::new().bold().green(); self.plain_print(style, message); @@ -217,7 +185,7 @@ impl TaskProgress { if let Some(bar) = self.bar.as_ref() { let (_, fail_style) = get_spinner_styles(self.label_width); bar.set_style(fail_style); - bar.abandon_with_message(message); + bar.abandon_with_message(message.to_owned()); } else { let style = Style::new().bold().red(); self.plain_print(style, message);