class Gemdiff::GemUpdater

Attributes

name[R]

Public Class Methods

new(name) click to toggle source
# File lib/gemdiff/gem_updater.rb, line 7
def initialize(name)
  @name = name
end

Public Instance Methods

clean?() click to toggle source
# File lib/gemdiff/gem_updater.rb, line 31
def clean?
  git_diff.empty?
end
commit() click to toggle source
# File lib/gemdiff/gem_updater.rb, line 23
def commit
  git_commit
end
diff() click to toggle source
# File lib/gemdiff/gem_updater.rb, line 15
def diff
  git_diff
end
reset() click to toggle source
# File lib/gemdiff/gem_updater.rb, line 27
def reset
  git_reset
end
show() click to toggle source
# File lib/gemdiff/gem_updater.rb, line 19
def show
  git_show
end
update() click to toggle source
# File lib/gemdiff/gem_updater.rb, line 11
def update
  bundle_update
end

Private Instance Methods

bundle_update() click to toggle source
# File lib/gemdiff/gem_updater.rb, line 88
def bundle_update
  `bundle update #{name}`
end
commit_message() click to toggle source
# File lib/gemdiff/gem_updater.rb, line 74
def commit_message
  new_version = version(git_added_line)
  outdated = OutdatedGem.new(name, new_version, version(git_removed_line))
  "Update #{name} to #{new_version}\n\n#{outdated.compare_url}"
end
git_add_and_commit_lockfile() click to toggle source
# File lib/gemdiff/gem_updater.rb, line 80
def git_add_and_commit_lockfile
  `git add Gemfile.lock && git commit -m '#{commit_message}'`
end
git_added_line() click to toggle source

example returns: + rails (4.2.3) or + sass-rails (4.0.3) + sass-rails or + activejob (= 4.2.3) + activejob (4.2.3) + activejob (= 4.2.3)

# File lib/gemdiff/gem_updater.rb, line 64
def git_added_line
  @git_added_line ||= `git diff | grep ' #{name} (' | grep '+  '`
end
git_commit() click to toggle source
# File lib/gemdiff/gem_updater.rb, line 45
def git_commit
  return false if git_added_line.empty?
  git_add_and_commit_lockfile
  true
end
git_diff() click to toggle source
# File lib/gemdiff/gem_updater.rb, line 41
def git_diff
  `git diff`
end
git_removed_line() click to toggle source

example returns:

  • json (1.8.1)

# File lib/gemdiff/gem_updater.rb, line 70
def git_removed_line
  `git diff | grep ' #{name} (' | grep '\\-  '`
end
git_reset() click to toggle source
# File lib/gemdiff/gem_updater.rb, line 84
def git_reset
  `git checkout Gemfile.lock`
end
git_show() click to toggle source
# File lib/gemdiff/gem_updater.rb, line 37
def git_show
  `git show`
end
version(changed_line) click to toggle source
# File lib/gemdiff/gem_updater.rb, line 51
def version(changed_line)
  changed_line.split("\n").first.split.last.gsub(/[()]/, "")
end