#!/usr/bin/ruby require 'time' commit_file = ARGV[0] branch = `git branch | grep '*'`.strip.split(/\s/)[1] elapsed_time = 0 state = "out" last_time = 0 if File.exists?(".git/timelogs/#{branch}") open(".git/timelogs/#{branch}") do |file| file.each_line do |line| in_out = line.split(/\s/)[0] time = Time.iso8601(line.split(/\s/)[1]) unless state == in_out state = in_out if in_out == 'in' last_time = time else elapsed_time += time - last_time unless last_time == 0 end end end end if state == "in" elapsed_time += Time.now - last_time unless last_time == 0 end if commit_file open(commit_file, "a") do |file| file.puts "This commit took #{(elapsed_time/60.0 > 60) ? sprintf('%.2f', (elapsed_time/3600.0)) + " hours" : sprintf('%.2f', (elapsed_time/60.0)) + " minutes"}" end else puts "This commit took #{(elapsed_time/60.0 > 60) ? sprintf('%.2f', (elapsed_time/3600.0)) + " hours" : sprintf('%.2f', (elapsed_time/60.0)) + " minutes"}" end end open(".git/timelogs/#{branch}", "w") do |file| file.puts "in #{Time.now.iso8601}" end