Sha256: 399f93e0322904f45bf6ebfec3d45c1825499adb8c91c1f44a98c295be195ece

Contents?: true

Size: 1.36 KB

Versions: 4

Compression:

Stored size: 1.36 KB

Contents

module Puppet::Parser::Functions

    Safe = 'a-zA-Z0-9@%_+=:,./-'    # Safe unquoted
    Dangerous = '!"`$\\'            # Unsafe inside double quotes

    newfunction(:shellquote, :type => :rvalue, :doc => "\
        Quote and concatenate arguments for use in Bourne shell.

        Each argument is quoted separately, and then all are concatenated
        with spaces.  If an argument is an array, the elements of that
        array is interpolated within the rest of the arguments; this makes
        it possible to have an array of arguments and pass that array to
        shellquote() instead of having to specify each argument
        individually in the call.
        ") \
    do |args|

        result = []
        args.flatten.each do |word|
            if word.length != 0 and word.count(Safe) == word.length
                result << word
            elsif word.count(Dangerous) == 0
                result << ('"' + word + '"')
            elsif word.count("'") == 0
                result << ("'" + word + "'")
            else
                r = '"'
                word.each_byte() do |c|
                    if Dangerous.include?(c)
                        r += "\\"
                    end
                    r += c.chr()
                end
                r += '"'
                result << r
            end
        end

        return result.join(" ")
    end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
puppet-0.25.5 lib/puppet/parser/functions/shellquote.rb
puppet-0.25.4 lib/puppet/parser/functions/shellquote.rb
puppet-0.25.3 lib/puppet/parser/functions/shellquote.rb
puppet-0.25.2 lib/puppet/parser/functions/shellquote.rb