summaryrefslogtreecommitdiff
path: root/lib/puppet
diff options
context:
space:
mode:
authorJeff McCune <jeff@puppetlabs.com>2011-06-03 11:39:45 -0700
committerJeff McCune <jeff@puppetlabs.com>2011-06-03 11:39:45 -0700
commitb9f1bb6a63c5c06ce5b4e147dbca4ef505f02a25 (patch)
tree8513eb4b095facfd6f6489052bb9d5749b325ca1 /lib/puppet
parent46533ae4281bb58065a8f068c1334e5525deca1f (diff)
Add validate_bool() function to stdlib
This function aborts catalog compilation if any of the passed values are not true or false. Note, this catches the string values of true and false correct and will abort catalog compilation if they are not boolean values. Paired-with: Dan Bode <dan@puppetlabs.com>
Diffstat (limited to 'lib/puppet')
-rw-r--r--lib/puppet/parser/functions/validate_bool.rb39
1 files changed, 39 insertions, 0 deletions
diff --git a/lib/puppet/parser/functions/validate_bool.rb b/lib/puppet/parser/functions/validate_bool.rb
new file mode 100644
index 0000000..49e6378
--- /dev/null
+++ b/lib/puppet/parser/functions/validate_bool.rb
@@ -0,0 +1,39 @@
+module Puppet::Parser::Functions
+
+ newfunction(:validate_bool, :doc => <<-'ENDHEREDOC') do |args|
+ Validate all passed values are true or false. Abort catalog compilation if the
+ value does not pass the check.
+
+ Example:
+
+ These booleans validate
+
+ $iamtrue = true
+ validate_bool(true)
+ validate_bool(true, true, false, $iamtrue)
+
+ These strings do NOT validate and will abort catalog compilation
+
+ $some_array = [ true ]
+ validate_bool("false")
+ validate_bool("true")
+ validate_bool($some_array)
+
+ * Jeff McCune <jeff@puppetlabs.com>
+ * Dan Bode <dan@puppetlabs.com>
+
+ ENDHEREDOC
+
+ unless args.length > 0 then
+ raise Puppet::ParseError, ("validate_bool(): wrong number of arguments (#{args.length}; must be > 0)")
+ end
+
+ args.each do |arg|
+ unless (arg.is_a?(TrueClass) || arg.is_a?(FalseClass))
+ raise Puppet::ParseError, ("#{arg.inspect} is not a boolean. It looks to be a #{arg.class}")
+ end
+ end
+
+ end
+
+end