Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/twbs/rorschach.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChris Rebert <code@rebertia.com>2014-10-11 02:51:07 +0400
committerChris Rebert <code@rebertia.com>2014-10-11 02:51:07 +0400
commitfa989f6b95d93b3b6d15b812c29a2402e8e9bbf0 (patch)
treee85425666452a34723d83983c330cc48fbb8f78b /src
parent49fd8cbe9fa747d7b27ac1f482a9f5e936bd176f (diff)
un-hardcode repos to watch; also fixes #18
Diffstat (limited to 'src')
-rw-r--r--src/main/resources/application.conf2
-rw-r--r--src/main/scala/com/getbootstrap/rorschach/github/GitHubActorWithLogging.scala4
-rw-r--r--src/main/scala/com/getbootstrap/rorschach/github/GitHubPullRequestCommenter.scala12
-rw-r--r--src/main/scala/com/getbootstrap/rorschach/github/PullRequestFeedback.scala3
-rw-r--r--src/main/scala/com/getbootstrap/rorschach/server/PullRequestEventHandler.scala41
-rw-r--r--src/main/scala/com/getbootstrap/rorschach/server/RorschachActor.scala2
-rw-r--r--src/main/scala/com/getbootstrap/rorschach/server/Settings.scala4
7 files changed, 38 insertions, 30 deletions
diff --git a/src/main/resources/application.conf b/src/main/resources/application.conf
index c991fd8..26456d3 100644
--- a/src/main/resources/application.conf
+++ b/src/main/resources/application.conf
@@ -21,6 +21,8 @@ spray.can {
rorschach {
default-port = 9090
+ close-bad-pull-requests = off
+ github-repos-to-watch = ["cvrebert/rorschach-test"]
username = throwaway9475947
password = XXXXXXXX
web-hook-secret-key = abcdefg
diff --git a/src/main/scala/com/getbootstrap/rorschach/github/GitHubActorWithLogging.scala b/src/main/scala/com/getbootstrap/rorschach/github/GitHubActorWithLogging.scala
index d2ab6f6..190c559 100644
--- a/src/main/scala/com/getbootstrap/rorschach/github/GitHubActorWithLogging.scala
+++ b/src/main/scala/com/getbootstrap/rorschach/github/GitHubActorWithLogging.scala
@@ -1,12 +1,10 @@
package com.getbootstrap.rorschach.github
-import org.eclipse.egit.github.core.RepositoryId
import org.eclipse.egit.github.core.client.GitHubClient
import com.getbootstrap.rorschach.server.{Settings, ActorWithLogging}
abstract class GitHubActorWithLogging extends ActorWithLogging {
- private val settings = Settings(context.system)
- protected val BootstrapRepoId = new RepositoryId("twbs", "bootstrap")
+ protected val settings = Settings(context.system)
protected val gitHubClient = new GitHubClient()
gitHubClient.setCredentials(settings.BotUsername, settings.BotPassword)
}
diff --git a/src/main/scala/com/getbootstrap/rorschach/github/GitHubPullRequestCommenter.scala b/src/main/scala/com/getbootstrap/rorschach/github/GitHubPullRequestCommenter.scala
index 77171c2..7d394c6 100644
--- a/src/main/scala/com/getbootstrap/rorschach/github/GitHubPullRequestCommenter.scala
+++ b/src/main/scala/com/getbootstrap/rorschach/github/GitHubPullRequestCommenter.scala
@@ -31,7 +31,7 @@ class GitHubPullRequestCommenter extends GitHubActorWithLogging {
}
override def receive = {
- case PullRequestFeedback(prNum, requester, messages) => {
+ case PullRequestFeedback(repo, prNum, requester, messages) => {
val username = requester.getLogin
val messagesMarkdown = messages.map{ "* " + _ }.mkString("\n")
val commentMarkdown = s"""
@@ -47,14 +47,16 @@ class GitHubPullRequestCommenter extends GitHubActorWithLogging {
|(*Please note that this is a [fully automated](https://github.com/cvrebert/rorschach) comment.*)
""".stripMargin
- tryToCommentOn(BootstrapRepoId, prNum, commentMarkdown) match {
+ tryToCommentOn(repo, prNum, commentMarkdown) match {
case Success(comment) => log.info(s"Successfully posted comment ${comment.getUrl} for ${prNum}")
case Failure(exc) => log.error(exc, s"Error posting comment for ${prNum}")
}
- tryToClose(BootstrapRepoId, prNum) match {
- case Success(_) => log.info(s"Successfully closed ${prNum} due to failed audit(s)")
- case Failure(exc) => log.error(exc, s"Error closing ${prNum}")
+ if (settings.CloseBadPullRequests) {
+ tryToClose(repo, prNum) match {
+ case Success(_) => log.info(s"Successfully closed ${prNum} due to failed audit(s)")
+ case Failure(exc) => log.error(exc, s"Error closing ${prNum}")
+ }
}
}
}
diff --git a/src/main/scala/com/getbootstrap/rorschach/github/PullRequestFeedback.scala b/src/main/scala/com/getbootstrap/rorschach/github/PullRequestFeedback.scala
index 511fe48..05ff63d 100644
--- a/src/main/scala/com/getbootstrap/rorschach/github/PullRequestFeedback.scala
+++ b/src/main/scala/com/getbootstrap/rorschach/github/PullRequestFeedback.scala
@@ -1,8 +1,9 @@
package com.getbootstrap.rorschach.github
-import org.eclipse.egit.github.core.User
+import org.eclipse.egit.github.core.{RepositoryId,User}
case class PullRequestFeedback(
+ repo: RepositoryId,
prNum: PullRequestNumber,
requester: User,
messages: Seq[String]
diff --git a/src/main/scala/com/getbootstrap/rorschach/server/PullRequestEventHandler.scala b/src/main/scala/com/getbootstrap/rorschach/server/PullRequestEventHandler.scala
index b2ed228..4e5591f 100644
--- a/src/main/scala/com/getbootstrap/rorschach/server/PullRequestEventHandler.scala
+++ b/src/main/scala/com/getbootstrap/rorschach/server/PullRequestEventHandler.scala
@@ -25,29 +25,30 @@ class PullRequestEventHandler(commenter: ActorRef) extends GitHubActorWithLoggin
case pr: PullRequest => {
val bsBase = pr.getBase
val prHead = pr.getHead
- bsBase.getRepo.repositoryId match {
- case BootstrapRepoId => {
- val base = bsBase.commitSha
- val head = prHead.commitSha
- val foreignRepoId = prHead.getRepo.repositoryId
-
- val fileMessages = modifiedFilesFor(foreignRepoId, base, head) match {
- case Failure(exc) => {
- log.error(exc, s"Could not get modified files for commits ${base}...${head} for ${foreignRepoId}")
- Nil
- }
- case Success(modifiedFiles) => {
- ModifiedFilesAuditor.audit(modifiedFiles)
- }
+ val destinationRepo = bsBase.getRepo.repositoryId
+ if (settings.repoIds contains destinationRepo) {
+ val base = bsBase.commitSha
+ val head = prHead.commitSha
+ val foreignRepoId = prHead.getRepo.repositoryId
+
+ val fileMessages = modifiedFilesFor(foreignRepoId, base, head) match {
+ case Failure(exc) => {
+ log.error(exc, s"Could not get modified files for commits ${base}...${head} for ${foreignRepoId}")
+ Nil
}
- val branchMessages = BaseAndHeadBranchesAuditor.audit(baseBranch = bsBase.getRef, headBranch = prHead.getRef)
-
- val allMessages = fileMessages ++ branchMessages
- if (allMessages.nonEmpty) {
- commenter ! PullRequestFeedback(pr.number, pr.getUser, allMessages)
+ case Success(modifiedFiles) => {
+ ModifiedFilesAuditor.audit(modifiedFiles)
}
}
- case otherRepo => log.error(s"Received event from GitHub about irrelevant repository: ${otherRepo}")
+ val branchMessages = BaseAndHeadBranchesAuditor.audit(baseBranch = bsBase.getRef, headBranch = prHead.getRef)
+
+ val allMessages = fileMessages ++ branchMessages
+ if (allMessages.nonEmpty) {
+ commenter ! PullRequestFeedback(destinationRepo, pr.number, pr.getUser, allMessages)
+ }
+ }
+ else {
+ log.error(s"Received event from GitHub about irrelevant repository: ${destinationRepo}")
}
}
}
diff --git a/src/main/scala/com/getbootstrap/rorschach/server/RorschachActor.scala b/src/main/scala/com/getbootstrap/rorschach/server/RorschachActor.scala
index 4a3751b..96b1118 100644
--- a/src/main/scala/com/getbootstrap/rorschach/server/RorschachActor.scala
+++ b/src/main/scala/com/getbootstrap/rorschach/server/RorschachActor.scala
@@ -8,7 +8,7 @@ import spray.http._
class RorschachActor(protected val pullRequestEventHandler: ActorRef) extends ActorWithLogging with HttpService {
import GitHubPullRequestWebHooksDirectives.authenticatedPullRequestEvent
- val settings = Settings(context.system)
+ private val settings = Settings(context.system)
override def actorRefFactory = context
override def receive = runRoute(theOnlyRoute)
diff --git a/src/main/scala/com/getbootstrap/rorschach/server/Settings.scala b/src/main/scala/com/getbootstrap/rorschach/server/Settings.scala
index 20788d8..37375aa 100644
--- a/src/main/scala/com/getbootstrap/rorschach/server/Settings.scala
+++ b/src/main/scala/com/getbootstrap/rorschach/server/Settings.scala
@@ -1,5 +1,6 @@
package com.getbootstrap.rorschach.server
+import scala.collection.JavaConverters._
import com.typesafe.config.Config
import akka.actor.ActorSystem
import akka.actor.Extension
@@ -7,13 +8,16 @@ import akka.actor.ExtensionId
import akka.actor.ExtensionIdProvider
import akka.actor.ExtendedActorSystem
import akka.util.ByteString
+import org.eclipse.egit.github.core.RepositoryId
import com.getbootstrap.rorschach.util.Utf8String
class SettingsImpl(config: Config) extends Extension {
+ val repoIds: Set[RepositoryId] = config.getStringList("rorschach.github-repos-to-watch").asScala.toSet.map{ (repoFullName: String) => RepositoryId.createFromId(repoFullName) }
val BotUsername: String = config.getString("rorschach.username")
val BotPassword: String = config.getString("rorschach.password")
val WebHookSecretKey: ByteString = ByteString(config.getString("rorschach.web-hook-secret-key").utf8Bytes)
val DefaultPort: Int = config.getInt("rorschach.default-port")
+ val CloseBadPullRequests: Boolean = config.getBoolean("rorschach.close-bad-pull-requests")
}
object Settings extends ExtensionId[SettingsImpl] with ExtensionIdProvider {
override def lookup() = Settings