module RakeTerraform

Constants

VERSION

Public Class Methods

define_command_tasks(opts = {}, &block) click to toggle source
# File lib/rake_terraform.rb, line 11
def self.define_command_tasks(opts = {}, &block)
  RakeTerraform::TaskSets::All.define(opts, &block)
end
define_installation_tasks(opts = {}) click to toggle source
# File lib/rake_terraform.rb, line 15
def self.define_installation_tasks(opts = {})
  command_task_set = define_command_installation_tasks(opts)
  provider_task_sets = define_providers_installation_tasks(opts)

  configure_ruby_terraform(command_task_set.binary)
  wire_provider_ensure_tasks(opts)

  [command_task_set.delegate, provider_task_sets.map(&:delegate)]
end

Private Class Methods

configure_ruby_terraform(binary) click to toggle source
# File lib/rake_terraform.rb, line 47
def configure_ruby_terraform(binary)
  RubyTerraform.configure { |c| c.binary = binary }
end
define_command_installation_tasks(opts = {}) click to toggle source
# File lib/rake_terraform.rb, line 28
def define_command_installation_tasks(opts = {})
  RakeTerraform::TaskSets::Terraform.define(opts)
end
define_provider_installation_tasks(opts = {}) click to toggle source
# File lib/rake_terraform.rb, line 32
def define_provider_installation_tasks(opts = {})
  RakeTerraform::TaskSets::Provider.define(opts)
end
define_providers_installation_tasks(opts = {}) click to toggle source
# File lib/rake_terraform.rb, line 36
def define_providers_installation_tasks(opts = {})
  namespace = opts[:namespace] || :terraform
  providers = opts[:providers] || []

  providers.map do |provider_opts|
    define_provider_installation_tasks(
      { parent_namespace: namespace }.merge(provider_opts)
    )
  end
end
wire_provider_ensure_tasks(opts) click to toggle source
# File lib/rake_terraform.rb, line 51
def wire_provider_ensure_tasks(opts)
  namespace = opts[:namespace] || :terraform
  providers = opts[:providers] || []

  Rake::Task["#{namespace}:ensure"]
    .enhance(providers.map do |provider_opts|
      "#{namespace}:providers:#{provider_opts[:name]}:ensure"
    end)
end