Class: TerraformDSL::Variables

Inherits:
Object
  • Object
show all
Defined in:
lib/terraformdsl/common.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(names = []) ⇒ Variables

Returns a new instance of Variables.



8
9
10
11
12
13
14
# File 'lib/terraformdsl/common.rb', line 8

def initialize(names=[])
  @vars = {}
  names.each do |k|
    k = k.intern if k.is_a?(String)
    @vars[k] = Var.new(k)
  end
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(name, *args) ⇒ Object



21
22
23
24
25
# File 'lib/terraformdsl/common.rb', line 21

def method_missing(name, *args)
  args.empty?  or super
  @vars.key?(name)  or super
  return @vars[name]
end

Class Method Details

.load_tf(filename) ⇒ Object

def self.load_tfvars(__filename)

eval File.read(__filename)
__d = local_variables().inject({}) {|d, k|
  d[k] = nil unless k.start_with?('__')
  d
}
return self.new(__d)

end



45
46
47
48
49
50
# File 'lib/terraformdsl/common.rb', line 45

def self.load_tf(filename)
  content = File.read(filename)
  rexp = /^[ \t]*variable[ \t]+"([^"]+)"/
  names = []; content.scan(rexp) { names << $1 }
  return self.new(names)
end

Instance Method Details

#define(name, desc = nil, default: nil) ⇒ Object



16
17
18
19
# File 'lib/terraformdsl/common.rb', line 16

def define(name, desc=nil, default: nil)
  name = name.intern if name.is_a?(String)
  @vars[name] = Var.new(name, desc, default: default)
end

#generate_tfObject



27
28
29
30
31
32
33
34
# File 'lib/terraformdsl/common.rb', line 27

def generate_tf()
  buf = []
  @vars.each do |k, v|
    buf << v.generate_tf()
  end
  buf << "\n"
  return buf.join("")
end