Skip to main content

git_worktree_manager/
console.rs

1/// Console output formatting utilities.
2///
3/// Provides styled terminal output using the `console` crate.
4use console::{style, Style, Term};
5
6/// Print a styled header line.
7pub fn print_header(text: &str) {
8    let term = Term::stdout();
9    let _ = term.write_line(&format!("{}", style(text).cyan().bold()));
10}
11
12/// Print a styled success message.
13pub fn print_success(text: &str) {
14    let _ = Term::stdout().write_line(&format!("{}", style(text).green()));
15}
16
17/// Print a styled warning message.
18pub fn print_warning(text: &str) {
19    let _ = Term::stderr().write_line(&format!("{}", style(text).yellow()));
20}
21
22/// Print a styled error message.
23pub fn print_error(text: &str) {
24    let _ = Term::stderr().write_line(&format!("{}", style(text).red()));
25}
26
27/// Print dimmed text.
28pub fn print_dim(text: &str) {
29    let _ = Term::stdout().write_line(&format!("{}", style(text).dim()));
30}
31
32/// Status → color mapping used by list, tree, global_ops.
33pub fn status_style(status: &str) -> Style {
34    match status {
35        "active" => Style::new().green().bold(),
36        "clean" => Style::new().green(),
37        "modified" => Style::new().yellow(),
38        "stale" => Style::new().red(),
39        _ => Style::new(),
40    }
41}
42
43/// Get current terminal width (fallback 80).
44pub fn terminal_width() -> usize {
45    Term::stdout().size().1 as usize
46}