app/lib/Responsibility.scala (20 lines of code) (raw):

package lib import java.time.Instant.now import com.madgag.scalagithub.model.PullRequest import com.madgag.time.Implicits._ import com.typesafe.scalalogging.LazyLogging import org.joda.time.format.{PeriodFormat, PeriodFormatter} object Responsibility extends LazyLogging { val pf: PeriodFormatter = PeriodFormat.getDefault def responsibilityAndRecencyFor(pr: PullRequest): String = { val mergeToNow = java.time.Duration.between(pr.merged_at.get.toInstant, now) val timeSinceMerge = mergeToNow.toPeriod().withMillis(0).toString(pf) logger.info(s"mergedByOpt=${pr.merged_by} merged_at=${pr.merged_at}") s"${createdByAndMergedByFor(pr)} $timeSinceMerge ago" } def createdByAndMergedByFor(pr: PullRequest): String = { val mergedByOpt = pr.merged_by val mergedByText = s"merged by ${mergedByOpt.get.atLogin}" if (pr.user.id == mergedByOpt.get.id) mergedByText else s"created by ${pr.user.atLogin} and $mergedByText" } }