summaryrefslogtreecommitdiff
path: root/lib/puppet/parser/functions/validate_nonemptystring.rb
blob: d45fae5c5ccad1d9e828d27bbac7b618668c676f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
module Puppet::Parser::Functions

  newfunction(:validate_nonemptystring, :doc => <<-'ENDHEREDOC') do |args|
    Validate that all passed values are string data structures and not empty
    i.e. not undef or ''. Abort catalog compilation if any value fails this
    check.

    The following values will pass:

        $my_string = "one two"
        validate_string($my_string, 'three')

    The following values will fail, causing compilation to abort:

        validate_string(true)
        validate_string([ 'some', 'array' ])
        $undefined = undef
        validate_string($undefined)

    ENDHEREDOC

    unless args.length > 0 then
      raise Puppet::ParseError, ("validate_string(): wrong number of arguments (#{args.length}; must be > 0)")
    end

    args.each do |arg|
      unless arg.is_a?(String)
        raise Puppet::ParseError, ("#{arg.inspect} is not a string.  It looks to be a #{arg.class}")
      end
      if arg == nil || arg == '' || arg == :undef
        raise Puppet::ParseError, ("#{arg.inspect} is empty or undef")
      end
    end
  end
end