diff options
Diffstat (limited to 'lib/puppet/parameter.rb')
-rw-r--r-- | lib/puppet/parameter.rb | 52 |
1 files changed, 18 insertions, 34 deletions
diff --git a/lib/puppet/parameter.rb b/lib/puppet/parameter.rb index 25789e9af..18ed07d35 100644 --- a/lib/puppet/parameter.rb +++ b/lib/puppet/parameter.rb @@ -11,6 +11,10 @@ module Puppet if block define_method(:default, &block) else + if value.nil? + raise Puppet::DevError, + "Either a default value or block must be provided" + end define_method(:default) do value end end end @@ -104,6 +108,9 @@ module Puppet rescue ArgumentError, Puppet::Error, TypeError raise rescue => detail + if Puppet[:debug] + puts detail.backtrace + end raise Puppet::DevError, "Validate method failed for class %s: %s" % [self.name, detail] @@ -145,7 +152,13 @@ module Puppet @aliasvalues ||= {} #[@aliasvalues.keys, @parametervalues.keys].flatten - @parametervalues.dup + if @parametervalues.is_a? Array + return @parametervalues.dup + elsif @parametervalues.is_a? Hash + return @parametervalues.keys + else + return [] + end end end @@ -162,36 +175,6 @@ module Puppet attr_accessor :parent - # This doesn't work, because the instance_eval doesn't bind the inner block - # only the outer one. -# def munge(value) -# if munger = self.class.munger -# return @parent.instance_eval { -# munger.call(value) -# } -# else -# return value -# end -# end -# -# def validate(value) -# if validater = self.class.validater -# return @parent.instance_eval { -# validater.call(value) -# } -# end -# end - - #def default - # default = self.class.default - # if default.is_a?(Proc) - # val = self.instance_eval(&default) - # return val - # else - # return default - # end - #end - def devfail(msg) self.fail(Puppet::DevError, msg) end @@ -276,16 +259,17 @@ module Puppet # Verify that the passed value is valid. validate do |value| - if self.class.values.empty? + values = self.class.values + if values.empty? # This parameter isn't using defined values to do its work. return end unless value.is_a?(Symbol) value = value.to_s.intern end - unless self.class.values.include?(value) or self.class.alias(value) + unless values.include?(value) or self.class.alias(value) self.fail "Invalid '%s' value '%s'. Valid values are '%s'" % - [self.class.name, value, self.class.values.join(", ")] + [self.class.name, value, values.join(", ")] end end |