module Polisher::GemDependencies

Public Instance Methods

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

Retrieve map of gems to dependencies (optionally recursively)

# File lib/polisher/gem/dependencies.rb, line 11
def dependency_tree(args = {}, &bl)
  local_args        = Hash[args]
  recursive         = local_args[:recursive]
  retrieve_dev_deps = local_args[:dev_deps]
  matching          = local_args[:matching]
  dependencies      = local_args[:dependencies] || {}
  return dependencies if dependencies.key?(name) && dependencies[name].key?(version)

  dependencies[name]          ||= {}
  dependencies[name][version]   = deps + dev_deps
  args[:dependencies]           = dependencies

  resolved_deps = resolve_tree_deps(args.merge({:deps => deps}),     &bl)
  resolved_dev  = retrieve_dev_deps ? resolve_tree_deps(args.merge({:deps => dev_deps}), &bl) : []

  (resolved_deps + resolved_dev).each { |dep|
    dependencies.merge! dep.dependency_tree(args, &bl)
    args[:dependencies] = dependencies
  } if recursive

  return dependencies
end

Private Instance Methods

resolve_tree_dep(args = {}, &bl) click to toggle source
# File lib/polisher/gem/dependencies.rb, line 43
def resolve_tree_dep(args = {}, &bl)
  dep          = args[:dep]
  matching     = args[:matching]

  resolved = nil
  begin
    resolved = Polisher::Gem.matching(dep, matching)
  rescue
  end
  bl.call self, dep, resolved

  return resolved unless resolved.nil?

  begin
    Polisher::Gem.latest_matching(dep)
  rescue
    Polisher::Gem.retrieve_latest(dep.name)
  end
end
resolve_tree_deps(args = {}, &bl) click to toggle source
# File lib/polisher/gem/dependencies.rb, line 36
def resolve_tree_deps(args = {}, &bl)
  deps = args[:deps]
  deps.collect { |dep|
    resolve_tree_dep args.merge({:dep => dep}), &bl
  }
end