This repository has no description
0

Configure Feed

Select the types of activity you want to include in your feed.

at main 1.3 kB View raw
1use console::Style; 2use indicatif::ProgressBar; 3 4pub trait Log { 5 fn log_styled(&self, style: Style, verb: &'static str, message: &str); 6 fn log(&self, verb: &'static str, message: &str) { 7 self.log_styled(Style::new().bold().green(), verb, message); 8 } 9 fn log_cyan(&self, verb: &'static str, message: &str) { 10 self.log_styled(Style::new().bold().cyan(), verb, message); 11 } 12 fn log_error(&self, verb: &'static str, message: &str) { 13 self.log_styled(Style::new().bold().red(), verb, message); 14 } 15} 16 17pub(super) fn format_log_msg( 18 style: Style, 19 verb: &'static str, 20 message: &str, 21) -> String { 22 format!("{} {}", style.apply_to(format!("{verb:>12}")), message) 23} 24 25impl Log for () { 26 fn log_styled(&self, style: Style, verb: &'static str, message: &str) { 27 println!("{}", format_log_msg(style, verb, message)); 28 } 29} 30 31impl Log for ProgressBar { 32 fn log_styled(&self, style: Style, verb: &'static str, message: &str) { 33 self.println(format_log_msg(style, verb, message)); 34 } 35} 36 37impl Log for Option<&ProgressBar> { 38 fn log_styled(&self, style: Style, verb: &'static str, message: &str) { 39 if let Some(pb) = self { 40 pb.println(format_log_msg(style, verb, message)); 41 } 42 } 43}