Class: Inspec::Resources::MysqlConf
  
  
  
  
  
    - Inherits:
- 
      Object
      
        
          - Object
- Inspec::Resources::MysqlConf
 show all
      - Includes:
- FileReader, FindFiles
    - Defined in:
- lib/inspec/resources/mysql_conf.rb
 
  Constant Summary
  
  Constants included
     from FindFiles
  FindFiles::TYPES
  
    
      Instance Method Summary
      collapse
    
    
  
  
  
  
  
  
  
  
  
  Methods included from FileReader
  #read_file_content
  
  
  
  
  
  
  
  
  Methods included from FindFiles
  #find_files, #find_files_or_warn
  Constructor Details
  
    
  
  
    #initialize(conf_path = nil)  ⇒ MysqlConf 
  
  
  
  
    
Returns a new instance of MysqlConf.
   
 
  
  
    | 
53
54
55
56
57
58
59 | # File 'lib/inspec/resources/mysql_conf.rb', line 53
def initialize(conf_path = nil)
  @conf_path = conf_path || inspec.mysql.conf_path
  @files_contents = {}
  @content = nil
  @params = nil
  read_content
end | 
 
  
 
  Dynamic Method Handling
  
    This class handles dynamic methods through the method_missing method
    
  
  
    
  
  
    #method_missing(name)  ⇒ Object 
  
  
  
  
    | 
74
75
76
77 | # File 'lib/inspec/resources/mysql_conf.rb', line 74
def method_missing(name)
  @params || read_content
  @params[name.to_s]
end | 
 
  
 
  
    Instance Method Details
    
      
  
  
    #abs_path(dir, f)  ⇒ Object 
  
  
  
  
    | 
114
115
116
117
118 | # File 'lib/inspec/resources/mysql_conf.rb', line 114
def abs_path(dir, f)
  return f if f.start_with? "/"
  File.join(dir, f)
end | 
 
    
      
  
  
    #content  ⇒ Object 
  
  
  
  
    | 
61
62
63 | # File 'lib/inspec/resources/mysql_conf.rb', line 61
def content
  @content ||= read_content
end | 
 
    
      
  
  
    #include_files(reldir, conf)  ⇒ Object 
  
  
  
  
    | 
104
105
106
107
108
109
110
111
112 | # File 'lib/inspec/resources/mysql_conf.rb', line 104
def include_files(reldir, conf)
  files = conf.scan(/^!include\s+(.*)\s*/).flatten.compact.map { |x| abs_path(reldir, x) }
  dirs = conf.scan(/^!includedir\s+(.*)\s*/).flatten.compact.map { |x| abs_path(reldir, x) }
  dirs.map do |dir|
        files += find_files(dir, depth: 1, type: "file")
  end
  files
end | 
 
    
      
  
  
    #params(*opts)  ⇒ Object 
  
  
  
  
    | 
65
66
67
68
69
70
71
72 | # File 'lib/inspec/resources/mysql_conf.rb', line 65
def params(*opts)
  @params || read_content
  res = @params
  opts.each do |opt|
    res = res[opt] unless res.nil?
  end
  MysqlConfEntry.new(opts, res)
end | 
 
    
      
  
  
    #read_content  ⇒ Object 
  
  
  
  
    | 
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102 | # File 'lib/inspec/resources/mysql_conf.rb', line 79
def read_content
  @content = ""
  @params = {}
  to_read = [@conf_path]
  until to_read.empty?
    cur_file = to_read[0]
    raw_conf = read_file(cur_file)
    @content += raw_conf
    params = SimpleConfig.new(raw_conf).params
    @params = @params.deep_merge(params)
    to_read = to_read.drop(1)
    
    dir = File.dirname(cur_file)
    to_read += include_files(dir, raw_conf).find_all do |fp|
      not @files_contents.key? fp
    end
  end
    @content
end | 
 
    
      
  
  
    #read_file(path)  ⇒ Object 
  
  
  
  
    | 
120
121
122 | # File 'lib/inspec/resources/mysql_conf.rb', line 120
def read_file(path)
  @files_contents[path] ||= read_file_content(path)
end | 
 
    
      
  
  
    #to_s  ⇒ Object 
  
  
  
  
    | 
124
125
126 | # File 'lib/inspec/resources/mysql_conf.rb', line 124
def to_s
  "MySQL Configuration"
end |