Skip to content

Commit 2c7b69e

Browse files
committed
Progress bar for narrow command line window
1 parent cb27eb8 commit 2c7b69e

3 files changed

Lines changed: 12 additions & 2 deletions

File tree

Cargo.lock

Lines changed: 1 addition & 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
@@ -34,3 +34,4 @@ isolang = "1"
3434
crossterm = "0.19"
3535
tui = { version = "0.14", default-features = false, features = ['crossterm'] }
3636
termcolor = "1.1"
37+
terminal_size = "0.1.16"

src/progress_reporting/progress_manager.rs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,12 @@ use std::collections::VecDeque;
66
use std::sync::atomic::Ordering;
77
use std::sync::{Arc, Mutex};
88
use std::thread::JoinHandle;
9+
use terminal_size;
910
use tmc_langs_util::progress_reporter::StatusUpdate;
1011

1112
pub fn get_default_style() -> ProgressStyle {
1213
ProgressStyle::default_bar()
13-
.template("{wide_msg}\n {percent}%[{bar:64.white}] [{elapsed_precise}]")
14+
.template("{wide_msg}\n {percent}%[{bar:25.white}] [{elapsed_precise}]")
1415
.progress_chars("██░")
1516
}
1617

@@ -178,9 +179,16 @@ impl ProgressBarManager {
178179
}
179180

180181
let message_guard = status_message.lock().expect("Could not lock mutex");
181-
let message = (*message_guard).clone();
182+
let mut message = (*message_guard).clone();
182183
drop(message_guard);
183184

185+
// message is splitted to fit to the terminal window
186+
if let Some((terminal_size::Width(w), terminal_size::Height(_h))) = terminal_size::terminal_size() {
187+
if usize::from(w) < message.len() {
188+
let _over = message.split_off(usize::from(w));
189+
}
190+
}
191+
184192
if message != last_message {
185193
// message has changed since last tick
186194
pb.set_message(&message);

0 commit comments

Comments
 (0)