diff options
author | Helen <helen@puppetlabs.com> | 2016-04-15 13:29:23 +0100 |
---|---|---|
committer | Helen <helen@puppetlabs.com> | 2016-04-15 13:29:23 +0100 |
commit | d9f65387c99c99177f94075fc840e7c574e07417 (patch) | |
tree | e2b1bf7362973650efdcac0a3be68df7d9bae8f6 /lib/puppet/parser/functions/validate_email_address.rb | |
parent | 29961218a74bfdae96371c42a3c336e714c79a93 (diff) | |
parent | 085035dccebbf27cf2bfd7f1d9101c746f5178a2 (diff) |
Merge pull request #595 from tphoney/4.12.0_release
master to 4.12.x
Diffstat (limited to 'lib/puppet/parser/functions/validate_email_address.rb')
-rw-r--r-- | lib/puppet/parser/functions/validate_email_address.rb | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/lib/puppet/parser/functions/validate_email_address.rb b/lib/puppet/parser/functions/validate_email_address.rb new file mode 100644 index 0000000..63f59a7 --- /dev/null +++ b/lib/puppet/parser/functions/validate_email_address.rb @@ -0,0 +1,31 @@ +module Puppet::Parser::Functions + newfunction(:validate_email_address, doc: <<-ENDHEREDOC + Validate that all values passed are valid email addresses. + Fail compilation if any value fails this check. + The following values will pass: + $my_email = "waldo@gmail.com" + validate_email_address($my_email) + validate_email_address("bob@gmail.com", "alice@gmail.com", $my_email) + + The following values will fail, causing compilation to abort: + $some_array = [ 'bad_email@/d/efdf.com' ] + validate_email_address($some_array) + ENDHEREDOC + ) do |args| + rescuable_exceptions = [ArgumentError] + + if args.empty? + raise Puppet::ParseError, "validate_email_address(): wrong number of arguments (#{args.length}; must be > 0)" + end + + args.each do |arg| + raise Puppet::ParseError, "#{arg.inspect} is not a string." unless arg.is_a?(String) + + begin + raise Puppet::ParseError, "#{arg.inspect} is not a valid email address" unless function_is_email_address([arg]) + rescue *rescuable_exceptions + raise Puppet::ParseError, "#{arg.inspect} is not a valid email address" + end + end + end +end |