lib/puppet/resource_api.rb in puppet-resource_api-0.1.0 vs lib/puppet/resource_api.rb in puppet-resource_api-0.2.0

- old
+ new

@@ -1,7 +1,7 @@ require 'pathname' -# require 'puppet/resource_api/command' +require 'puppet/resource_api/command' require 'puppet/resource_api/errors' require 'puppet/resource_api/glue' require 'puppet/resource_api/puppet_context' require 'puppet/resource_api/version' require 'puppet/type' @@ -99,15 +99,18 @@ end case options[:type] when 'String' # require any string value - newvalues %r{} do - end + Puppet::ResourceApi.def_newvalues(self, param_or_property, %r{}) # rubocop:disable Lint/BooleanSymbol when 'Boolean' - newvalues 'true', 'false', :true, :false, true, false + Puppet::ResourceApi.def_newvalues(self, param_or_property, 'true', 'false') + aliasvalue true, 'true' + aliasvalue false, 'false' + aliasvalue :true, 'true' + aliasvalue :false, 'false' munge do |v| case v when 'true', :true true @@ -117,40 +120,31 @@ v end end # rubocop:enable Lint/BooleanSymbol when 'Integer' - newvalue %r{^-?\d+$} do - end + Puppet::ResourceApi.def_newvalues(self, param_or_property, %r{^-?\d+$}) munge do |v| Puppet::Pops::Utils.to_n(v) end when 'Float', 'Numeric' - newvalue Puppet::Pops::Patterns::NUMERIC do - end + Puppet::ResourceApi.def_newvalues(self, param_or_property, Puppet::Pops::Patterns::NUMERIC) munge do |v| Puppet::Pops::Utils.to_n(v) end when 'Enum[present, absent]' - newvalue :absent do - end - newvalue :present do - end + Puppet::ResourceApi.def_newvalues(self, param_or_property, :absent, :present) when 'Variant[Pattern[/\A(0x)?[0-9a-fA-F]{8}\Z/], Pattern[/\A(0x)?[0-9a-fA-F]{16}\Z/], Pattern[/\A(0x)?[0-9a-fA-F]{40}\Z/]]' # the namevar needs to be a Parameter, which only has newvalue*s* - newvalues(%r{\A(0x)?[0-9a-fA-F]{8}\Z}, %r{\A(0x)?[0-9a-fA-F]{16}\Z}, %r{\A(0x)?[0-9a-fA-F]{40}\Z}) + Puppet::ResourceApi.def_newvalues(self, param_or_property, %r{\A(0x)?[0-9a-fA-F]{8}\Z}, %r{\A(0x)?[0-9a-fA-F]{16}\Z}, %r{\A(0x)?[0-9a-fA-F]{40}\Z}) when 'Optional[String]' - newvalues(%r{}, :undef) do - end + Puppet::ResourceApi.def_newvalues(self, param_or_property, %r{}, :undef) when 'Variant[Stdlib::Absolutepath, Pattern[/\A(https?|ftp):\/\//]]' # TODO: this is wrong, but matches original implementation - [/^\//, /\A(https?|ftp):\/\//].each do |v| # rubocop:disable Style/RegexpLiteral - newvalues v do - end - end + Puppet::ResourceApi.def_newvalues(self, param_or_property, /^\//, /\A(https?|ftp):\/\//) # rubocop:disable Style/RegexpLiteral when 'Pattern[/\A((hkp|http|https):\/\/)?([a-z\d])([a-z\d-]{0,61}\.)+[a-z\d]+(:\d{2,5})?$/]' - newvalues(/\A((hkp|http|https):\/\/)?([a-z\d])([a-z\d-]{0,61}\.)+[a-z\d]+(:\d{2,5})?$/) # rubocop:disable Style/RegexpLiteral + Puppet::ResourceApi.def_newvalues(self, param_or_property, /\A((hkp|http|https):\/\/)?([a-z\d])([a-z\d-]{0,61}\.)+[a-z\d]+(:\d{2,5})?$/) # rubocop:disable Style/RegexpLiteral else raise Puppet::DevError, "Datatype #{options[:type]} is not yet supported in this prototype" end end end @@ -230,7 +224,18 @@ end module_function :load_provider def self.class_name_from_type_name(type_name) type_name.to_s.split('_').map(&:capitalize).join + end + + # Add the value to `this` property or param, depending on whether param_or_property is `:newparam`, or `:newproperty` + def self.def_newvalues(this, param_or_property, *values) + if param_or_property == :newparam + this.newvalues(*values) + else + values.each do |v| + this.newvalue(v) {} + end + end end end