plugins/kernel_v2/config/vagrant.rb in vagrant-unbundled-2.2.3.0 vs plugins/kernel_v2/config/vagrant.rb in vagrant-unbundled-2.2.4.0
- old
+ new
@@ -5,11 +5,12 @@
class VagrantConfig < Vagrant.plugin("2", :config)
attr_accessor :host
attr_accessor :sensitive
attr_accessor :plugins
- VALID_PLUGIN_KEYS = [:sources, :version, :entry_point].freeze
+ VALID_PLUGIN_KEYS = ["sources", "version", "entry_point"].map(&:freeze).freeze
+ INVALID_PLUGIN_FORMAT = :invalid_plugin_format
def initialize
@host = UNSET_VALUE
@sensitive = UNSET_VALUE
@plugins = UNSET_VALUE
@@ -41,17 +42,25 @@
if @sensitive && (!@sensitive.is_a?(Array) && !@sensitive.is_a?(String))
errors << I18n.t("vagrant.config.root.sensitive_bad_type")
end
- @plugins.each do |plugin_name, plugin_info|
- invalid_keys = plugin_info.keys - VALID_PLUGIN_KEYS
- if !invalid_keys.empty?
- errors << I18n.t("vagrant.config.root.plugins_bad_key",
- plugin_name: plugin_name,
- plugin_key: invalid_keys.join(", ")
- )
+ if @plugins == INVALID_PLUGIN_FORMAT
+ errors << I18n.t("vagrant.config.root.plugins_invalid_format")
+ else
+ @plugins.each do |plugin_name, plugin_info|
+ if plugin_info.is_a?(Hash)
+ invalid_keys = plugin_info.keys - VALID_PLUGIN_KEYS
+ if !invalid_keys.empty?
+ errors << I18n.t("vagrant.config.root.plugins_bad_key",
+ plugin_name: plugin_name,
+ plugin_key: invalid_keys.join(", ")
+ )
+ end
+ else
+ errors << I18n.t("vagrant.config.root.plugins_invalid_format")
+ end
end
end
{"vagrant" => errors}
end
@@ -59,21 +68,29 @@
def to_s
"Vagrant"
end
def format_plugins(val)
- result = case val
- when String
- {val => {}}
- when Array
- Hash[val.map{|item| [item.to_s, {}]}]
- else
- val
- end
- result.keys.each do |key|
- result[key] = Hash[result[key].map{|k,v| [k.to_sym, v]}]
+ case val
+ when String
+ {val => Vagrant::Util::HashWithIndifferentAccess.new}
+ when Array
+ val.inject(Vagrant::Util::HashWithIndifferentAccess.new) { |memo, item|
+ memo.merge(format_plugins(item))
+ }
+ when Hash
+ Vagrant::Util::HashWithIndifferentAccess.new.tap { |h|
+ val.each_pair { |k, v|
+ if v.is_a?(Hash)
+ h[k] = Vagrant::Util::HashWithIndifferentAccess.new(v)
+ else
+ h[k] = v
+ end
+ }
+ }
+ else
+ INVALID_PLUGIN_FORMAT
end
- result
end
end
end
end