Class: Origen::SiteConfig
Constant Summary collapse
- TRUE_VALUES =
['true', 'TRUE', '1', 1]
- FALSE_VALUES =
['false', 'FALSE', '0', 0]
Instance Method Summary collapse
-
#add_as_highest(var, value) ⇒ Object
(also: #[]=)
Dynamically add a new site variable at the highest priority.
-
#add_as_lowest(var, value) ⇒ Object
Dynamically add a new site variable at the lowest priority.
-
#add_site_config_as_highest(site_config_file) ⇒ Object
Adds a new site config file as the highest priority.
-
#add_site_config_as_lowest(site_config_file) ⇒ Object
Adds a new site config file as the highest priority.
- #clear ⇒ Object
- #eval_path(path, options = {}) ⇒ Object
-
#gem_install_dir ⇒ Object
(also: #user_gem_dir)
Gets the gem_intall_dir.
- #get(val) ⇒ Object (also: #[])
- #get_all(val) ⇒ Object
- #home_dir ⇒ Object
- #method_missing(method, *args, &block) ⇒ Object
- #rebuild! ⇒ Object
-
#remove_all_instances(var) ⇒ Object
(also: #purge)
Dynamically remove all the instances of :var.
-
#remove_highest(var) ⇒ Object
Dynamically remove the highest instance of :var.
-
#user_install_dir ⇒ Object
Gets the user_install_dir.
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method, *args, &block) ⇒ Object
122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 |
# File 'lib/origen/site_config.rb', line 122 def method_missing(method, *args, &block) method = method.to_s if method =~ /(.*)!$/ method = Regexp.last_match(1) must_be_present = true end val = find_val(method) if must_be_present && val.nil? puts "No value assigned for site_config attribute '#{method}'" puts fail 'Missing site_config value!' end define_singleton_method(method) do find_val(method) end val end |
Instance Method Details
#add_as_highest(var, value) ⇒ Object Also known as: []=
Dynamically add a new site variable at the highest priority.
97 98 99 100 101 |
# File 'lib/origen/site_config.rb', line 97 def add_as_highest(var, value) # Don't want to override anything, so just shift in a dummy site config instance at the highest level and # set the value there. configs.prepend(var.to_s => value) end |
#add_as_lowest(var, value) ⇒ Object
Dynamically add a new site variable at the lowest priority. Essentially, this sets a new default value.
106 107 108 109 110 |
# File 'lib/origen/site_config.rb', line 106 def add_as_lowest(var, value) # Don't want to override anything, so just shift in a dummy site config at the lowest level and # set the value there. configs.append(var.to_s => value) end |
#add_site_config_as_highest(site_config_file) ⇒ Object
Adds a new site config file as the highest priority
113 114 115 |
# File 'lib/origen/site_config.rb', line 113 def add_site_config_as_highest(site_config_file) configs.prepend YAML.load_file(File.('../../../origen_site_config.yml', __FILE__)) end |
#add_site_config_as_lowest(site_config_file) ⇒ Object
Adds a new site config file as the highest priority
118 119 120 |
# File 'lib/origen/site_config.rb', line 118 def add_site_config_as_lowest(site_config_file) configs.append YAML.load_file(File.('../../../origen_site_config.yml', __FILE__)) end |
#clear ⇒ Object
155 156 157 |
# File 'lib/origen/site_config.rb', line 155 def clear @configs.clear end |
#eval_path(path, options = {}) ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/origen/site_config.rb', line 41 def eval_path(path, = {}) # Expand the first path. This will take care of replacing any leading ~/ with the home directory. if path.start_with?('\\') path[0] = '' else path = File.(path) end # Gsub the remaining ~ that aren't escaped. # If it was escaped, eat the escape character path.gsub!(/(?<!\\|\A)~/, "#{Etc.getlogin}") path.gsub!(/\\(?=~)/, '') append = find_val('append_dot_origen') append = '.origen' if append == true || append.nil? gem_append = find_val('append_gems') gem_append = 'gems' if gem_append == true || gem_append.nil? if append unless path.end_with?(append) || (path.end_with?(File.join(append, gem_append)) if gem_append) path = File.join(path, append) end end path end |
#gem_install_dir ⇒ Object Also known as: user_gem_dir
Gets the gem_intall_dir. This is either site_config.home_dir/gems or the site configs gem_install_dir
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/origen/site_config.rb', line 13 def gem_install_dir if gems_use_tool_repo && tool_repo_install_dir && !user_install_enable path = eval_path(tool_repo_install_dir) else path = eval_path(find_val('user_gem_dir') || find_val('gem_install_dir') || home_dir) end append = find_val('append_gems') append = 'gems' if append == true || append.nil? if append unless path.end_with?(append) path = File.join(path, append) end end path end |
#get(val) ⇒ Object Also known as: []
140 141 142 |
# File 'lib/origen/site_config.rb', line 140 def get(val) find_val(val) end |
#get_all(val) ⇒ Object
145 146 147 148 149 150 151 152 153 |
# File 'lib/origen/site_config.rb', line 145 def get_all(val) ret = [] @configs.each do |c| if c.key?(val) ret << c[val] end end ret end |
#home_dir ⇒ Object
37 38 39 |
# File 'lib/origen/site_config.rb', line 37 def home_dir eval_path(find_val('home_dir') || '~/') end |
#rebuild! ⇒ Object
159 160 161 |
# File 'lib/origen/site_config.rb', line 159 def rebuild! configs! end |
#remove_all_instances(var) ⇒ Object Also known as: purge
Dynamically remove all the instances of :var
81 82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/origen/site_config.rb', line 81 def remove_all_instances(var) # Iterate though all the site configs, removing every instance of :var # Return an array containing the value of :var at each config, # from lowest priority to highest. # If [] is returned, it implies that there was no instancs of :var to be removed. ret = [] @configs.each do |c| if c.key?(var) ret << c.delete(var) end end ret end |
#remove_highest(var) ⇒ Object
Dynamically remove the highest instance of :var
69 70 71 72 73 74 75 76 77 78 |
# File 'lib/origen/site_config.rb', line 69 def remove_highest(var) @configs.each do |c| if c.key?(var) return c.delete(var) end end # return nil if we haven't returned a value yet nil end |
#user_install_dir ⇒ Object
Gets the user_install_dir. Like gem_install_dir, this default to somewhere home_dir, unless overridden
33 34 35 |
# File 'lib/origen/site_config.rb', line 33 def user_install_dir eval_path(find_val('user_install_dir') || home_dir) end |