fix whitespace (remove tabs & trailing whitespace)
[puppet_common.git] / manifests / defines / replace.pp
1 # common/manifests/defines/replace.pp -- replace a pattern in a file with a string
2 # Copyright (C) 2007 David Schmitt <david@schmitt.edv-bus.at>
3 # See LICENSE for the full license granted to you.
4
5 # Usage:
6 #
7 # replace { description:
8 #           file => "filename",
9 #           pattern => "regexp",
10 #           replacement => "replacement"
11 #
12 # Example:
13 # To replace the current port in /etc/munin/munin-node.conf
14 # with a new port, but only disturbing the file when needed:
15 #
16 # replace { set_munin_node_port:
17 #     file => "/etc/munin/munin-node.conf",
18 #     pattern => "^port (?!$port)[0-9]*",
19 #     replacement => "port $port"
20 # }
21
22 define replace($file, $pattern, $replacement) {
23     $pattern_no_slashes = slash_escape($pattern)
24     $replacement_no_slashes = slash_escape($replacement)
25     exec { "replace_${pattern}_${file}":
26         command => "/usr/bin/perl -pi -e 's/${pattern_no_slashes}/${replacement_no_slashes}/' '${file}'",
27         onlyif => "/usr/bin/perl -ne 'BEGIN { \$ret = 1; } \$ret = 0 if /${pattern_no_slashes}/ && ! /\\Q${replacement_no_slashes}\\E/; END { exit \$ret; }' '${file}'",
28         alias => "exec_$name",
29     }
30 }