module Gitalytics

Constants

OUTPUT_FILE
VERSION

Public Instance Methods

analyze(options) click to toggle source
# File lib/gitalytics.rb, line 15
def analyze(options)
  data = GitLog.parse_git_log(options[:group_by])

  case options[:format]
  when 'html'
    output_html_report(data, options[:browser])
  else
    output_cli_report(data[:users])
  end
end
open_report_in_browser() click to toggle source
# File lib/gitalytics.rb, line 57
def open_report_in_browser
  case RbConfig::CONFIG['host_os']
  when /mswin|mingw|cygwin/
    system "start #{OUTPUT_FILE}"
  when /darwin/
    system "open #{OUTPUT_FILE}"
  when /linux|bsd/
    system "xdg-open #{OUTPUT_FILE}"
  end
end
output_cli_report(users) click to toggle source
# File lib/gitalytics.rb, line 30
def output_cli_report(users)
  users.each do |user|
    puts user.summary
  end
end
output_html_report(data, open_in_browser) click to toggle source
# File lib/gitalytics.rb, line 49
def output_html_report(data, open_in_browser)
  File.open(OUTPUT_FILE, 'w+') do |file|
    prepare_data(data)
    file.write(Haml::Engine.new(template_file).render(self))
  end
  open_report_in_browser if open_in_browser
end
prepare_data(data) click to toggle source
# File lib/gitalytics.rb, line 36
def prepare_data(data)
  @users = data[:users].sort { |x, y| y.commits.length <=> x.commits.length }
  @commits = data[:commits]
  weekday_commits = @users.map(&:weekday_commits)
  @weekday_commits = weekday_commits.map { |a| Vector[*a] }.inject(:+).to_a
end
template_file() click to toggle source
# File lib/gitalytics.rb, line 43
def template_file
  dir           = File.dirname(__FILE__)
  filepath      = File.join(dir, '..', 'assets', 'gitalytics.html.haml')
  File.read(filepath)
end