Class: Docman::Config
- Inherits:
- 
      Hash
      
        - Object
- Hash
- Docman::Config
 
- Defined in:
- lib/docman/config.rb
Instance Attribute Summary collapse
- 
  
    
      #unmutable_config  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    Returns the value of attribute unmutable_config. 
Instance Method Summary collapse
- #assign_to_self ⇒ Object
- #config_hash ⇒ Object
- 
  
    
      #initialize(file)  ⇒ Config 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    A new instance of Config. 
- #merge_config_from_file(docroot_config_dir, config_file, options = nil) ⇒ Object
- #merge_scenarios_configs(config, temp_config = {}, scenarios_path, current_scenario_source_name) ⇒ Object
- #version ⇒ Object
Constructor Details
#initialize(file) ⇒ Config
Returns a new instance of Config.
| 13 14 15 16 17 18 | # File 'lib/docman/config.rb', line 13 def initialize(file) super @config = YAML::load_file(file) @loaded_scenario_sources = {} assign_to_self end | 
Instance Attribute Details
#unmutable_config ⇒ Object (readonly)
Returns the value of attribute unmutable_config.
| 9 10 11 | # File 'lib/docman/config.rb', line 9 def unmutable_config @unmutable_config end | 
Instance Method Details
#assign_to_self ⇒ Object
| 20 21 22 23 24 25 | # File 'lib/docman/config.rb', line 20 def assign_to_self @config.each_pair do |k, v| self[k] = v end @unmutable_config = Marshal::load(Marshal.dump(@config)) end | 
#config_hash ⇒ Object
| 98 99 100 | # File 'lib/docman/config.rb', line 98 def config_hash Digest::MD5.hexdigest(Marshal::dump(@unmutable_config)) end | 
#merge_config_from_file(docroot_config_dir, config_file, options = nil) ⇒ Object
| 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | # File 'lib/docman/config.rb', line 27 def merge_config_from_file(docroot_config_dir, config_file, = nil) file = File.join(docroot_config_dir, config_file) if File.file?(file) config = YAML::load_file(file) if config['scenarios'] scenarios_path = File.join(docroot_config_dir, '/../', 'scenarios') `rm -fR #{scenarios_path}` if File.directory? scenarios_path `mkdir -p scenarios_path` unless config['scenarioSources'] config['scenarioSources'] = {} end config['scenarioSources']['root_config'] = {} config['scenarioSources']['root_config']['dir'] = docroot_config_dir @loaded_scenario_sources['root_config'] = config['scenarioSources']['root_config'] config = merge_scenarios_configs(config, {}, scenarios_path, 'root_config') end end unless config.nil? unless config['override_docman_default'].nil? self.clear @config = config else @config.deep_merge!(config) end @config['version'] = config['version'].nil? ? 1 : config['version'] end assign_to_self end | 
#merge_scenarios_configs(config, temp_config = {}, scenarios_path, current_scenario_source_name) ⇒ Object
| 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | # File 'lib/docman/config.rb', line 57 def merge_scenarios_configs(config, temp_config = {}, scenarios_path, current_scenario_source_name) temp_config.deep_merge!(config) scenarios_config = {} unless config['scenarios'].nil? config['scenarios'].each do |s| scenario = {} if s.is_a? String values = s.split(':') if values.size() > 1 scenario_source_name = values[0] scenario_name = values[1] else scenario_source_name = current_scenario_source_name scenario_name = values[0] end scenario['name'] = scenario_name if temp_config['scenarioSources'].key? scenario_source_name temp_config['scenarioSources'][scenario_source_name]['dir'] scenario_source_path = temp_config['scenarioSources'][scenario_source_name]['dir'] ? temp_config['scenarioSources'][scenario_source_name]['dir'] : File.join(scenarios_path, scenario_source_name) if @loaded_scenario_sources.key? scenario_source_name scenario['source'] = @loaded_scenario_sources[scenario_source_name] else `rm -fR #{scenario_source_path}` if File.directory? scenario_source_path scenario['source'] = temp_config['scenarioSources'][scenario_source_name] scenario['source']['ref'] = scenario['source']['ref'] ? scenario['source']['ref'] : 'master' GitUtil.clone_repo(scenario['source']['repo'], scenario_source_path, 'branch', scenario['source']['ref'], true, 1) @loaded_scenario_sources[scenario_source_name] = scenario['source'] end scenario_config_file = File.join(scenario_source_path, 'scenarios', scenario['name'], 'config.yaml') if File.file? scenario_config_file scenario_config = merge_scenarios_configs(YAML::load_file(scenario_config_file), temp_config, scenarios_path, scenario_source_name) scenarios_config.deep_merge!(scenario_config) puts "Loaded scenario #{scenario['name']} from source #{scenario_source_name}" end end end end end scenarios_config.deep_merge!(config) end | 
#version ⇒ Object
| 102 103 104 | # File 'lib/docman/config.rb', line 102 def version @config['version'] end |