summaryrefslogtreecommitdiff
path: root/lib/puppet
diff options
context:
space:
mode:
authorKen Barber <ken@bob.sh>2012-03-07 13:05:18 -0800
committerKen Barber <ken@bob.sh>2012-03-07 13:05:18 -0800
commit898ff80fa762dbbe52f50b872dd1bf3b04c254c9 (patch)
treea0c7c6ab9e25f41782ee9d0788f33a1e030b7756 /lib/puppet
parent63834354c2c2ed56a01c8ff3d898c62d53551de1 (diff)
parent2ce669c7f8aea6b66b2150798a5ef4d253b00a2e (diff)
Merge pull request #46 from jeffmccune/feature/2.3.x/validate_absolute_path_function
(#12357) Add validate_absolute_path() function
Diffstat (limited to 'lib/puppet')
-rw-r--r--lib/puppet/parser/functions/validate_absolute_path.rb38
1 files changed, 38 insertions, 0 deletions
diff --git a/lib/puppet/parser/functions/validate_absolute_path.rb b/lib/puppet/parser/functions/validate_absolute_path.rb
new file mode 100644
index 0000000..46f86ec
--- /dev/null
+++ b/lib/puppet/parser/functions/validate_absolute_path.rb
@@ -0,0 +1,38 @@
+module Puppet::Parser::Functions
+ newfunction(:validate_absolute_path, :doc => <<-'ENDHEREDOC') do |args|
+ Validate the string represents an absolute path in the filesystem. This function works
+ for windows and unix style paths.
+
+ The following values will pass:
+
+ $my_path = "C:/Program Files (x86)/Puppet Labs/Puppet"
+ validate_absolute_path($my_path)
+ $my_path2 = "/var/lib/puppet"
+ validate_absolute_path($my_path2)
+
+
+ The following values will fail, causing compilation to abort:
+
+ validate_absolute_path(true)
+ validate_absolute_path([ 'var/lib/puppet', '/var/foo' ])
+ validate_absolute_path([ '/var/lib/puppet', 'var/foo' ])
+ $undefined = undef
+ validate_absolute_path($undefined)
+
+ ENDHEREDOC
+
+ require 'puppet/util'
+
+ unless args.length > 0 then
+ raise Puppet::ParseError, ("validate_absolute_path(): wrong number of arguments (#{args.length}; must be > 0)")
+ end
+
+ args.each do |arg|
+ # This logic was borrowed from
+ # [lib/puppet/file_serving/base.rb](https://github.com/puppetlabs/puppet/blob/master/lib/puppet/file_serving/base.rb)
+ unless Puppet::Util.absolute_path?(arg, :posix) or Puppet::Util.absolute_path?(arg, :windows)
+ raise Puppet::ParseError, ("#{arg.inspect} is not an absolute path.")
+ end
+ end
+ end
+end