Sha256: e870a04cf5b155a7a2928c2dbeeda2f79e8df27eebc80484de37b00c95e62174

Contents?: true

Size: 2 KB

Versions: 9

Compression:

Stored size: 2 KB

Contents

# frozen_string_literal: true

require 'rake_factory'
require 'ruby_terraform'
require 'ostruct'
require 'colored2'

module RakeTerraform
  module Tasks
    class Destroy < RakeFactory::Task
      default_name :destroy
      default_prerequisites(RakeFactory::DynamicValue.new do |t|
        [t.ensure_task_name]
      end)
      default_description(RakeFactory::DynamicValue.new do |t|
        "Destroy #{t.configuration_name} using terraform"
      end)

      parameter :configuration_name, required: true
      parameter :source_directory, required: true
      parameter :work_directory, required: true

      parameter :backend_config

      parameter :vars, default: {}
      parameter :var_file
      parameter :state_file

      parameter :debug, default: false
      parameter :input, default: false
      parameter :no_color, default: false
      parameter :no_backup, default: false

      parameter :backup_file

      parameter :ensure_task_name, default: :'terraform:ensure'

      # rubocop:disable Metrics/BlockLength

      action do |t|
        Colored2.disable! if t.no_color

        module_directory =
          File.join(FileUtils.pwd, t.source_directory)
        configuration_directory =
          File.join(t.work_directory, t.source_directory)

        Kernel.puts "Destroying #{t.configuration_name}".cyan

        FileUtils.rm_rf(configuration_directory)
        FileUtils.mkdir_p(configuration_directory)

        RubyTerraform.init(
          chdir: configuration_directory,
          from_module: module_directory,
          backend_config: t.backend_config,
          no_color: t.no_color,
          input: t.input
        )
        RubyTerraform.destroy(
          chdir: configuration_directory,
          force: true,
          input: t.input,
          no_color: t.no_color,
          no_backup: t.no_backup,
          backup: t.backup_file,
          state: t.state_file,
          vars: t.vars,
          var_file: t.var_file
        )
      end

      # rubocop:enable Metrics/BlockLength
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
rake_terraform-1.18.0 lib/rake_terraform/tasks/destroy.rb
rake_terraform-1.18.0.pre.1 lib/rake_terraform/tasks/destroy.rb
rake_terraform-1.17.0 lib/rake_terraform/tasks/destroy.rb
rake_terraform-1.17.0.pre.1 lib/rake_terraform/tasks/destroy.rb
rake_terraform-1.16.0 lib/rake_terraform/tasks/destroy.rb
rake_terraform-1.16.0.pre.5 lib/rake_terraform/tasks/destroy.rb
rake_terraform-1.16.0.pre.4 lib/rake_terraform/tasks/destroy.rb
rake_terraform-1.16.0.pre.3 lib/rake_terraform/tasks/destroy.rb
rake_terraform-1.16.0.pre.2 lib/rake_terraform/tasks/destroy.rb