@@ -27,6 +27,11 @@ pub(super) async fn handle_command(
27
27
event : & Event ,
28
28
input : RelabelCommand ,
29
29
) -> anyhow:: Result < ( ) > {
30
+ let Some ( issue) = event. issue ( ) else {
31
+ anyhow:: bail!( "event is not an issue" ) ;
32
+ } ;
33
+
34
+ // Check label authorization for the current user
30
35
for delta in & input. 0 {
31
36
let name = delta. label ( ) . as_str ( ) ;
32
37
let err = match check_filter ( name, config, is_member ( & event. user ( ) , & ctx. team ) . await ) {
@@ -43,48 +48,37 @@ pub(super) async fn handle_command(
43
48
Err ( err) => Some ( err) ,
44
49
} ;
45
50
if let Some ( msg) = err {
46
- let cmnt = ErrorComment :: new ( & event . issue ( ) . unwrap ( ) , msg) ;
51
+ let cmnt = ErrorComment :: new ( issue, msg) ;
47
52
cmnt. post ( & ctx. github ) . await ?;
48
53
return Ok ( ( ) ) ;
49
54
}
50
55
}
51
56
57
+ // Compute the labels to add and remove
52
58
let ( to_add, to_remove) = compute_label_deltas ( & input. 0 ) ;
53
59
54
- if let Err ( e) = event
55
- . issue ( )
56
- . unwrap ( )
57
- . add_labels ( & ctx. github , to_add. clone ( ) )
58
- . await
59
- {
60
+ // Add labels
61
+ if let Err ( e) = issue. add_labels ( & ctx. github , to_add. clone ( ) ) . await {
60
62
tracing:: error!(
61
63
"failed to add {:?} from issue {}: {:?}" ,
62
64
to_add,
63
- event . issue( ) . unwrap ( ) . global_id( ) ,
65
+ issue. global_id( ) ,
64
66
e
65
67
) ;
66
68
if let Some ( err @ UnknownLabels { .. } ) = e. downcast_ref ( ) {
67
- event
68
- . issue ( )
69
- . unwrap ( )
70
- . post_comment ( & ctx. github , & err. to_string ( ) )
71
- . await ?;
69
+ issue. post_comment ( & ctx. github , & err. to_string ( ) ) . await ?;
72
70
}
73
71
74
72
return Err ( e) ;
75
73
}
76
74
75
+ // Remove labels
77
76
for label in to_remove {
78
- if let Err ( e) = event
79
- . issue ( )
80
- . unwrap ( )
81
- . remove_label ( & ctx. github , & label. name )
82
- . await
83
- {
77
+ if let Err ( e) = issue. remove_label ( & ctx. github , & label. name ) . await {
84
78
tracing:: error!(
85
79
"failed to remove {:?} from issue {}: {:?}" ,
86
80
label,
87
- event . issue( ) . unwrap ( ) . global_id( ) ,
81
+ issue. global_id( ) ,
88
82
e
89
83
) ;
90
84
return Err ( e) ;
0 commit comments