def configure_chef
unless config[:config_file]
candidate_configs = []
if ENV['KNIFE_HOME']
candidate_configs << File.join(ENV['KNIFE_HOME'], 'knife.rb')
end
if Dir.pwd
candidate_configs << File.join(Dir.pwd, 'knife.rb')
end
if self.class.chef_config_dir
candidate_configs << File.join(self.class.chef_config_dir, 'knife.rb')
end
if ENV['HOME']
candidate_configs << File.join(ENV['HOME'], '.chef', 'knife.rb')
end
candidate_configs.each do | candidate_config |
candidate_config = File.expand_path(candidate_config)
if File.exist?(candidate_config)
config[:config_file] = candidate_config
break
end
end
end
if config[:config_file]
read_config_file(config[:config_file])
else
Chef::Config[:color] = config[:color]
ui.warn("No knife configuration file found")
end
Chef::Config[:color] = config[:color]
case Chef::Config[:verbosity]
when 0
Chef::Config[:log_level] = :error
when 1
Chef::Config[:log_level] = :info
else
Chef::Config[:log_level] = :debug
end
Chef::Config[:node_name] = config[:node_name] if config[:node_name]
Chef::Config[:client_key] = config[:client_key] if config[:client_key]
Chef::Config[:chef_server_url] = config[:chef_server_url] if config[:chef_server_url]
Chef::Config[:environment] = config[:environment] if config[:environment]
if Chef::Config[:client_key] && config[:config_file]
Chef::Config[:client_key] = File.expand_path(Chef::Config[:client_key], File.dirname(config[:config_file]))
end
Mixlib::Log::Formatter.show_time = false
Chef::Log.init(Chef::Config[:log_location])
Chef::Log.level(Chef::Config[:log_level] || :error)
Chef::Log.debug("Using configuration from #{config[:config_file]}")
if Chef::Config[:node_name] && Chef::Config[:node_name].bytesize > 90
Chef::Config[:authentication_protocol_version] = "1.1"
end
end