#!/usr/bin/ruby

require_relative '../lib/gitstatsakido'
require 'optparse'
require 'yaml'

options = {}
OptionParser.new do |opts|
  opts.banner = "    Version 0.1.6 by lei@akidolabs.com\n\nUsage: gitstats [-c ##] [-d ##] [-e (-##|Date)] [-s (-##|Date)]"

  opts.on("-c", "--commits COMMITS", "list # of commits for each author in descending order, ie. 10") do |c|
    options[:commits] = c.to_i
  end

  opts.on("-d", "--days DAYS", "days of commits to evaluate, ie. 5") do |d|
    options[:days] = d.to_f
  end

  opts.on("-s", '--startDate DATE_OR_DAYS', 'include commits starting on (2016-1-31|-100) date or days previous') do |s|
    if s[0] == '-'
      options[:start] = DateTime.now + s.to_i
    else
      options[:start] = DateTime.parse(s)
    end
  end

  opts.on("-e", '--endDate DATE_OR_DAYS', 'include commits ending on (2016-2-28|-3) date or days previous') do |e|
    if e[0] == '-'
      options[:end] = DateTime.now + e.to_i
    else
      options[:end] = DateTime.parse(e)
    end
  end

end.parse!


if options.key?(:days) && options.key?(:start) && options.key?(:end)
  puts "Please specify only up to 2 of start, end, and days"
  raise Exception
end

if !options.key(:start)
  if options.key?(:end) && options.key?(:days)
    options[:start] = options[:end] - options[:days]
  elsif options.key?(:days)
    options[:start] = DateTime.now - options[:days]
  end
end
if !options.key?(:end)
  if options.key?(:start) && options.key?(:days)
    options[:end] = options[:start] + options[:days]
  end
end

runme = GitstatsAkido::Stats.new

runme.print_info(options[:start], options[:end])
if options.key?(:commits)
  runme.print_commits(options[:commits], options[:start], options[:end])
end