Class: Chef::WorkstationConfigLoader
- Inherits:
-
Object
- Object
- Chef::WorkstationConfigLoader
- Defined in:
- lib/chef/workstation_config_loader.rb
Instance Attribute Summary collapse
-
#explicit_config_file ⇒ Object
Path to a config file requested by user, (e.g., via command line option).
Instance Method Summary collapse
- #chef_config_dir ⇒ Object
- #config_location ⇒ Object
-
#env ⇒ Object
(Private API, public for test purposes).
-
#initialize(explicit_config_file, logger = nil) ⇒ WorkstationConfigLoader
constructor
TODO: initialize this with a logger for Chef and Knife.
- #load ⇒ Object
- #no_config_found? ⇒ Boolean
-
#path_exists?(path) ⇒ Boolean
(Private API, public for test purposes).
Constructor Details
#initialize(explicit_config_file, logger = nil) ⇒ WorkstationConfigLoader
TODO: initialize this with a logger for Chef and Knife
32 33 34 35 36 |
# File 'lib/chef/workstation_config_loader.rb', line 32 def initialize(explicit_config_file, logger=nil) @explicit_config_file = explicit_config_file @config_location = nil @logger = logger || NullLogger.new end |
Instance Attribute Details
#explicit_config_file ⇒ Object
Path to a config file requested by user, (e.g., via command line option). Can be nil
29 30 31 |
# File 'lib/chef/workstation_config_loader.rb', line 29 def explicit_config_file @explicit_config_file end |
Instance Method Details
#chef_config_dir ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/chef/workstation_config_loader.rb', line 46 def chef_config_dir if @chef_config_dir.nil? @chef_config_dir = false full_path = working_directory.split(File::SEPARATOR) (full_path.length - 1).downto(0) do |i| candidate_directory = File.join(full_path[0..i] + [".chef" ]) if File.exist?(candidate_directory) && File.directory?(candidate_directory) @chef_config_dir = candidate_directory break end end end @chef_config_dir end |
#config_location ⇒ Object
42 43 44 |
# File 'lib/chef/workstation_config_loader.rb', line 42 def config_location @config_location ||= (explicit_config_file || locate_local_config) end |
#env ⇒ Object
(Private API, public for test purposes)
76 77 78 |
# File 'lib/chef/workstation_config_loader.rb', line 76 def env ENV end |
#load ⇒ Object
61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/chef/workstation_config_loader.rb', line 61 def load # Ignore it if there's no explicit_config_file and can't find one at a # default path. return false if config_location.nil? if explicit_config_file && !path_exists?(config_location) raise Exceptions::ConfigurationError, "Specified config file #{config_location} does not exist" end # Have to set Chef::Config.config_file b/c other config is derived from it. Chef::Config.config_file = config_location read_config(IO.read(config_location), config_location) end |
#no_config_found? ⇒ Boolean
38 39 40 |
# File 'lib/chef/workstation_config_loader.rb', line 38 def no_config_found? config_location.nil? end |
#path_exists?(path) ⇒ Boolean
(Private API, public for test purposes)
81 82 83 |
# File 'lib/chef/workstation_config_loader.rb', line 81 def path_exists?(path) Pathname.new(path)..exist? end |