Sha256: 702b3c8998a87b4ebfdeb623c8f84d31187cc4e5d068730966689d070dcce5c2

Contents?: true

Size: 964 Bytes

Versions: 4

Compression:

Stored size: 964 Bytes

Contents

module GitCompound
  class Component
    module Version
      # Component Gem-like version
      #
      class GemVersion < VersionStrategy
        attr_reader :requirement

        def initialize(repository, requirement)
          raise CompoundSyntaxError, 'Malformed version requirement string' unless
            requirement =~ Gem::Requirement::PATTERN

          @repository  = repository
          @requirement = requirement
        end

        def lastest_version
          matches.first
        end

        def ref
          lastest_version.tag
        end

        def sha
          lastest_version.sha
        end

        def matches
          versions = @repository.versions
          versions.select! { |version| version.matches?(@requirement) }
          versions.sort.reverse
        end

        def reachable?
          matches.any?
        end

        def to_s
          "gem version: #{@requirement}"
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
git_compound-0.1.1 lib/git_compound/component/version/gem_version.rb
git_compound-0.1.0 lib/git_compound/component/version/gem_version.rb
git_compound-0.0.10 lib/git_compound/component/version/gem_version.rb
git_compound-0.0.9 lib/git_compound/component/version/gem_version.rb