@@ -266,8 +266,8 @@ async fn main() -> anyhow::Result<()> {
266266
267267 // The .await here is okay, because the PanelManager dropped the queue sender,
268268 // which makes these two guys instantly return:
269- let dir_mngr_result = dir_mngr_handle. await ;
270- let prev_mngr_result = prev_mngr_handle. await ;
269+ dir_mngr_handle. abort ( ) ;
270+ prev_mngr_handle. abort ( ) ;
271271
272272 // Be a good citizen, cleanup
273273 stdout
@@ -283,23 +283,7 @@ async fn main() -> anyhow::Result<()> {
283283 Ok ( Ok ( close_cmd) ) => {
284284 if let CloseCmd :: QuitErr { error } = & close_cmd {
285285 error ! ( "{error}" ) ;
286- // Print all errors
287- let errors = logger. get_errors ( ) ;
288- if !errors. is_empty ( ) {
289- // Write error.log
290- let log_output: String = logger
291- . get ( )
292- . into_iter ( )
293- . map ( |( level, msg) | format ! ( "{level}: {msg}\n " ) )
294- . collect ( ) ;
295- let mut log = std:: fs:: File :: create ( "./error.log" ) ?;
296- log. write_all ( log_output. as_bytes ( ) ) ?;
297- eprintln ! ( "{}" , ERROR_MSG ) ;
298- eprintln ! ( "Error:" ) ;
299- for e in errors {
300- eprintln ! ( "{e}" ) ;
301- }
302- }
286+ print_all_errors ( & logger) ?;
303287 return Ok ( ( ) ) ;
304288 }
305289 if let Some ( choosedir) = args. choosedir {
@@ -322,18 +306,34 @@ async fn main() -> anyhow::Result<()> {
322306 }
323307 }
324308 }
325- Ok ( Err ( e ) ) => {
326- error ! ( "PanelManager returned an error: {e}" ) ;
309+ Ok ( e ) => {
310+ e . context ( "panel manager returned an error" ) ? ;
327311 }
328- Err ( e ) => {
329- error ! ( "PanelManager-task: {e}" )
312+ e => {
313+ e . context ( "error in panel-manager task" ) ?? ;
330314 }
331315 }
332- if let Err ( e) = dir_mngr_result {
333- error ! ( "dir-mngr-task: {e}" ) ;
334- }
335- if let Err ( e) = prev_mngr_result {
336- error ! ( "preview-mngr-task: {e}" ) ;
316+ print_all_errors ( & logger) ?;
317+ Ok ( ( ) )
318+ }
319+
320+ fn print_all_errors ( logger : & LogBuffer ) -> anyhow:: Result < ( ) > {
321+ let errors = logger. get_errors ( ) ;
322+ if !errors. is_empty ( ) {
323+ // Write error.log
324+ let log_output: String = logger
325+ . get ( )
326+ . into_iter ( )
327+ . map ( |( level, msg) | format ! ( "{level}: {msg}\n " ) )
328+ . collect ( ) ;
329+ let mut log = std:: fs:: File :: create ( "./error.log" ) . context ( "failed to create error log" ) ?;
330+ log. write_all ( log_output. as_bytes ( ) )
331+ . context ( "failed to write to error log" ) ?;
332+ eprintln ! ( "{}" , ERROR_MSG ) ;
333+ eprintln ! ( "Error:" ) ;
334+ for e in errors {
335+ eprintln ! ( "{e}" ) ;
336+ }
337337 }
338338 Ok ( ( ) )
339339}
0 commit comments