Sha256: 692581fe0087acb532242a702f58926f86a78ad153b938cc452cc6efd07da1dd

Contents?: true

Size: 1.41 KB

Versions: 51

Compression:

Stored size: 1.41 KB

Contents

# frozen_string_literal: true

module RailsAppGenerator
  # Option for the rails generator
  #
  # This class maps closely (but not exactly) to Thor's options
  # The pattern is not exactly the same, it is easy to map the options
  # you need from other generators such as: railties/lib/rails/generators/app_base.rb
  class BuildOption
    attr_reader :name, :description, :type, :default, :required, :mapper

    def initialize(name, **args)
      @name = name
      @description = args[:description] || ''
      @type = args[:type] || :string
      @required = args.fetch(:required, false)
      @default = args[:default] || sane_default
      @mapper = args[:mapper] || sane_mapper

      raise ArgumentError, ':required should not be nil' if @required.nil?
    end

    def cmd_option(value); end

    def to_h
      {
        name: name,
        description: description,
        type: type,
        default: default,
        required: required
      }
    end

    private

    def sane_default
      case type
      when :string
        ''
      when :boolean
        false
      when :integer
        0
      when :array
        []
      when :hash
        {}
      end
    end

    def sane_mapper
      case type
      when :boolean
        RailsAppGenerator::MapOptionBooleanFlag.new
      when :string
        RailsAppGenerator::MapOptionString.new
      else
        RailsAppGenerator::MapOptionIgnore.new
      end
    end
  end
end

Version data entries

51 entries across 51 versions & 1 rubygems

Version Path
rails_app_generator-0.3.6 lib/rails_app_generator/options/build_option.rb
rails_app_generator-0.3.5 lib/rails_app_generator/options/build_option.rb
rails_app_generator-0.3.4 lib/rails_app_generator/options/build_option.rb
rails_app_generator-0.3.3 lib/rails_app_generator/options/build_option.rb
rails_app_generator-0.3.2 lib/rails_app_generator/options/build_option.rb
rails_app_generator-0.3.1 lib/rails_app_generator/options/build_option.rb
rails_app_generator-0.3.0 lib/rails_app_generator/options/build_option.rb
rails_app_generator-0.2.43 lib/rails_app_generator/options/build_option.rb
rails_app_generator-0.2.42 lib/rails_app_generator/options/build_option.rb
rails_app_generator-0.2.41 lib/rails_app_generator/options/build_option.rb
rails_app_generator-0.2.40 lib/rails_app_generator/options/build_option.rb
rails_app_generator-0.2.39 lib/rails_app_generator/options/build_option.rb
rails_app_generator-0.2.38 lib/rails_app_generator/options/build_option.rb
rails_app_generator-0.2.37 lib/rails_app_generator/options/build_option.rb
rails_app_generator-0.2.36 lib/rails_app_generator/options/build_option.rb
rails_app_generator-0.2.35 lib/rails_app_generator/options/build_option.rb
rails_app_generator-0.2.34 lib/rails_app_generator/options/build_option.rb
rails_app_generator-0.2.33 lib/rails_app_generator/options/build_option.rb
rails_app_generator-0.2.32 lib/rails_app_generator/options/build_option.rb
rails_app_generator-0.2.31 lib/rails_app_generator/options/build_option.rb