lib/inch/cli/command/diff.rb
require 'pry'
require 'inch/cli/command/options/diff'
require 'inch/cli/command/output/diff'
module Inch
module CLI
module Command
class Diff < Base
include Utils::ShellHelper
EXIT_STATUS_FAILED = 1
register_command_as :diff
def description
'Shows a diff'
end
def exit_status
@exit_status || super
end
def usage
'Usage: inch diff [REV..[REV]] [options]'
end
def run(*args)
@options.parse(args)
@options.verify
before_rev, after_rev = revisions[0], revisions[1]
diff = API::Diff.new(work_dir, to_config(@options),
before_rev, after_rev)
Output::Diff.new(@options, diff.comparer)
@exit_status = EXIT_STATUS_FAILED if diff.failed?
end
private
# @return [Array<String>] the revisions passed in the command_line
def revisions
@revisions ||= @options.revisions.map do |rev|
next unless rev
git(work_dir, "rev-parse #{rev}").strip
end
end
def work_dir
Dir.pwd
end
end
end
end
end