Class: Terraspace::Builder

Inherits:
CLI::Base show all
Defined in:
lib/terraspace/builder.rb

Instance Method Summary collapse

Methods inherited from CLI::Base

#initialize

Methods included from Util

#pretty_path

Methods included from Util::Sure

#sure?

Methods included from Util::Sh

#sh

Methods included from Util::Logging

#logger

Constructor Details

This class inherits a constructor from Terraspace::CLI::Base

Instance Method Details

#build_all(type_dir) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/terraspace/builder.rb', line 20

def build_all(type_dir)
  built = []
  local_paths(type_dir).each do |path|
    next unless File.directory?(path)
    mod_name = File.basename(path)
    next if built.include?(mod_name) # ensures modules in app folder take higher precedence than vendor folder

    consider_stacks = type_dir == "stacks"
    mod = Mod.new(mod_name, consider_stacks: consider_stacks)

    Compiler::Builder.new(mod).build
    built << mod_name
  end
end

#build_root_moduleObject



16
17
18
# File 'lib/terraspace/builder.rb', line 16

def build_root_module
  Compiler::Builder.new(@mod).build
end

#dirs(path) ⇒ Object



39
40
41
# File 'lib/terraspace/builder.rb', line 39

def dirs(path)
  Dir.glob("#{Terraspace.root}/#{path}")
end

#local_paths(type_dir) ⇒ Object



35
36
37
# File 'lib/terraspace/builder.rb', line 35

def local_paths(type_dir)
  dirs("app/#{type_dir}/*") + dirs("vendor/#{type_dir}/*")
end

#runObject



3
4
5
6
7
8
9
10
11
12
13
14
# File 'lib/terraspace/builder.rb', line 3

def run
  Terraspace::CLI::CheckSetup.check!
  @mod.root_module = true
  Compiler::Cleaner.new(@mod, @options).clean
  build_dir = Util.pretty_path(@mod.cache_dir)
  logger.info "Building #{build_dir}"

  build_all("modules") # build all modules and stacks as dependencies
  build_all("stacks")
  build_root_module
  logger.info "Built in #{build_dir}"
end