app/lib/librato/LibratoDeployReporter.scala (35 lines of code) (raw):

package lib.librato import com.madgag.scalagithub.model.PullRequest import io.lemonlabs.uri.Uri import lib.Responsibility.createdByAndMergedByFor import lib.labels.Seen import lib.librato.model.{Annotation, Link} import lib.{EverythingYouWantToKnowAboutACheckpoint, PullRequestCheckpointsStateChangeSummary, RepoLevelDetails, RepoSnapshot, UpdateReporter} import scala.concurrent.{ExecutionContext, Future} class LibratoDeployReporter( librato: LibratoApiClient )(implicit ec: ExecutionContext ) extends UpdateReporter { override def report( repoSnapshot: RepoSnapshot, pr: PullRequest, checkpointsChangeSummary: PullRequestCheckpointsStateChangeSummary ): Unit = Future.traverse(checkpointsChangeSummary.changedByState(Seen)) { checkpoint => report(pr, checkpoint) } private def report(pr: PullRequest, checkpoint: EverythingYouWantToKnowAboutACheckpoint): Future[_] = { librato.createAnnotation(s"${pr.baseRepo.name}.prout", Annotation( title = s"PR #${pr.number} : '${pr.title}' deployed", description = Some(createdByAndMergedByFor(pr).capitalize), start_time = pr.merged_at.map(_.toInstant), end_time = Some(checkpoint.snapshot.time), source = Some(checkpoint.snapshot.checkpoint.name), links = Seq(Link( rel = "github", label = Some(s"PR #${pr.number}"), href = Uri.parse(pr.html_url) )) )) } }