class KeepUp::Updater
Apply potential updates to a Gemfile.
Attributes
bundle[R]
filter[R]
version_control[R]
Public Class Methods
new(bundle:, version_control:, filter: NullFilter.new, out: $stdout)
click to toggle source
# File lib/keep_up/updater.rb, line 10 def initialize(bundle:, version_control:, filter: NullFilter.new, out: $stdout) @bundle = bundle @version_control = version_control @filter = filter @out = out end
Public Instance Methods
possible_updates()
click to toggle source
# File lib/keep_up/updater.rb, line 29 def possible_updates bundle.dependencies .select { |dep| filter.call dep } .map { |dep| updated_dependency_for dep }.compact.uniq end
run()
click to toggle source
# File lib/keep_up/updater.rb, line 18 def run possible_updates.each do |update| result = apply_updated_dependency update if result version_control.commit_changes result else version_control.revert_changes end end end
Private Instance Methods
apply_updated_dependency(dependency)
click to toggle source
# File lib/keep_up/updater.rb, line 37 def apply_updated_dependency(dependency) report_intent dependency bundle.update_gemfile_contents(dependency) bundle.update_gemspec_contents(dependency) result = bundle.update_lockfile(dependency) report_result dependency, result result end
report_intent(dependency)
click to toggle source
# File lib/keep_up/updater.rb, line 46 def report_intent(dependency) @out.print "Updating #{dependency.name}" end
report_result(dependency, result)
click to toggle source
# File lib/keep_up/updater.rb, line 50 def report_result(dependency, result) if result @out.puts " to #{result.version}" else @out.puts " to #{dependency.version}" @out.puts "Update failed" end end
updated_dependency_for(dependency)
click to toggle source
# File lib/keep_up/updater.rb, line 59 def updated_dependency_for(dependency) locked_version = dependency.locked_version newest_version = dependency.newest_version return unless newest_version > locked_version Gem::Specification.new(dependency.name, newest_version) end