Sha256: de72c0fa62d4c725007e0b2517895d44967819483ae859ed1085731cbc283b5f

Contents?: true

Size: 823 Bytes

Versions: 3

Compression:

Stored size: 823 Bytes

Contents

require_relative 'null_filter'

module KeepUp
  # Apply potential updates to a Gemfile.
  class Updater
    attr_reader :bundle, :repository, :version_control, :filter

    def initialize(bundle:, repository:, version_control:, filter: NullFilter.new)
      @bundle = bundle
      @repository = repository
      @version_control = version_control
      @filter = filter
    end

    def run
      possible_updates.each do |update|
        result = bundle.apply_updated_dependency update
        if result
          version_control.commit_changes result
        else
          version_control.revert_changes
        end
      end
    end

    def possible_updates
      bundle.dependencies.
        select { |dep| filter.call dep }.
        map { |dep| repository.updated_dependency_for dep }.compact.uniq
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
keep_up-0.6.3 lib/keep_up/updater.rb
keep_up-0.6.2 lib/keep_up/updater.rb
keep_up-0.6.1 lib/keep_up/updater.rb