Skip to content

Commit

Permalink
Merge pull request #1858 from Urgau/lock-mcp
Browse files Browse the repository at this point in the history
Lock Major Change Proposal issue
  • Loading branch information
ehuss authored Dec 9, 2024
2 parents 4e83f7a + d5649f4 commit bfeafd5
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 0 deletions.
42 changes: 42 additions & 0 deletions src/github.rs
Original file line number Diff line number Diff line change
Expand Up @@ -443,6 +443,18 @@ pub enum ReportedContentClassifiers {
Spam,
}

#[derive(Debug, serde::Deserialize, serde::Serialize, Eq, PartialEq)]
pub enum LockReason {
#[serde(rename = "off-topic")]
OffTopic,
#[serde(rename = "too heated")]
TooHeated,
#[serde(rename = "resolved")]
Resolved,
#[serde(rename = "spam")]
Spam,
}

#[derive(Debug, serde::Deserialize, Eq, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum PullRequestReviewState {
Expand Down Expand Up @@ -882,6 +894,36 @@ impl Issue {
Ok(())
}

/// Lock an issue with an optional reason.
pub async fn lock(
&self,
client: &GithubClient,
reason: Option<LockReason>,
) -> anyhow::Result<()> {
let lock_url = format!(
"{}/issues/{}/lock",
self.repository().url(client),
self.number
);
#[derive(serde::Serialize)]
struct LockReasonIssue {
lock_reason: LockReason,
}
client
.send_req({
let req = client.put(&lock_url);

if let Some(lock_reason) = reason {
req.json(&LockReasonIssue { lock_reason })
} else {
req
}
})
.await
.context("failed to lock issue")?;
Ok(())
}

pub async fn close(&self, client: &GithubClient) -> anyhow::Result<()> {
let edit_url = format!("{}/issues/{}", self.repository().url(client), self.number);
#[derive(serde::Serialize)]
Expand Down
4 changes: 4 additions & 0 deletions src/handlers/major_change.rs
Original file line number Diff line number Diff line change
Expand Up @@ -294,6 +294,10 @@ async fn handle(
.post_comment(&ctx.github, &comment)
.await
.context("post major change comment")?;
issue
.lock(&ctx.github, None)
.await
.context("lock major change issue")?;
}

let zulip_req = zulip_req.send(&ctx.github.raw());
Expand Down

0 comments on commit bfeafd5

Please sign in to comment.