app/lib/labels/PullRequestCheckpointStatus.scala (22 lines of code) (raw):

package lib.labels import lib.Config.Checkpoint sealed trait PullRequestCheckpointStatus extends PullRequestLabel { def labelFor(checkpointName: String) = { name + "-on-" + checkpointName } } object PullRequestCheckpointStatus { val all = Set[PullRequestCheckpointStatus](Seen, Pending, Overdue) def fromLabels(labels: Set[String], checkpoint: Checkpoint): Option[PullRequestCheckpointStatus] = PullRequestCheckpointStatus.all.find(s => labels(s.labelFor(checkpoint.name))) } sealed trait NotSeenOnSite extends PullRequestCheckpointStatus case object Seen extends PullRequestCheckpointStatus { override val defaultColour: String = "bfe5bf" } case object Pending extends NotSeenOnSite { override val defaultColour: String = "ededed" } case object Overdue extends NotSeenOnSite { override val defaultColour: String = "e11d21" }