@@ -65,17 +65,29 @@ pub(super) async fn command_try_build(
65
65
. await
66
66
. context ( "Cannot find or create PR" ) ?;
67
67
68
+ if let Some ( build) = & pr_model. try_build {
69
+ if build. status == BuildStatus :: Pending {
70
+ tracing:: warn!( "Try build already in progress" ) ;
71
+ repo. client
72
+ . post_comment ( pr. number , try_build_in_progress_comment ( ) )
73
+ . await ?;
74
+ return Ok ( ( ) ) ;
75
+ }
76
+ } else if Some ( Parent :: Last ) == parent {
77
+ tracing:: warn!( "try build was requested with parent=last but no previous build was found" ) ;
78
+ repo. client
79
+ . post_comment ( pr. number , cant_find_last_parent_comment ( ) )
80
+ . await ?;
81
+ return Ok ( ( ) ) ;
82
+ }
83
+
68
84
let base_sha = match get_base_sha ( & pr_model, parent) {
69
- Ok ( Some ( base_sha) ) => base_sha,
70
- Ok ( None ) => repo
85
+ Some ( base_sha) => base_sha,
86
+ None => repo
71
87
. client
72
88
. get_branch_sha ( & pr. base . name )
73
89
. await
74
90
. context ( format ! ( "Cannot get SHA for branch {}" , pr. base. name) ) ?,
75
- Err ( comment) => {
76
- repo. client . post_comment ( pr. number , comment) . await ?;
77
- return Ok ( ( ) ) ;
78
- }
79
91
} ;
80
92
81
93
match attempt_merge (
@@ -166,30 +178,18 @@ enum MergeResult {
166
178
Conflict ,
167
179
}
168
180
169
- fn get_base_sha (
170
- pr_model : & PullRequestModel ,
171
- parent : Option < Parent > ,
172
- ) -> Result < Option < CommitSha > , Comment > {
173
- let last_parent = if let Some ( ref build) = pr_model. try_build {
174
- if build. status == BuildStatus :: Pending {
175
- tracing:: warn!( "Try build already in progress" ) ;
176
- return Err ( try_build_in_progress_comment ( ) ) ;
177
- } else {
178
- Some ( CommitSha ( build. parent . clone ( ) ) )
179
- }
180
- } else {
181
- None
182
- } ;
181
+ fn get_base_sha ( pr_model : & PullRequestModel , parent : Option < Parent > ) -> Option < CommitSha > {
182
+ let last_parent = pr_model
183
+ . try_build
184
+ . as_ref ( )
185
+ . map ( |build| CommitSha ( build. parent . clone ( ) ) ) ;
183
186
184
187
match parent. clone ( ) {
185
188
Some ( parent) => match parent {
186
- Parent :: Last => match last_parent {
187
- None => Err ( cant_find_last_parent_comment ( ) ) ,
188
- Some ( last_parent) => Ok ( Some ( last_parent) ) ,
189
- } ,
190
- Parent :: CommitSha ( parent) => Ok ( Some ( parent) ) ,
189
+ Parent :: Last => last_parent,
190
+ Parent :: CommitSha ( parent) => Some ( parent) ,
191
191
} ,
192
- None => Ok ( None ) ,
192
+ None => None ,
193
193
}
194
194
}
195
195
0 commit comments