5
5
#![ allow( clippy:: cargo:: multiple_crate_versions) ]
6
6
#![ deny( clippy:: pedantic) ]
7
7
#![ deny( clippy:: result_unwrap_used) ]
8
+ #![ deny( clippy:: panic) ]
8
9
#![ allow( clippy:: module_name_repetitions) ]
9
- use anyhow:: { anyhow, Result } ;
10
10
11
11
mod app;
12
12
mod components;
@@ -20,6 +20,7 @@ mod ui;
20
20
mod version;
21
21
22
22
use crate :: { app:: App , poll:: QueueEvent } ;
23
+ use anyhow:: { anyhow, Result } ;
23
24
use asyncgit:: AsyncNotification ;
24
25
use backtrace:: Backtrace ;
25
26
use crossbeam_channel:: { tick, unbounded, Receiver , Select } ;
@@ -30,7 +31,6 @@ use crossterm::{
30
31
} ,
31
32
ExecutableCommand ,
32
33
} ;
33
- use log:: error;
34
34
use scopeguard:: defer;
35
35
use scopetime:: scope_time;
36
36
use simplelog:: { Config , LevelFilter , WriteLogger } ;
@@ -41,6 +41,7 @@ use std::{
41
41
io:: { self , Write } ,
42
42
panic,
43
43
path:: PathBuf ,
44
+ process,
44
45
time:: { Duration , Instant } ,
45
46
} ;
46
47
use tui:: {
@@ -177,7 +178,7 @@ fn select_event(
177
178
3 => oper
178
179
. recv ( rx_spinner)
179
180
. map ( |_| events. push ( QueueEvent :: SpinnerUpdate ) ) ,
180
- _ => panic ! ( "unknown select source" ) ,
181
+ _ => return Err ( anyhow ! ( "unknown select source" ) ) ,
181
182
} ?;
182
183
183
184
Ok ( events)
@@ -222,17 +223,23 @@ fn set_panic_handlers() -> Result<()> {
222
223
// regular panic handler
223
224
panic:: set_hook ( Box :: new ( |e| {
224
225
let backtrace = Backtrace :: new ( ) ;
225
- error ! ( "panic: {:?}\n trace:\n {:?}" , e, backtrace) ;
226
+ log :: error!( "panic: {:?}\n trace:\n {:?}" , e, backtrace) ;
226
227
shutdown_terminal ( ) . expect ( "shutdown failed inside panic" ) ;
227
228
eprintln ! ( "panic: {:?}\n trace:\n {:?}" , e, backtrace) ;
228
229
} ) ) ;
229
230
230
231
// global threadpool
231
- Ok ( rayon_core:: ThreadPoolBuilder :: new ( )
232
+ rayon_core:: ThreadPoolBuilder :: new ( )
232
233
. 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 ( ) ;
235
240
} )
236
241
. num_threads ( 4 )
237
- . build_global ( ) ?)
242
+ . build_global ( ) ?;
243
+
244
+ Ok ( ( ) )
238
245
}
0 commit comments