lib/chef-api/defaults.rb in chef-api-0.5.0 vs lib/chef-api/defaults.rb in chef-api-0.6.0

- old
+ new

@@ -1,6 +1,7 @@ require 'chef-api/version' +require 'json' module ChefAPI module Defaults # Default API endpoint ENDPOINT = 'https://api.opscode.com/'.freeze @@ -17,10 +18,19 @@ def options Hash[Configurable.keys.map { |key| [key, send(key)] }] end # + # The Chef API configuration + # + # @return [Hash] + def config + path = File.expand_path(ENV['CHEF_API_CONFIG'] || '~/.chef-api') + @config ||= File.exist?(path) ? JSON.parse(File.read(path)) : {} + end + + # # The endpoint where the Chef Server lives. This is equivalent to the # +chef_server_url+ in Chef terminology. If you are using Enterprise # Hosted Chef or Enterprise Chef on premise, this endpoint should include # your organization name. For example: # @@ -33,11 +43,11 @@ # https://chef.server.local:4567/ # # @return [String] (default: +https://api.opscode.com/+) # def endpoint - ENV['CHEF_API_ENDPOINT'] || ENDPOINT + ENV['CHEF_API_ENDPOINT'] || config['CHEF_API_ENDPOINT'] || ENDPOINT end # # The flavor of the target Chef Server. There are two possible values: # @@ -50,10 +60,12 @@ # @return [true, false] # def flavor if ENV['CHEF_API_FLAVOR'] ENV['CHEF_API_FLAVOR'].to_sym + elsif config['CHEF_API_FLAVOR'] + config['CHEF_API_FLAVOR'] else endpoint.include?('/organizations') ? :enterprise : :open_source end end @@ -61,90 +73,89 @@ # The User Agent header to send along. # # @return [String] # def user_agent - ENV['CHEF_API_USER_AGENT'] || USER_AGENT + ENV['CHEF_API_USER_AGENT'] || config['CHEF_API_USER_AGENT'] || USER_AGENT end # # The name of the Chef API client. This is the equivalent of # +client_name+ in Chef terminology. In most cases, this is your Chef # username. # # @return [String, nil] # def client - ENV['CHEF_API_CLIENT'] + ENV['CHEF_API_CLIENT'] || config['CHEF_API_CLIENT'] end # # The private key to authentication against the Chef Server. This is # equivalent to the +client_key+ in Chef terminology. This value can # be the client key in plain text or a path to the key on disk. # # @return [String, nil] # def key - ENV['CHEF_API_KEY'] + ENV['CHEF_API_KEY'] || config['CHEF_API_KEY'] end # # The HTTP Proxy server address as a string # # @return [String, nil] # def proxy_address - ENV['CHEF_API_PROXY_ADDRESS'] + ENV['CHEF_API_PROXY_ADDRESS'] || config['CHEF_API_PROXY_ADDRESS'] end # # The HTTP Proxy user password as a string # # @return [String, nil] # def proxy_password - ENV['CHEF_API_PROXY_PASSWORD'] + ENV['CHEF_API_PROXY_PASSWORD'] || config['CHEF_API_PROXY_PASSWORD'] end # # The HTTP Proxy server port as a string # # @return [String, nil] # def proxy_port - ENV['CHEF_API_PROXY_PORT'] + ENV['CHEF_API_PROXY_PORT'] || config['CHEF_API_PROXY_PORT'] end # # The HTTP Proxy server username as a string # # @return [String, nil] # def proxy_username - ENV['CHEF_API_PROXY_USERNAME'] + ENV['CHEF_API_PROXY_USERNAME'] || config['CHEF_API_PROXY_USERNAME'] end # # The path to a pem file on disk for use with a custom SSL verification # # @return [String, nil] # def ssl_pem_file - ENV['CHEF_API_SSL_PEM_FILE'] + ENV['CHEF_API_SSL_PEM_FILE'] || config['CHEF_API_SSL_PEM_FILE'] end # # Verify SSL requests (default: true) # # @return [true, false] # def ssl_verify - if ENV['CHEF_API_SSL_VERIFY'].nil? + if ENV['CHEF_API_SSL_VERIFY'].nil? && config['CHEF_API_SSL_VERIFY'].nil? true else - %w[t y].include?(ENV['CHEF_API_SSL_VERIFY'].downcase[0]) + %w[t y].include?(ENV['CHEF_API_SSL_VERIFY'].downcase[0]) || config['CHEF_API_SSL_VERIFY'] end end - end end end