lib/thor/parser/option.rb in thor-0.19.4 vs lib/thor/parser/option.rb in thor-0.20.0

- old
+ new

@@ -3,10 +3,11 @@ attr_reader :aliases, :group, :lazy_default, :hide VALID_TYPES = [:boolean, :numeric, :hash, :array, :string] def initialize(name, options = {}) + @check_default_type = options[:check_default_type] options[:required] = false unless options.key?(:required) super @lazy_default = options[:lazy_default] @group = options[:group].to_s.capitalize if options[:group] @aliases = Array(options[:aliases]) @@ -78,16 +79,16 @@ @human_name ||= dasherized? ? undasherize(name) : name end def usage(padding = 0) sample = if banner && !banner.to_s.empty? - "#{switch_name}=#{banner}" + "#{switch_name}=#{banner}".dup else switch_name end - sample = "[#{sample}]" unless required? + sample = "[#{sample}]".dup unless required? if boolean? sample << ", [#{dasherize('no-' + human_name)}]" unless (name == "force") || name.start_with?("no-") end @@ -108,11 +109,11 @@ protected def validate! raise ArgumentError, "An option cannot be boolean and required." if boolean? && required? - validate_default_type! + validate_default_type! if @check_default_type end def validate_default_type! default_type = case @default when nil @@ -125,11 +126,10 @@ :string when Hash, Array, String @default.class.name.downcase.to_sym end - # TODO: This should raise an ArgumentError in a future version of Thor - warn "Expected #{@type} default value for '#{switch_name}'; got #{@default.inspect} (#{default_type})" unless default_type == @type + raise ArgumentError, "Expected #{@type} default value for '#{switch_name}'; got #{@default.inspect} (#{default_type})" unless default_type == @type end def dasherized? name.index("-") == 0 end