From: Jeff McCune Date: Fri, 3 Jun 2011 18:39:45 +0000 (-0700) Subject: Add validate_bool() function to stdlib X-Git-Url: https://gitweb.fluxo.info/?a=commitdiff_plain;h=b9f1bb6a63c5c06ce5b4e147dbca4ef505f02a25;p=puppet-stdlib.git 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 --- 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 + * Dan Bode + + 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