Sha256: 719e659198ddac51116ac51d712ae2e0cc312db35e21a539e0062dadb1ca76fe

Contents?: true

Size: 1.62 KB

Versions: 18

Compression:

Stored size: 1.62 KB

Contents

class Terraspace::CLI::New
  class Test < Thor::Group
    include Thor::Actions
    include Terraspace::CLI::New::Helpers

    argument :name, required: false

    def self.options
      [
        [:force, aliases: %w[y], type: :boolean, desc: "Bypass overwrite are you sure prompt for existing files"],
        [:test_name, desc: "Test name. Defaults to the project, module or stack name"],
        [:type, default: "stack", desc: "project, stack or module"],
      ]
    end
    options.each { |args| class_option(*args) }

  private
    def type
      valid_types = %w[project stack module]
      type = @options[:type]
      valid_types.include?(type) ? type : "project" # fallback to project if user provides invalid type
    end

    def test_name
      options[:test_name] || name
    end

    def dest
      map = {
        project: ".", # Terraspace.root
        stack:   "app/stacks/#{name}",
        module:  "app/modules/#{name}",
      }
      map[type.to_sym]
    end

    def test_template_source(template, type)
      source = Terraspace::CLI::New::Source::Test.new(self, @options)
      source.set_source_paths(template, type)
    end

  public

    def create
      if type != 'project' && name.nil?
        puts "ERROR: require NAME for type stack and module".color(:red)
        exit 1
      end
      test_template_source(@options[:lang], type)
      puts "=> Creating #{type} test: #{name}"
      directory ".", dest
    end

    # Used in ERB template
    # rspec-terraspace/lib/templates/stack/test/spec/fixtures/config/terraform/provider.tf.tt
    def autodetect_provider
      Terraspace::Autodetect.new.plugin
    end
  end
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
terraspace-1.1.7 lib/terraspace/cli/new/test.rb
terraspace-1.1.6 lib/terraspace/cli/new/test.rb
terraspace-1.1.5 lib/terraspace/cli/new/test.rb
terraspace-1.1.4 lib/terraspace/cli/new/test.rb
terraspace-1.1.3 lib/terraspace/cli/new/test.rb
terraspace-1.1.2 lib/terraspace/cli/new/test.rb
terraspace-1.1.1 lib/terraspace/cli/new/test.rb
terraspace-1.1.0 lib/terraspace/cli/new/test.rb
terraspace-1.0.6 lib/terraspace/cli/new/test.rb
terraspace-1.0.5 lib/terraspace/cli/new/test.rb
terraspace-1.0.4 lib/terraspace/cli/new/test.rb
terraspace-1.0.3 lib/terraspace/cli/new/test.rb
terraspace-1.0.2 lib/terraspace/cli/new/test.rb
terraspace-1.0.1 lib/terraspace/cli/new/test.rb
terraspace-1.0.0 lib/terraspace/cli/new/test.rb
terraspace-0.7.2 lib/terraspace/cli/new/test.rb
terraspace-0.7.1 lib/terraspace/cli/new/test.rb
terraspace-0.7.0 lib/terraspace/cli/new/test.rb