|
@@ -10,21 +10,18 @@
|
|
|
|
|
|
use crate::{
|
|
|
github::{self, Event, GithubClient},
|
|
|
+ handlers::Context,
|
|
|
interactions::ErrorComment,
|
|
|
registry::Handler,
|
|
|
};
|
|
|
use failure::Error;
|
|
|
use parser::command::label::{LabelCommand, LabelDelta};
|
|
|
use parser::command::{Command, Input};
|
|
|
-use std::sync::Arc;
|
|
|
|
|
|
-pub struct LabelHandler {
|
|
|
- pub client: GithubClient,
|
|
|
- pub username: Arc<String>,
|
|
|
-}
|
|
|
+pub struct LabelHandler;
|
|
|
|
|
|
impl Handler for LabelHandler {
|
|
|
- fn handle_event(&self, event: &Event) -> Result<(), Error> {
|
|
|
+ fn handle_event(&self, ctx: &Context, event: &Event) -> Result<(), Error> {
|
|
|
#[allow(irrefutable_let_patterns)]
|
|
|
let event = if let Event::IssueComment(e) = event {
|
|
|
e
|
|
@@ -36,7 +33,7 @@ impl Handler for LabelHandler {
|
|
|
let repo = &event.repository.full_name;
|
|
|
let mut issue_labels = event.issue.labels().to_owned();
|
|
|
|
|
|
- let mut input = Input::new(&event.comment.body, &self.username);
|
|
|
+ let mut input = Input::new(&event.comment.body, &ctx.username);
|
|
|
let deltas = match input.parse_command() {
|
|
|
Command::Label(Ok(LabelCommand(deltas))) => deltas,
|
|
|
Command::Label(Err(err)) => {
|
|
@@ -47,7 +44,7 @@ impl Handler for LabelHandler {
|
|
|
event.comment.html_url, err
|
|
|
),
|
|
|
)
|
|
|
- .post(&self.client)?;
|
|
|
+ .post(&ctx.github)?;
|
|
|
failure::bail!(
|
|
|
"label parsing failed for issue #{}, error: {:?}",
|
|
|
event.issue.number,
|
|
@@ -60,8 +57,8 @@ impl Handler for LabelHandler {
|
|
|
let mut changed = false;
|
|
|
for delta in &deltas {
|
|
|
let name = delta.label().as_str();
|
|
|
- if let Err(msg) = check_filter(name, repo, &event.comment.user, &self.client) {
|
|
|
- ErrorComment::new(&event.issue, msg.to_string()).post(&self.client)?;
|
|
|
+ if let Err(msg) = check_filter(name, repo, &event.comment.user, &ctx.github) {
|
|
|
+ ErrorComment::new(&event.issue, msg.to_string()).post(&ctx.github)?;
|
|
|
return Ok(());
|
|
|
}
|
|
|
match delta {
|
|
@@ -83,7 +80,7 @@ impl Handler for LabelHandler {
|
|
|
}
|
|
|
|
|
|
if changed {
|
|
|
- event.issue.set_labels(&self.client, issue_labels)?;
|
|
|
+ event.issue.set_labels(&ctx.github, issue_labels)?;
|
|
|
}
|
|
|
|
|
|
Ok(())
|