Class: Terraspace::Compiler::Backend

Inherits:
Object
  • Object
show all
Extended by:
Memoist
Defined in:
lib/terraspace/compiler/backend.rb,
lib/terraspace/compiler/backend/parser.rb

Defined Under Namespace

Classes: Parser

Instance Method Summary collapse

Constructor Details

#initialize(mod) ⇒ Backend

Returns a new instance of Backend.



5
6
7
# File 'lib/terraspace/compiler/backend.rb', line 5

def initialize(mod)
  @mod = mod
end

Instance Method Details

#backendObject



25
26
27
# File 'lib/terraspace/compiler/backend.rb', line 25

def backend
  Parser.new(@mod).result
end

#backend_infoObject



21
22
23
# File 'lib/terraspace/compiler/backend.rb', line 21

def backend_info
  backend.values.first # structure within the s3 or gcs key
end

#backend_interface(name) ⇒ Object



30
31
32
33
34
35
36
# File 'lib/terraspace/compiler/backend.rb', line 30

def backend_interface(name)
  return unless name
  # IE: TerraspacePluginAws::Interfaces::Backend
  klass_name = Terraspace::Plugin.klass("Backend", backend: name)
  klass_name.constantize if klass_name
rescue NameError
end

#backend_nameObject



17
18
19
# File 'lib/terraspace/compiler/backend.rb', line 17

def backend_name
  backend.keys.first # IE: s3, gcs, etc
end

#createObject



9
10
11
12
13
14
15
# File 'lib/terraspace/compiler/backend.rb', line 9

def create
  klass = backend_interface(backend_name)
  return unless klass # in case auto-creation is not supported for specific backend

  interface = klass.new(backend_info)
  interface.call
end