#!/usr/bin/env ruby require 'method_log' require 'trollop' options = Trollop::options do opt :patch, 'Generate patch.', short: 'p' opt :ruby_version, 'Parser Ruby version (18, 19, 20, 21)', default: 'current' opt :max_count, 'Limit the number of commits to output.', type: :integer, short: 'n' opt :stop_at_latest_introduction_of_method, 'Stop at lastest introduction of method.', default: true end case ruby_version = options[:ruby_version] when 'current' require 'parser/current' when '18', '19', '20', '21' require 'parser/ruby18' require 'parser/ruby19' require 'parser/ruby20' require 'parser/ruby21' Parser::CurrentRuby = Parser.const_get("Ruby#{ruby_version}") else raise "Ruby version not supported: #{ruby_version}" end require 'method_log' require 'method_log/repository' require 'method_log/api' repository = MethodLog::Repository.new(Dir.pwd) api = MethodLog::API.new(repository) api.diffs(ARGV[0], options).each do |method_commit, method_diff| puts "commit #{method_commit.sha}" puts "Author: #{method_commit.author[:name]} <#{method_commit.author[:email]}>" puts "Date: #{method_commit.author[:time].strftime('%a %b %-e %T %Y %z')}" puts puts method_commit.message puts if options[:patch] puts method_diff.to_s(:color) puts end end