class Gem::Commands::LockCommand

def execute

def execute
  say "require 'rubygems'"
  locked = {}
  pending = options[:args]
  until pending.empty? do
    full_name = pending.shift
    spec = Gem::Specification.load spec_path(full_name)
    if spec.nil? then
      complain "Could not find gem #{full_name}, try using the full name"
      next
    end
    say "gem '#{spec.name}', '= #{spec.version}'" unless locked[spec.name]
    locked[spec.name] = true
    spec.runtime_dependencies.each do |dep|
      next if locked[dep.name]
      candidates = dep.matching_specs
      if candidates.empty? then
        complain "Unable to satisfy '#{dep}' from currently installed gems"
      else
        pending << candidates.last.full_name
      end
    end
  end
end