Sha256: 532abdb662f8cbd8ec2e59885827aa2ea5a2fe6694818734e16c4ec71828856d

Contents?: true

Size: 1.11 KB

Versions: 2

Compression:

Stored size: 1.11 KB

Contents

require 'pry'
require_relative 'options/diff'
require_relative 'output/diff'

module Inch
  module CLI
    module Command
      class Diff < Base
        register_command_as :diff

        def description
          'Shows a diff'
        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, before_rev, after_rev)

          Output::Diff.new(@options, diff.comparer)
        end

        private

        def git(dir, command)
          old_pwd = Dir.pwd
          Dir.chdir dir
          out = `git #{command}`
          Dir.chdir old_pwd
          out
        end

        # @return [Array<String>] the revisions passed in the command_line
        def revisions
          @revisions ||= @options.revisions.map do |rev|
            if rev
              git(work_dir, "rev-parse #{rev}").strip
            end
          end
        end

        def work_dir
          Dir.pwd
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
inch-0.4.0.rc2 lib/inch/cli/command/diff.rb
inch-0.4.0.rc1 lib/inch/cli/command/diff.rb