Migrate to indicatif 0.7 beta
Now there is no need for the ugly hack where we drove the spinner in a separate thread :)
This commit is contained in:
parent
7d15d08d6d
commit
f716daa3a1
3 changed files with 11 additions and 45 deletions
10
Cargo.lock
generated
10
Cargo.lock
generated
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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<F: Future, U>(self: Arc<Self>, func: U) -> F::Output
|
||||
where U: FnOnce(Arc<Progress>) -> 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);
|
||||
|
|
Loading…
Reference in a new issue