Sha256: 94a963b821363090358ad7266e7bc376c80ff2f93a08d63b62fb856a2353cca2

Contents?: true

Size: 1.36 KB

Versions: 2

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 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

2 entries across 2 versions & 1 rubygems

Version Path
puppet-0.25.1 lib/puppet/parser/functions/shellquote.rb
puppet-0.25.0 lib/puppet/parser/functions/shellquote.rb