Update puppetlabs/stdlib module
[mirror/dsa-puppet.git] / 3rdparty / modules / stdlib / lib / puppet / parser / functions / shell_escape.rb
1 require 'shellwords'
2 #
3 # shell_escape.rb
4 #
5 module Puppet::Parser::Functions
6   newfunction(:shell_escape, :type => :rvalue, :doc => <<-DOC
7     Escapes a string so that it can be safely used in a Bourne shell command line.
8
9     Note that the resulting string should be used unquoted and is not intended for use in double quotes nor in single
10     quotes.
11
12     This function behaves the same as ruby's Shellwords.shellescape() function.
13   DOC
14              ) do |arguments|
15
16     raise(Puppet::ParseError, "shell_escape(): Wrong number of arguments given (#{arguments.size} for 1)") if arguments.size != 1
17
18     # explicit conversion to string is required for ruby 1.9
19     string = arguments[0].to_s
20
21     result = Shellwords.shellescape(string)
22
23     return result
24   end
25 end
26
27 # vim: set ts=2 sw=2 et :