X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=3rdparty%2Fmodules%2Fstdlib%2Flib%2Fpuppet%2Fparser%2Ffunctions%2Fvalidate_absolute_path.rb;h=0db10c3f5dde2ec4b81642e961fc5ebc3b1b40c9;hb=131e09855e065be940e104d9ab0f18940cc76257;hp=b6966809682e990850e2e1f6ea63419c18443a56;hpb=ad88f67c13ae0f1a08936dad643f1e3509ab5f40;p=mirror%2Fdsa-puppet.git diff --git a/3rdparty/modules/stdlib/lib/puppet/parser/functions/validate_absolute_path.rb b/3rdparty/modules/stdlib/lib/puppet/parser/functions/validate_absolute_path.rb index b69668096..0db10c3f5 100644 --- a/3rdparty/modules/stdlib/lib/puppet/parser/functions/validate_absolute_path.rb +++ b/3rdparty/modules/stdlib/lib/puppet/parser/functions/validate_absolute_path.rb @@ -1,5 +1,8 @@ +# +# validate_absolute_path.rb +# module Puppet::Parser::Functions - newfunction(:validate_absolute_path, :doc => <<-'ENDHEREDOC') do |args| + newfunction(:validate_absolute_path, :doc => <<-'DOC') do |args| Validate the string represents an absolute path in the filesystem. This function works for windows and unix style paths. @@ -24,12 +27,12 @@ module Puppet::Parser::Functions $undefined = undef validate_absolute_path($undefined) - ENDHEREDOC + DOC require 'puppet/util' - unless args.length > 0 then - raise Puppet::ParseError, ("validate_absolute_path(): wrong number of arguments (#{args.length}; must be > 0)") + if args.empty? + raise Puppet::ParseError, "validate_absolute_path(): wrong number of arguments (#{args.length}; must be > 0)" end args.each do |arg| @@ -37,31 +40,13 @@ module Puppet::Parser::Functions candidates = arg # if arg is just a string with a path to test, convert it to an array # to avoid test code duplication - unless arg.is_a?(Array) then - candidates = Array.new(1,arg) + unless arg.is_a?(Array) + candidates = Array.new(1, arg) end - # iterate over all pathes within the candidates array + # iterate over all paths within the candidates array candidates.each do |path| - # This logic was borrowed from - # [lib/puppet/file_serving/base.rb](https://github.com/puppetlabs/puppet/blob/master/lib/puppet/file_serving/base.rb) - # Puppet 2.7 and beyond will have Puppet::Util.absolute_path? Fall back to a back-ported implementation otherwise. - if Puppet::Util.respond_to?(:absolute_path?) then - unless Puppet::Util.absolute_path?(path, :posix) or Puppet::Util.absolute_path?(path, :windows) - raise Puppet::ParseError, ("#{path.inspect} is not an absolute path.") - end - else - # This code back-ported from 2.7.x's lib/puppet/util.rb Puppet::Util.absolute_path? - # Determine in a platform-specific way whether a path is absolute. This - # defaults to the local platform if none is specified. - # Escape once for the string literal, and once for the regex. - slash = '[\\\\/]' - name = '[^\\\\/]+' - regexes = { - :windows => %r!^(([A-Z]:#{slash})|(#{slash}#{slash}#{name}#{slash}#{name})|(#{slash}#{slash}\?#{slash}#{name}))!i, - :posix => %r!^/!, - } - rval = (!!(path =~ regexes[:posix])) || (!!(path =~ regexes[:windows])) - rval or raise Puppet::ParseError, ("#{path.inspect} is not an absolute path.") + unless function_is_absolute_path([path]) + raise Puppet::ParseError, "#{path.inspect} is not an absolute path." end end end