Sha256: b9e18be0592e4d6a6669b7c2af3dafcb0afb37dfafe4b5c58b4cf702af7eda78

Contents?: true

Size: 1.68 KB

Versions: 1

Compression:

Stored size: 1.68 KB

Contents

module Cloudspin
  module Stack
    module Rake

      class StackTask < ::Rake::TaskLib

        attr_reader :id
        attr_reader :instance
        attr_reader :definition_folder
        attr_reader :instance_folder

        def initialize(id:, definition_folder: './src', instance_folder: '.')
          @instance = Cloudspin::Stack::Instance.from_folder(
                default_instance_configuration_files(instance_folder),
                definition_folder: definition_folder,
                base_working_folder: "#{instance_folder}/work",
                base_statefile_folder: "#{instance_folder}/state"
          )
          define
        end

        def default_instance_configuration_files(instance_folder)
          [
            "#{instance_folder}/spin-default.yaml",
            "#{instance_folder}/stack-instance-default.yaml",
            "#{instance_folder}/stack-instance-defaults.yaml",
            "#{instance_folder}/spin-local.yaml",
            "#{instance_folder}/stack-instance-local.yaml"
          ]
        end

        def define

          desc "Create or update stack #{@instance.id}"
          task :up do
            puts @instance.up_dry
            puts @instance.up
          end

          desc "Plan changes to stack #{@instance.id}"
          task :plan do
            puts @instance.plan_dry
            puts @instance.plan
          end

          desc "Show command line to be run for stack #{@instance.id}"
          task :dry do
            puts @instance.up_dry
          end

          desc "Destroy stack #{@instance.id}"
          task :down do
            puts @instance.down_dry
            puts @instance.down
          end

        end

      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
cloudspin-stack-rake-0.1.9 lib/cloudspin/stack/rake/stack_task.rb