Class: ChefConfig::WorkstationConfigLoader
- Inherits:
-
Object
- Object
- ChefConfig::WorkstationConfigLoader
- Includes:
- Mixin::DotD
- Defined in:
- lib/chef-config/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).
Methods included from Mixin::DotD
Constructor Details
#initialize(explicit_config_file, logger = nil) ⇒ WorkstationConfigLoader
TODO: initialize this with a logger for Chef and Knife
34 35 36 37 38 39 |
# File 'lib/chef-config/workstation_config_loader.rb', line 34 def initialize(explicit_config_file, logger = nil) @explicit_config_file = explicit_config_file @chef_config_dir = nil @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
31 32 33 |
# File 'lib/chef-config/workstation_config_loader.rb', line 31 def explicit_config_file @explicit_config_file end |
Instance Method Details
#chef_config_dir ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/chef-config/workstation_config_loader.rb', line 49 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
45 46 47 |
# File 'lib/chef-config/workstation_config_loader.rb', line 45 def config_location @config_location ||= (explicit_config_file || locate_local_config) end |
#env ⇒ Object
(Private API, public for test purposes)
81 82 83 |
# File 'lib/chef-config/workstation_config_loader.rb', line 81 def env ENV end |
#load ⇒ Object
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/chef-config/workstation_config_loader.rb', line 64 def load # Ignore it if there's no explicit_config_file and can't find one at a # default path. if !config_location.nil? if explicit_config_file && !path_exists?(config_location) raise ChefConfig::ConfigurationError, "Specified config file #{config_location} does not exist" end # Have to set Config.config_file b/c other config is derived from it. Config.config_file = config_location apply_config(IO.read(config_location), config_location) end load_dot_d(Config[:config_d_dir]) if Config[:config_d_dir] end |
#no_config_found? ⇒ Boolean
41 42 43 |
# File 'lib/chef-config/workstation_config_loader.rb', line 41 def no_config_found? config_location.nil? end |
#path_exists?(path) ⇒ Boolean
(Private API, public for test purposes)
86 87 88 |
# File 'lib/chef-config/workstation_config_loader.rb', line 86 def path_exists?(path) Pathname.new(path)..exist? end |