55#![ allow( clippy:: cargo:: multiple_crate_versions) ]
66#![ deny( clippy:: pedantic) ]
77#![ deny( clippy:: result_unwrap_used) ]
8+ #![ deny( clippy:: panic) ]
89#![ allow( clippy:: module_name_repetitions) ]
9- use anyhow:: { anyhow, Result } ;
1010
1111mod app;
1212mod components;
@@ -20,6 +20,7 @@ mod ui;
2020mod version;
2121
2222use crate :: { app:: App , poll:: QueueEvent } ;
23+ use anyhow:: { anyhow, Result } ;
2324use asyncgit:: AsyncNotification ;
2425use backtrace:: Backtrace ;
2526use crossbeam_channel:: { tick, unbounded, Receiver , Select } ;
@@ -30,7 +31,6 @@ use crossterm::{
3031 } ,
3132 ExecutableCommand ,
3233} ;
33- use log:: error;
3434use scopeguard:: defer;
3535use scopetime:: scope_time;
3636use simplelog:: { Config , LevelFilter , WriteLogger } ;
@@ -41,6 +41,7 @@ use std::{
4141 io:: { self , Write } ,
4242 panic,
4343 path:: PathBuf ,
44+ process,
4445 time:: { Duration , Instant } ,
4546} ;
4647use tui:: {
@@ -177,7 +178,7 @@ fn select_event(
177178 3 => oper
178179 . recv ( rx_spinner)
179180 . map ( |_| events. push ( QueueEvent :: SpinnerUpdate ) ) ,
180- _ => panic ! ( "unknown select source" ) ,
181+ _ => return Err ( anyhow ! ( "unknown select source" ) ) ,
181182 } ?;
182183
183184 Ok ( events)
@@ -222,17 +223,23 @@ fn set_panic_handlers() -> Result<()> {
222223 // regular panic handler
223224 panic:: set_hook ( Box :: new ( |e| {
224225 let backtrace = Backtrace :: new ( ) ;
225- error ! ( "panic: {:?}\n trace:\n {:?}" , e, backtrace) ;
226+ log :: error!( "panic: {:?}\n trace:\n {:?}" , e, backtrace) ;
226227 shutdown_terminal ( ) . expect ( "shutdown failed inside panic" ) ;
227228 eprintln ! ( "panic: {:?}\n trace:\n {:?}" , e, backtrace) ;
228229 } ) ) ;
229230
230231 // global threadpool
231- Ok ( rayon_core:: ThreadPoolBuilder :: new ( )
232+ rayon_core:: ThreadPoolBuilder :: new ( )
232233 . panic_handler ( |e| {
233- error ! ( "thread panic: {:?}" , e) ;
234- panic ! ( e)
234+ let backtrace = Backtrace :: new ( ) ;
235+ log:: error!( "panic: {:?}\n trace:\n {:?}" , e, backtrace) ;
236+ shutdown_terminal ( )
237+ . expect ( "shutdown failed inside panic" ) ;
238+ eprintln ! ( "panic: {:?}\n trace:\n {:?}" , e, backtrace) ;
239+ process:: abort ( ) ;
235240 } )
236241 . num_threads ( 4 )
237- . build_global ( ) ?)
242+ . build_global ( ) ?;
243+
244+ Ok ( ( ) )
238245}
0 commit comments