module Polisher::GemVersions

Public Class Methods

included(base) click to toggle source
# File lib/polisher/gem/versions.rb, line 10
def self.included(base)
  base.extend(ClassMethods)
end

Public Instance Methods

dependency_versions(args = {}, &bl) click to toggle source

Retreive versions of gem available in all configured targets (optionally recursively)

@param [Hash] args hash of options to configure retrieval @option args [Boolean] :recursive indicates if versions of dependencies should also be retrieved @option args [Boolean] :dev_deps indicates if versions of development dependencies should also be retrieved @retrieve versions of all gem dependencies available in configured targets

# File lib/polisher/gem/versions.rb, line 91
def dependency_versions(args = {}, &bl)
  versions   = args[:versions] || {}
  check_deps = args[:dev] ? dev_deps : deps

  check_deps.each do |dep|
    unless versions.key?(dep.name)
      begin
        gem = Polisher::Gem.retrieve(dep.name)
        versions.merge! gem.versions(args, &bl)
      rescue
        unknown = Polisher::VersionChecker.unknown_version(:all, dep.name, &bl)
        versions.merge! dep.name => unknown
      end
    end

    args[:versions] = versions
  end

  versions
end
versions(args = {}, &bl) click to toggle source

(and dependencies if specified)

# File lib/polisher/gem/versions.rb, line 113
def versions(args = {}, &bl)
  local_args = Hash[args]
  recursive  = local_args[:recursive]
  dev_deps   = local_args[:dev_deps]
  versions   = local_args[:versions] || {}

  gem_versions = Polisher::VersionChecker.versions_for(name, &bl)
  versions.merge! name => gem_versions
  local_args[:versions] = versions

  if recursive
    versions.merge! dependency_versions local_args, &bl
    versions.merge! dependency_versions local_args.merge(:dev => true), &bl if dev_deps
  end

  versions
end