Sha256: 5653b8e7aa28ef88858f8b8f232b88ba70a6b9a506f802a9e3f34a1d56aa62dd

Contents?: true

Size: 1.71 KB

Versions: 16

Compression:

Stored size: 1.71 KB

Contents

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

module RakeTerraform
  module Tasks
    class Plan < RakeFactory::Task
      default_name :plan
      default_prerequisites RakeFactory::DynamicValue.new { |t|
        [t.ensure_task_name]
      }
      default_description RakeFactory::DynamicValue.new { |t|
        "Plan #{t.configuration_name} using terraform"
      }

      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 :no_color, :default => false

      parameter :plan_file
      parameter :destroy, :default => false

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

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

        configuration_directory =
            File.join(t.work_directory, t.source_directory)

        puts "Planning #{configuration_name}".cyan
        RubyTerraform.clean(
            directory: configuration_directory)

        mkdir_p File.dirname(configuration_directory)
        cp_r t.source_directory, configuration_directory

        Dir.chdir(configuration_directory) do
          RubyTerraform.init(
              backend_config: t.backend_config,
              no_color: t.no_color)
          RubyTerraform.plan(
              no_color: t.no_color,
              destroy: t.destroy,
              state: t.state_file,
              plan: t.plan_file,
              vars: t.vars,
              var_file: t.var_file)
        end
      end
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
rake_terraform-1.15.0 lib/rake_terraform/tasks/plan.rb
rake_terraform-1.14.0.pre.1 lib/rake_terraform/tasks/plan.rb
rake_terraform-1.13.0 lib/rake_terraform/tasks/plan.rb
rake_terraform-1.12.0.pre.1 lib/rake_terraform/tasks/plan.rb
rake_terraform-1.11.0 lib/rake_terraform/tasks/plan.rb
rake_terraform-1.10.0.pre.2 lib/rake_terraform/tasks/plan.rb
rake_terraform-1.10.0.pre.1 lib/rake_terraform/tasks/plan.rb
rake_terraform-1.9.0 lib/rake_terraform/tasks/plan.rb
rake_terraform-1.8.0.pre.2 lib/rake_terraform/tasks/plan.rb
rake_terraform-1.8.0.pre.1 lib/rake_terraform/tasks/plan.rb
rake_terraform-1.7.0 lib/rake_terraform/tasks/plan.rb
rake_terraform-1.6.0.pre.1 lib/rake_terraform/tasks/plan.rb
rake_terraform-1.5.0 lib/rake_terraform/tasks/plan.rb
rake_terraform-1.4.0.pre.1 lib/rake_terraform/tasks/plan.rb
rake_terraform-1.3.0 lib/rake_terraform/tasks/plan.rb
rake_terraform-1.2.0.pre.1 lib/rake_terraform/tasks/plan.rb