@@ -72,38 +72,48 @@ impl Log for LocalLogger {
7272
7373 if let Some ( group_event) = get_group_event ( record) {
7474 match group_event {
75- GroupEvent :: Start ( name) | GroupEvent :: StartOpened ( name) => {
76- let header = format_group_header ( & name ) ;
77- eprintln ! ( " \n {header}" ) ;
75+ GroupEvent :: Start ( ref name) | GroupEvent :: StartOpened ( ref name) => {
76+ let opened = matches ! ( group_event , GroupEvent :: StartOpened ( _ ) ) ;
77+ let name = name . clone ( ) ;
7878
79- // Store current group name for completion message
80- if let Ok ( mut current) = CURRENT_GROUP_NAME . lock ( ) {
81- * current = Some ( name. clone ( ) ) ;
82- }
79+ let header = format_group_header ( & name) ;
80+ eprintln ! ( ) ;
81+ eprintln ! ( "{header}" ) ;
82+ eprintln ! ( ) ;
83+
84+ // Opened groups don't get a spinner or closing checkmark
85+ if !opened {
86+ // Store current group name for completion message
87+ if let Ok ( mut current) = CURRENT_GROUP_NAME . lock ( ) {
88+ * current = Some ( name. clone ( ) ) ;
89+ }
8390
84- if * IS_TTY {
85- let spinner = ProgressBar :: new_spinner ( ) ;
86- let tick_strings: Vec < String > = SPINNER_TICKS
87- . iter ( )
88- . map ( |s| format ! ( "{}" , style( s) . color256( CODSPEED_U8_COLOR_CODE ) . dim( ) ) )
89- . collect ( ) ;
90- let tick_strs: Vec < & str > =
91- tick_strings. iter ( ) . map ( |s| s. as_str ( ) ) . collect ( ) ;
92-
93- spinner. set_style (
94- ProgressStyle :: with_template (
95- & format ! (
96- " {{spinner}} {{wide_msg:.{CODSPEED_U8_COLOR_CODE}}} {{elapsed:.dim}}"
97- ) ,
98- )
99- . unwrap ( )
100- . tick_strings ( & tick_strs) ,
101- ) ;
102- spinner. set_message ( format ! ( "{name}..." ) ) ;
103- spinner. enable_steady_tick ( Duration :: from_millis ( 300 ) ) ;
104- SPINNER . lock ( ) . unwrap ( ) . replace ( spinner) ;
105- } else {
106- eprintln ! ( "{name}..." ) ;
91+ if * IS_TTY {
92+ let spinner = ProgressBar :: new_spinner ( ) ;
93+ let tick_strings: Vec < String > = SPINNER_TICKS
94+ . iter ( )
95+ . map ( |s| {
96+ format ! ( "{}" , style( s) . color256( CODSPEED_U8_COLOR_CODE ) . dim( ) )
97+ } )
98+ . collect ( ) ;
99+ let tick_strs: Vec < & str > =
100+ tick_strings. iter ( ) . map ( |s| s. as_str ( ) ) . collect ( ) ;
101+
102+ spinner. set_style (
103+ ProgressStyle :: with_template (
104+ & format ! (
105+ " {{spinner}} {{wide_msg:.{CODSPEED_U8_COLOR_CODE}}} {{elapsed:.dim}}"
106+ ) ,
107+ )
108+ . unwrap ( )
109+ . tick_strings ( & tick_strs) ,
110+ ) ;
111+ spinner. set_message ( format ! ( "{name}..." ) ) ;
112+ spinner. enable_steady_tick ( Duration :: from_millis ( 300 ) ) ;
113+ SPINNER . lock ( ) . unwrap ( ) . replace ( spinner) ;
114+ } else {
115+ eprintln ! ( "{name}..." ) ;
116+ }
107117 }
108118 }
109119 GroupEvent :: End => {
@@ -119,7 +129,7 @@ impl Log for LocalLogger {
119129 let elapsed_str = format_elapsed ( elapsed) ;
120130 eprintln ! (
121131 "{} {}" ,
122- format_checkmark( & name) ,
132+ format_checkmark( & name, true ) ,
123133 style( elapsed_str) . dim( ) ,
124134 ) ;
125135 }
@@ -147,18 +157,19 @@ impl Log for LocalLogger {
147157
148158/// Format a group header with styled prefix
149159fn format_group_header ( name : & str ) -> String {
150- let prefix = style ( "\u{25B6 } " ) . color256 ( CODSPEED_U8_COLOR_CODE ) . bold ( ) ;
160+ let prefix = style ( "\u{f0da } " ) . color256 ( CODSPEED_U8_COLOR_CODE ) . bold ( ) ;
151161 let title = style ( name) . bold ( ) ;
152162 format ! ( "{prefix} {title}" )
153163}
154164
155- /// Format a completion checkmark with a dimmed label.
156- pub ( crate ) fn format_checkmark ( label : & str ) -> String {
157- format ! (
158- " {} {}" ,
159- style( "\u{2714} " ) . green( ) . bold( ) ,
160- style( label) . dim( ) ,
161- )
165+ /// Format a completion checkmark with a label.
166+ pub ( crate ) fn format_checkmark ( label : & str , dim : bool ) -> String {
167+ let label = if dim {
168+ style ( label) . dim ( ) . to_string ( )
169+ } else {
170+ label. to_string ( )
171+ } ;
172+ format ! ( " {} {}" , style( "\u{f00c} " ) . green( ) . bold( ) , label)
162173}
163174
164175/// Format elapsed duration in a compact human-readable way
@@ -196,13 +207,13 @@ fn indent_lines(s: &str, indent: &str) -> String {
196207fn print_record ( record : & log:: Record ) {
197208 match record. level ( ) {
198209 log:: Level :: Error => {
199- let prefix = style ( "\u{2717 } " ) . red ( ) . bold ( ) ;
210+ let prefix = style ( "\u{f00d } " ) . red ( ) . bold ( ) ;
200211 let msg = indent_lines ( & format ! ( "{}" , record. args( ) ) , " " ) ;
201212 let msg = Style :: new ( ) . red ( ) . apply_to ( msg) ;
202213 eprintln ! ( " {prefix} {msg}" ) ;
203214 }
204215 log:: Level :: Warn => {
205- let prefix = style ( "\u{25B2 } " ) . yellow ( ) ;
216+ let prefix = style ( "\u{f071 } " ) . yellow ( ) ;
206217 let msg = indent_lines ( & format ! ( "{}" , record. args( ) ) , " " ) ;
207218 let msg = Style :: new ( ) . yellow ( ) . apply_to ( msg) ;
208219 eprintln ! ( " {prefix} {msg}" ) ;
0 commit comments