diff --git a/src/cmd/branch.rs b/src/cmd/branch.rs index 5afd7b1..d87aec9 100644 --- a/src/cmd/branch.rs +++ b/src/cmd/branch.rs @@ -4,7 +4,7 @@ use console::style; use crate::cmd::{Completion, Run}; use crate::config::Config; -use crate::term; +use crate::term::{self, TableCell, TableCellColor}; use crate::term::{BranchStatus, Cmd, GitBranch, Table}; /// Git branch operations @@ -122,9 +122,32 @@ impl BranchArgs { } else { String::new() }; - let status = format!("{}", branch.status.display()); - let row = vec![cur, branch.name.clone(), status]; - table.add(row); + let status = match branch.status { + BranchStatus::Sync => { + TableCell::with_color(String::from("sync"), TableCellColor::Green) + } + BranchStatus::Gone => { + TableCell::with_color(String::from("gone"), TableCellColor::Red) + } + BranchStatus::Ahead => { + TableCell::with_color(String::from("ahead"), TableCellColor::Yellow) + } + BranchStatus::Behind => { + TableCell::with_color(String::from("behind"), TableCellColor::Yellow) + } + BranchStatus::Conflict => { + TableCell::with_color(String::from("conflict"), TableCellColor::Yellow) + } + BranchStatus::Detached => { + TableCell::with_color(String::from("detached"), TableCellColor::Red) + } + }; + let row = vec![ + TableCell::no_color(cur), + TableCell::no_color(branch.name.clone()), + status, + ]; + table.add_color(row); } if self.all { diff --git a/src/term.rs b/src/term.rs index be895f3..0e84d56 100644 --- a/src/term.rs +++ b/src/term.rs @@ -1445,12 +1445,7 @@ impl Table { let mut max_size: usize = 0; for row in self.rows.iter() { let cell = row.get(coli).unwrap(); - let raw_size = console::measure_text_width(&cell.text); - let size = if coli == self.ncol - 1 { - raw_size - } else { - raw_size + 2 - }; + let size = console::measure_text_width(&cell.text); if size > max_size { max_size = size } @@ -1458,13 +1453,19 @@ impl Table { pads.push(max_size); } - let total_pad: usize = pads.iter().sum(); - let split = "-".repeat(total_pad); + let mut split = String::from("+"); + for pad in pads.iter() { + for _ in 0..*pad + 2 { + split.push('-'); + } + split.push('+'); + } for (rowi, row) in self.rows.into_iter().enumerate() { if rowi == 0 || (self.foot_index > 0 && rowi >= self.foot_index) { eprintln!("{split}"); } + eprint!("|"); for (coli, cell) in row.into_iter().enumerate() { let pad = pads[coli]; let mut text = cell @@ -1478,7 +1479,7 @@ impl Table { }; text = format!("{style_text}"); } - eprint!("{text}"); + eprint!(" {text} |"); } eprintln!();