Skip to content

Commit 8b18d23

Browse files
authored
Merge pull request #243 from geetanshjuneja/refactor
Refactor try build errors
2 parents 6b12285 + 028ad92 commit 8b18d23

File tree

1 file changed

+26
-26
lines changed

1 file changed

+26
-26
lines changed

src/bors/handlers/trybuild.rs

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -65,17 +65,29 @@ pub(super) async fn command_try_build(
6565
.await
6666
.context("Cannot find or create PR")?;
6767

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+
6884
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
7187
.client
7288
.get_branch_sha(&pr.base.name)
7389
.await
7490
.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-
}
7991
};
8092

8193
match attempt_merge(
@@ -166,30 +178,18 @@ enum MergeResult {
166178
Conflict,
167179
}
168180

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()));
183186

184187
match parent.clone() {
185188
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),
191191
},
192-
None => Ok(None),
192+
None => None,
193193
}
194194
}
195195

0 commit comments

Comments
 (0)