Sha256: c0557fc6dd3d2e3837a2bc577b20389281a3acfa01ce75532b3449fadbca575b

Contents?: true

Size: 1.73 KB

Versions: 36

Compression:

Stored size: 1.73 KB

Contents

require 'thor'

class Terraspace::CLI::New
  class Sequence < Thor::Group
    include Thor::Actions
    include Terraspace::Util::Logging
    include Helpers

    def self.base_options
      [
        [:examples, type: :boolean, default: false, desc: "Also generate examples"],
        [:force, aliases: %w[y], type: :boolean, desc: "Bypass overwrite are you sure prompt for existing files"],
        [:lang, default: "hcl", desc: "Language to use: HCL/ERB or Ruby DSL"],
        [:plugin, aliases: %w[p], default: "aws", desc: "Cloud Plugin. Supports: aws, google"],
        [:test, type: :boolean, desc: "Whether or not to generate tests"],
        [:plugin_gem, desc: "Use if provider gem name doesnt follow terraspace_plugin_XXX naming convention. Must specify both --plugin and --plugin-name option"],
      ]
    end

    def self.component_options
      [
        [:project_name, desc: "Only used internally", hide: true],
      ]
    end

    base_options.each { |args| class_option(*args) }

    argument :name

  private
    def component_args(component_name, project_name)
      args = [
        component_name,
        "--project-name", project_name,
      ]

      args += ["--lang", @options[:lang]] if @options[:lang]
      args += ["--plugin", @options[:plugin]] if @options[:plugin]
      args += ["--plugin-gem", @options[:plugin_gem]] if @options[:plugin_gem]
      args += @options[:test] ? ["--test"] : ["--no-test"] # since test may be true by default
      args += ["--examples"] if @options[:examples]
      args += ["--force"] if @options[:force]
      args
    end

    # friendly method
    def plugin_template_source(template, type)
      source = Source::Plugin.new(self, @options)
      source.set_source_paths(template, type)
    end
  end
end

Version data entries

36 entries across 36 versions & 1 rubygems

Version Path
terraspace-0.6.23 lib/terraspace/cli/new/sequence.rb
terraspace-0.6.22 lib/terraspace/cli/new/sequence.rb
terraspace-0.6.21 lib/terraspace/cli/new/sequence.rb
terraspace-0.6.20 lib/terraspace/cli/new/sequence.rb
terraspace-0.6.19 lib/terraspace/cli/new/sequence.rb
terraspace-0.6.18 lib/terraspace/cli/new/sequence.rb
terraspace-0.6.17 lib/terraspace/cli/new/sequence.rb
terraspace-0.6.16 lib/terraspace/cli/new/sequence.rb
terraspace-0.6.15 lib/terraspace/cli/new/sequence.rb
terraspace-0.6.13 lib/terraspace/cli/new/sequence.rb
terraspace-0.6.12 lib/terraspace/cli/new/sequence.rb
terraspace-0.6.11 lib/terraspace/cli/new/sequence.rb
terraspace-0.6.10 lib/terraspace/cli/new/sequence.rb
terraspace-0.6.9 lib/terraspace/cli/new/sequence.rb
terraspace-0.6.8 lib/terraspace/cli/new/sequence.rb
terraspace-0.6.7 lib/terraspace/cli/new/sequence.rb
terraspace-0.6.6 lib/terraspace/cli/new/sequence.rb
terraspace-0.6.5 lib/terraspace/cli/new/sequence.rb
terraspace-0.6.4 lib/terraspace/cli/new/sequence.rb
terraspace-0.6.3 lib/terraspace/cli/new/sequence.rb