vagrant plugin list works properly with isolated gem env

This commit is contained in:
Mitchell Hashimoto 2013-03-01 12:14:12 -08:00
parent b482870173
commit bfc8c62ffe
1 changed files with 12 additions and 14 deletions

View File

@ -20,23 +20,21 @@ module VagrantPlugins
# Get the list of installed plugins according to the state file # Get the list of installed plugins according to the state file
installed = Set.new(env[:plugin_state_file].installed_plugins) installed = Set.new(env[:plugin_state_file].installed_plugins)
# Get the actual specifications of installed gems # Go through the plugins installed in this environment and
specs = env[:gem_helper].with_environment do # get the latest version of each.
Gem::Specification.find_all
end
# Get the latest version of the installed plugins
installed_map = {} installed_map = {}
specs.each do |spec| env[:gem_helper].with_environment do
# Ignore specs that aren't in our installed list Gem::Specification.find_all.each do |spec|
next if !installed.include?(spec.name) # Ignore specs that aren't in our installed list
next if !installed.include?(spec.name)
# If we already have a newer version in our list of installed, # If we already have a newer version in our list of installed,
# then ignore it # then ignore it
next if installed_map.has_key?(spec.name) && next if installed_map.has_key?(spec.name) &&
installed_map[spec.name].version >= spec.version installed_map[spec.name].version >= spec.version
installed_map[spec.name] = spec installed_map[spec.name] = spec
end
end end
# Output! # Output!