Skip to content

Commit 7ca327c

Browse files
committed
fix: allow log&process bar mix
1 parent b4fb395 commit 7ca327c

File tree

4 files changed

+26
-7
lines changed

4 files changed

+26
-7
lines changed

Cargo.lock

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ env_logger = "0.11.5"
2323
flate2 = "1.0.35"
2424
guess_host_triple = "0.1.4"
2525
indicatif = "0.17.9"
26+
indicatif-log-bridge = "0.2.3"
2627
lazy_static = "1.0"
2728
log = "0.4.22"
2829
miette = { version = "7.3.0", features = ["fancy"] }

src/lib.rs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,11 @@ pub mod toolchain;
88
pub mod logging {
99
use env_logger::{Builder, Env, WriteStyle};
1010

11+
use crate::toolchain::PROCESS_BARS;
12+
1113
/// Initializes the logger
1214
pub fn initialize_logger(log_level: &str) {
13-
Builder::from_env(Env::default().default_filter_or(log_level))
15+
let logger = Builder::from_env(Env::default().default_filter_or(log_level))
1416
.format(|buf, record| {
1517
use std::io::Write;
1618
writeln!(
@@ -21,7 +23,13 @@ pub mod logging {
2123
)
2224
})
2325
.write_style(WriteStyle::Always)
24-
.init();
26+
.build();
27+
let level = logger.filter();
28+
// make logging and process bar no longer mixed up
29+
indicatif_log_bridge::LogWrapper::new(PROCESS_BARS.clone(), logger)
30+
.try_init()
31+
.unwrap();
32+
log::set_max_level(level);
2533
}
2634
}
2735

src/toolchain/mod.rs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -151,16 +151,15 @@ pub async fn download_file(
151151
bytes.extend(&chunk);
152152
}
153153
bar.finish_with_message(format!("{} download complete", file_name));
154-
if DOWNLOAD_CNT.load(atomic::Ordering::Relaxed) == 1 {
154+
// remove process bar on complete
155+
PROCESS_BARS.remove(&bar);
156+
if DOWNLOAD_CNT.fetch_sub(1, atomic::Ordering::Relaxed) == 1 {
155157
// clear all progress bars
156158
PROCESS_BARS.clear().unwrap();
157159
info!("All downloads complete");
158160
}
159-
DOWNLOAD_CNT.fetch_sub(1, atomic::Ordering::Relaxed);
160161
// wait while DOWNLOAD_CNT is not zero
161-
while DOWNLOAD_CNT.load(atomic::Ordering::Relaxed) != 0 {
162-
tokio::time::sleep(tokio::time::Duration::from_millis(100)).await;
163-
}
162+
164163
bytes.freeze()
165164
};
166165
if uncompress {

0 commit comments

Comments
 (0)