vagrant/plugins/provisioners/chef/config/base.rb

67 lines
1.7 KiB
Ruby
Raw Normal View History

require "vagrant/util/counter"
2013-01-14 00:41:32 +00:00
module VagrantPlugins
module Chef
module Config
class Base < Vagrant.plugin("2", :config)
extend Vagrant::Util::Counter
# The path to Chef's bin/ directory.
# @return [String]
2013-04-15 19:08:08 +00:00
attr_accessor :binary_path
# Arbitrary environment variables to set before running the Chef
# provisioner command.
# @return [String]
2013-04-15 19:08:08 +00:00
attr_accessor :binary_env
# The Chef log level. See the Chef docs for acceptable values.
# @return [String, Symbol]
2013-04-15 19:08:08 +00:00
attr_accessor :log_level
2013-04-15 19:08:08 +00:00
def initialize
super
2013-01-14 00:41:32 +00:00
@binary_path = UNSET_VALUE
@binary_env = UNSET_VALUE
@log_level = UNSET_VALUE
end
2013-04-15 19:08:08 +00:00
def finalize!
@binary_path = nil if @binary_path == UNSET_VALUE
@binary_env = nil if @binary_env == UNSET_VALUE
@log_level = :info if @log_level == UNSET_VALUE
2013-04-15 19:08:08 +00:00
# Make sure the version is a symbol if it's not a boolean
if @version.respond_to?(:to_sym)
@version = @version.to_sym
end
2013-04-15 19:08:08 +00:00
# Make sure the log level is a symbol
@log_level = @log_level.to_sym
end
# Like validate, but returns a list of errors to append.
#
# @return [Array<String>]
def validate_base(machine)
errors = _detected_errors
if missing?(log_level)
errors << I18n.t("vagrant.provisioners.chef.log_level_empty")
end
errors
end
# Determine if the given string is "missing" (blank)
# @return [true, false]
def missing?(obj)
obj.to_s.strip.empty?
2013-01-14 00:41:32 +00:00
end
end
end
end
end