Add Chef::Config#install and Chef::Config#version options

This commit is contained in:
Seth Vargo 2014-10-31 14:22:24 -04:00
parent 8f35ecaa6f
commit a8fa4bccc7
1 changed files with 28 additions and 0 deletions

View File

@ -15,23 +15,51 @@ module VagrantPlugins
# @return [String]
attr_accessor :binary_env
# Install Chef on the system if it does not exist. Default is true.
# This is a trinary attribute (it can have three values):
#
# - true (bool) install Chef
# - false (bool) do not install Chef
# - "force" (string) install Chef, even if it is already installed at
# the proper version
#
# @return [true, false, String]
attr_accessor :install
# The Chef log level. See the Chef docs for acceptable values.
# @return [String, Symbol]
attr_accessor :log_level
# The version of Chef to install. If Chef is already installed on the
# system, the installed version is compared with the requested version.
# If they match, no action is taken. If they do not match, version of
# the value specified in this attribute will be installed over top of
# the existing version (a warning will be displayed).
#
# You can also specify "latest" (default), which will install the latest
# version of Chef on the system. In this case, Chef will use whatever
# version is on the system. To force the newest version of Chef to be
# installed on every provision, set the {#install} option to "force".
#
# @return [String]
attr_accessor :version
def initialize
super
@binary_path = UNSET_VALUE
@binary_env = UNSET_VALUE
@install = UNSET_VALUE
@log_level = UNSET_VALUE
@version = UNSET_VALUE
end
def finalize!
@binary_path = nil if @binary_path == UNSET_VALUE
@binary_env = nil if @binary_env == UNSET_VALUE
@install = true if @install == UNSET_VALUE
@log_level = :info if @log_level == UNSET_VALUE
@version = :latest if @version == UNSET_VALUE
# Make sure the version is a symbol if it's not a boolean
if @version.respond_to?(:to_sym)