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