module Polisher::GemVersions::ClassMethods

Public Instance Methods

earliest_version_matching(dep) click to toggle source

Retrieve earliest version matching dep

# File lib/polisher/gem/versions.rb, line 59
def earliest_version_matching(dep)
  version = versions_matching(dep).collect { |v| ::Gem::Version.new v }.min
  version.nil? ? nil : version.to_s
end
latest_version_in_target(name, target) click to toggle source

Return latest version of gem in target

# File lib/polisher/gem/versions.rb, line 78
def latest_version_in_target(name, target)
  versions_in_target(name, target).collect { |v| ::Gem::Version.new v }.max
end
latest_version_matching(dep) click to toggle source

Retrieve latest version matching dep

# File lib/polisher/gem/versions.rb, line 53
def latest_version_matching(dep)
  version = versions_matching(dep).collect { |v| ::Gem::Version.new v }.max
  version.nil? ? nil : version.to_s
end
latest_version_of(name) click to toggle source

Retieve latest version of gem available on rubygems

# File lib/polisher/gem/versions.rb, line 41
def latest_version_of(name)
  remote_versions_for(name).collect { |v| ::Gem::Version.new v }.max.to_s
end
local_versions_for(name, &bl) click to toggle source

Retrieve list of the versions of the specified gem installed locally

@param [String] name name of the gem to lookup @param [Callable] bl optional block to invoke with versions retrieved @return [Array<String>] list of versions of gem installed locally

# File lib/polisher/gem/versions.rb, line 20
def local_versions_for(name, &bl)
  silence_warnings do
    @local_db ||= ::Gem::Specification.all
  end
  versions = @local_db.select { |s| s.name == name }.collect { |s| s.version }
  bl.call(:local_gem, name, versions) unless bl.nil?
  versions
end
remote_versions_for(name) click to toggle source

Retrieve all versions of gem available on rubygems

# File lib/polisher/gem/versions.rb, line 30
def remote_versions_for(name)
  require 'json'

  client.url = "https://rubygems.org/api/v1/versions/#{name}.json"
  client.follow_location = true
  client.http_get
  json = JSON.parse(client.body_str)
  json.collect { |version| version['number'] }
end
version_matching_target(dep, target) click to toggle source

Retrieve version of gem matching target

# File lib/polisher/gem/versions.rb, line 65
def version_matching_target(dep, target)
  version = versions_in_target(dep.name, target).select  { |v| dep.match? dep.name, v }
                                                .collect { |v|   ::Gem::Version.new v }.max
  version.nil? ? nil : version.to_s
end
versions_in_target(name, target) click to toggle source

Return versions of gem in target

# File lib/polisher/gem/versions.rb, line 72
def versions_in_target(name, target)
  require 'polisher/targets'
  Polisher.target(target).versions_for(name)
end
versions_matching(dep) click to toggle source

Retrieve versions matching dependency

# File lib/polisher/gem/versions.rb, line 46
def versions_matching(dep)
  remote_versions_for(dep.name).select { |v|
    dep.match? dep.name, v
  }
end