Class: DataDir

Inherits:
Object
  • Object
show all
Defined in:
lib/hiera_browser/data.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(args = {}) ⇒ void



7
8
9
10
# File 'lib/hiera_browser/data.rb', line 7

def initialize(args={})
  @node_dir = args[:node_dir] || YamlDir.new
  @paths    = render_paths(:path => args[:path])
end

Instance Attribute Details

#pathsObject (readonly)

Returns the value of attribute paths.



4
5
6
# File 'lib/hiera_browser/data.rb', line 4

def paths
  @paths
end

Instance Method Details

#datafilesArray

Returns:

  • (Array)


34
35
36
37
38
# File 'lib/hiera_browser/data.rb', line 34

def datafiles
  @paths.map{|path|
    yaml_files.map{|f| DataFile.new(:path => File.join(path,f))}
  }.flatten
end

#keysArray

Returns:

  • (Array)


41
42
43
# File 'lib/hiera_browser/data.rb', line 41

def keys
  datafiles.map{|datafile| datafile.keys}.flatten.uniq.sort
end

#render_paths(args) ⇒ Array

Returns:

  • (Array)


13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/hiera_browser/data.rb', line 13

def render_paths(args)
  begin
    interpolated_variables = args[:path].match(/\%\{([a-z_\:]+)\}/).captures
    collected_parameters = @node_dir.collected_parameters 
    # collected_parameters is a ParameterCollection
    # interpolated_variables might look like ['::environment']
    interpolated_variables.map{|v|
      collected_parameters[v].map{|param|
        args[:path].gsub(/%{#{v}}/, param)}
    }.flatten
  rescue NoMethodError
    [args[:path]]
  end
end

#yaml_filesArray

Returns:

  • (Array)


29
30
31
# File 'lib/hiera_browser/data.rb', line 29

def yaml_files
  @paths.map{|p| Dir.chdir(p) { Dir.glob('**/*.yaml') } }.flatten
end