Sha256: 78c489909aaa5dfc609e108cb86b77b86ec316adb35e051b0c74c9ca9984306e

Contents?: true

Size: 1.15 KB

Versions: 42

Compression:

Stored size: 1.15 KB

Contents

module Terraspace
  module Booter
    def boot
      run_hooks
      Dotenv.new.load!
      Terraspace::Bundle.require # load plugins
      load_plugin_default_configs
      Terraspace::App::Inits.run_all
      set_plugin_cache!
    end

    def load_plugin_default_configs
      Terraspace::Plugin.config_classes.each do |klass|
        # IE: TerraspacePluginAws::Interfaces::Config.instance.load_project_config
        klass.instance.load_project_config
      end
    end

    def set_plugin_cache!
      plugin_cache = Terraspace.config.terraform.plugin_cache
      return unless plugin_cache.enabled
      dir = ENV['TF_PLUGIN_CACHE_DIR'] ||= plugin_cache.dir
      FileUtils.mkdir_p(dir)
      dir
    end

    # Special boot hooks run super early, even before plugins are loaded.
    # Useful for setting env vars and other early things.
    #
    #    config/boot.rb
    #    config/boot/dev.rb
    #
    def run_hooks
      run_hook
      run_hook(Terraspace.env)
    end

    def run_hook(env=nil)
      name = env ? "boot/#{env}" : "boot"
      path = "#{Terraspace.root}/config/#{name}.rb"
      require path if File.exist?(path)
    end

    extend self
  end
end

Version data entries

42 entries across 42 versions & 1 rubygems

Version Path
terraspace-2.2.17 lib/terraspace/booter.rb
terraspace-2.2.16 lib/terraspace/booter.rb
terraspace-2.2.15 lib/terraspace/booter.rb
terraspace-2.2.14 lib/terraspace/booter.rb
terraspace-2.2.13 lib/terraspace/booter.rb
terraspace-2.2.12 lib/terraspace/booter.rb
terraspace-2.2.11 lib/terraspace/booter.rb
terraspace-2.2.10 lib/terraspace/booter.rb
terraspace-2.2.9 lib/terraspace/booter.rb
terraspace-2.2.8 lib/terraspace/booter.rb
terraspace-2.2.7 lib/terraspace/booter.rb
terraspace-2.2.6 lib/terraspace/booter.rb
terraspace-2.2.5 lib/terraspace/booter.rb
terraspace-2.2.4 lib/terraspace/booter.rb
terraspace-2.2.3 lib/terraspace/booter.rb
terraspace-2.2.2 lib/terraspace/booter.rb
terraspace-2.2.1 lib/terraspace/booter.rb
terraspace-2.2.0 lib/terraspace/booter.rb
terraspace-2.1.7 lib/terraspace/booter.rb
terraspace-2.1.6 lib/terraspace/booter.rb