X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=3rdparty%2Fmodules%2Fstdlib%2Flib%2Fpuppet%2Fparser%2Ffunctions%2Fgetvar.rb;h=41d3c4f4119f985900302930bac147680e4efdeb;hb=30caaa85aed7015ca0d77216bff175eebd917eb7;hp=3af8d48103b3a5e25baba2127a11c08e86a19bd6;hpb=6963202b4b62c2816655ac9532521b018fdf83bd;p=mirror%2Fdsa-puppet.git diff --git a/3rdparty/modules/stdlib/lib/puppet/parser/functions/getvar.rb b/3rdparty/modules/stdlib/lib/puppet/parser/functions/getvar.rb index 3af8d4810..41d3c4f41 100644 --- a/3rdparty/modules/stdlib/lib/puppet/parser/functions/getvar.rb +++ b/3rdparty/modules/stdlib/lib/puppet/parser/functions/getvar.rb @@ -1,35 +1,40 @@ +# +# getvar.rb +# module Puppet::Parser::Functions + newfunction(:getvar, :type => :rvalue, :doc => <<-'DOC') do |args| + @summary + Lookup a variable in a given namespace. - newfunction(:getvar, :type => :rvalue, :doc => <<-'ENDHEREDOC') do |args| - Lookup a variable in a remote namespace. + @return + undef - if variable does not exist - For example: + @example Example usage + $foo = getvar('site::data::foo') # Equivalent to $foo = $site::data::foo - $foo = getvar('site::data::foo') - # Equivalent to $foo = $site::data::foo + @example Where namespace is stored in a string + $datalocation = 'site::data' + $bar = getvar("${datalocation}::bar") # Equivalent to $bar = $site::data::bar - This is useful if the namespace itself is stored in a string: - - $datalocation = 'site::data' - $bar = getvar("${datalocation}::bar") - # Equivalent to $bar = $site::data::bar - ENDHEREDOC + > **Note:** from Puppet 6.0.0, the compatible function with the same name in Puppet core + will be used instead of this function. The new function also has support for + digging into a structured value. See the built-in + [`getvar`](https://puppet.com/docs/puppet/latest/function.html#getvar) function + DOC unless args.length == 1 - raise Puppet::ParseError, ("getvar(): wrong number of arguments (#{args.length}; must be 1)") + raise Puppet::ParseError, "getvar(): wrong number of arguments (#{args.length}; must be 1)" end begin result = nil catch(:undefined_variable) do - result = self.lookupvar("#{args[0]}") + result = lookupvar((args[0]).to_s) end - # avoid relying on incosistent behaviour around ruby return values from catch + # avoid relying on inconsistent behaviour around ruby return values from catch result - rescue Puppet::ParseError # Eat the exception if strict_variables = true is set + rescue Puppet::ParseError # rubocop:disable Lint/HandleExceptions : Eat the exception if strict_variables = true is set end - end - end