Skip to content

Commit e877943

Browse files
committed
Sort by total number of lines changed to improve rendered link guess
1 parent b744193 commit e877943

File tree

2 files changed

+16
-4
lines changed

2 files changed

+16
-4
lines changed

src/github.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1100,6 +1100,9 @@ pub struct PullRequestFile {
11001100
pub sha: String,
11011101
pub filename: String,
11021102
pub blob_url: String,
1103+
pub additions: u64,
1104+
pub deletions: u64,
1105+
pub changes: u64,
11031106
}
11041107

11051108
#[derive(Debug, serde::Deserialize)]

src/handlers/rendered_link.rs

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,9 @@ async fn add_rendered_link(
4040
{
4141
let files = e.issue.files(&ctx.github).await?;
4242

43-
let rendered_link = files
43+
let mut relevant_files: Vec<_> = files
4444
.iter()
45-
.find(|f| {
45+
.filter(|f| {
4646
config
4747
.trigger_files
4848
.iter()
@@ -52,7 +52,15 @@ async fn add_rendered_link(
5252
.iter()
5353
.any(|tf| f.filename.starts_with(tf))
5454
})
55-
.and_then(|file| {
55+
.collect();
56+
57+
// Sort the relavant files by the total number of lines changed, as to
58+
// improve our guess for the relevant file to show the link to.
59+
relevant_files.sort_by_key(|f| f.additions + f.deletions + f.changes);
60+
61+
let rendered_link = relevant_files
62+
.last()
63+
.map(|file| {
5664
let head = e.issue.head.as_ref()?;
5765
let base = e.issue.base.as_ref()?;
5866

@@ -88,7 +96,8 @@ async fn add_rendered_link(
8896
},
8997
file.filename
9098
))
91-
});
99+
})
100+
.flatten();
92101

93102
let new_body: Cow<'_, str> = if !e.issue.body.contains("[Rendered]") {
94103
if let Some(rendered_link) = rendered_link {

0 commit comments

Comments
 (0)