Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion src/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -497,6 +497,8 @@ pub(crate) struct BotPullRequests {}
#[serde(deny_unknown_fields)]
pub(crate) struct RenderedLinkConfig {
pub(crate) trigger_files: Vec<String>,
#[serde(default)]
pub(crate) exclude_files: Vec<String>,
}

#[derive(PartialEq, Eq, Debug, serde::Deserialize)]
Expand Down Expand Up @@ -720,7 +722,8 @@ mod tests {
merge_conflicts: None,
bot_pull_requests: None,
rendered_link: Some(RenderedLinkConfig {
trigger_files: vec!["posts/".to_string()]
trigger_files: vec!["posts/".to_string()],
exclude_files: vec![],
}),
issue_links: Some(IssueLinksConfig {
check_commits: true,
Expand Down
3 changes: 3 additions & 0 deletions src/github.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1100,6 +1100,9 @@ pub struct PullRequestFile {
pub sha: String,
pub filename: String,
pub blob_url: String,
pub additions: u64,
pub deletions: u64,
pub changes: u64,
}

#[derive(Debug, serde::Deserialize)]
Expand Down
14 changes: 11 additions & 3 deletions src/handlers/rendered_link.rs
Original file line number Diff line number Diff line change
Expand Up @@ -42,13 +42,20 @@ async fn add_rendered_link(

let rendered_link = files
.iter()
.find(|f| {
.filter(|f| {
config
.trigger_files
.iter()
.any(|tf| f.filename.starts_with(tf))
&& !config
.exclude_files
.iter()
.any(|tf| f.filename.starts_with(tf))
})
.and_then(|file| {
// Sort the relavant files by the total number of lines changed, as to
// improve our guess for the relevant file to show the link to.
.max_by_key(|f| f.additions + f.deletions + f.changes)
.map(|file| {
let head = e.issue.head.as_ref()?;
let base = e.issue.base.as_ref()?;

Expand Down Expand Up @@ -84,7 +91,8 @@ async fn add_rendered_link(
},
file.filename
))
});
})
.flatten();

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