Sha256: 3f13b1cbde57a6407bbf3186783413247fec6e73f8e649f4a7471dddd810de52

Contents?: true

Size: 999 Bytes

Versions: 4

Compression:

Stored size: 999 Bytes

Contents

module KeepUp
  # Single dependency with its current locked version.
  class Dependency
    def initialize(dependency:, locked_spec:)
      @dependency = dependency
      @locked_spec = locked_spec
    end

    def name
      @dependency.name
    end

    def locked_version
      @locked_spec.version
    end

    def matches_spec?(spec)
      @dependency.matches_spec? spec
    end

    def generalize_specification(specification)
      return specification if requirement.exact?
      segments = specification.version.segments
      return specification if segments.count <= segment_count
      version = segments.take(segment_count).join('.')
      Gem::Specification.new(specification.name, version)
    end

    private

    def requirement
      @dependency.requirement
    end

    def segment_count
      @segment_count ||= begin
                           _, ver = requirement.requirements.first
                           ver.segments.count
                         end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
keep_up-0.6.1 lib/keep_up/dependency.rb
keep_up-0.6.0 lib/keep_up/dependency.rb
keep_up-0.5.1 lib/keep_up/dependency.rb
keep_up-0.5.0 lib/keep_up/dependency.rb