Class: Terraspace::Terraform::Api::Vars

Inherits:
Object
  • Object
show all
Extended by:
Memoist
Includes:
Client
Defined in:
lib/terraspace/terraform/api/vars.rb,
lib/terraspace/terraform/api/vars/rb.rb,
lib/terraspace/terraform/api/vars/base.rb,
lib/terraspace/terraform/api/vars/json.rb

Defined Under Namespace

Classes: Base, Json, Rb

Instance Method Summary collapse

Methods included from Client

#http

Constructor Details

#initialize(mod, workspace) ⇒ Vars

Returns a new instance of Vars.



6
7
8
# File 'lib/terraspace/terraform/api/vars.rb', line 6

def initialize(mod, workspace)
  @mod, @workspace = mod, workspace
end

Instance Method Details

#exist?Boolean

Returns:

  • (Boolean)


29
30
31
# File 'lib/terraspace/terraform/api/vars.rb', line 29

def exist?
  !!vars_path
end

#runObject



10
11
12
13
14
15
16
17
# File 'lib/terraspace/terraform/api/vars.rb', line 10

def run
  return unless exist?

  vars = vars_class.new(@mod, vars_path).vars
  vars.each do |attrs|
    Var.new(@workspace, attrs).sync
  end
end

#vars_classObject

Return value examples:

Terraspace::Terraform::Api::Vars::Json
Terraspace::Terraform::Api::Vars::Rb


24
25
26
27
# File 'lib/terraspace/terraform/api/vars.rb', line 24

def vars_class
  ext = File.extname(vars_path).sub('.','')
  "Terraspace::Terraform::Api::Vars::#{ext.camelize}".constantize
end

#vars_pathObject



33
34
35
36
# File 'lib/terraspace/terraform/api/vars.rb', line 33

def vars_path
  # .rb takes higher precedence
  Dir.glob("#{Terraspace.root}/config/terraform/cloud/vars.{rb,json}").first
end