module Git::Modified

Constants

VERSION

Public Class Methods

latest_hash() click to toggle source
# File lib/git/modified.rb, line 44
def self.latest_hash
  `git log --pretty=format:'%h' -n 1`
end
modified(hash = nil) click to toggle source
# File lib/git/modified.rb, line 18
def self.modified(hash = nil)
  if hash.nil?
    show_modified_files_on_working_tree
  else
    show_modified_files_on_commit hash
  end
end
run() click to toggle source
# File lib/git/modified.rb, line 5
def self.run
  case ARGV.first
  when '-v', '--version'
    version
  else
    modified ARGV.first
  end
end
show_modified_files_on_commit(hash) click to toggle source
# File lib/git/modified.rb, line 34
def self.show_modified_files_on_commit(hash)
  hashes = `git show --summary --format="%P" #{hash} | head -n 1`.split ' '

  if hashes.size == 2
    puts `git diff --name-only #{hashes[0]}...#{hashes[1]}`
  else
    puts `git log -m -1 --name-only --pretty="format:" #{hash}`
  end
end
show_modified_files_on_working_tree() click to toggle source
# File lib/git/modified.rb, line 26
def self.show_modified_files_on_working_tree
  puts `git status --short` \
    .each_line \
    .reject { |line| line[0..1].split('').lazy.any? { |x| x == 'D' } } \
    .reject { |line| line.match /\.(jpe?g|png|gif|svg|eot|mp3|ttf|wav|wof)$/i } \
    .map    { |line| if line[0] == 'R' then line.split(' ')[-1] else line[3..-1] end }
end
version() click to toggle source
# File lib/git/modified.rb, line 14
def self.version
  puts Git::Modified::VERSION
end