def execute
say 'require "rubygems"'
locked = {}
pending = options[:args]
until pending.empty? do
full_name = pending.shift
spec = Gem::SourceIndex.load_specification spec_path(full_name)
say "gem '#{spec.name}', '= #{spec.version}'" unless locked[spec.name]
locked[spec.name] = true
spec.dependencies.each do |dep|
next if locked[dep.name]
candidates = Gem.source_index.search dep.name, dep.requirement_list
if candidates.empty? then
complain "Unable to satisfy '#{dep}' from currently installed gems."
else
pending << candidates.last.full_name
end
end
end
end