#! /usr/bin/env Rscript
# vim: filetype=r:

ParseDates <- function(lines) {
  dates <- matrix(unlist(strsplit(lines, " +")), ncol=6, byrow=TRUE)
  days  <- dates[,1]
  times <- dates[,4]
  hours <- matrix(unlist(strsplit(times, ":")), ncol=3, byrow=TRUE)[,1]
  all.days  <- c("Sun", "Sat", "Fri", "Thu", "Wed", "Tue", "Mon")
  all.hours <- 0:23
  data.frame( Day  = factor(days , levels=all.days)
            , Hour = factor(hours, levels=all.hours)
            )
}

Main <- function() {
  lines <- system("git log --format=%ad", intern=TRUE)
  punchcard <- as.data.frame(table(ParseDates(lines)))
  punchcard <-
    ( ggplot2::ggplot(punchcard, ggplot2::aes(y=Day, x=Hour))
    + ggplot2::geom_point(ggplot2::aes(size=Freq))
    + ggplot2::scale_size(range=c(0, 15))
    )
  ggplot2::ggsave( filename = "punchcard.png"
                 , plot     = punchcard
                 , width    = 10
                 , height   = 5
                 )
}

Main()
