make the removal of line safer
authormh <mh@immerda.ch>
Sat, 9 Jan 2010 13:23:03 +0000 (14:23 +0100)
committerMicah Anderson <micah@riseup.net>
Thu, 2 Sep 2010 22:14:15 +0000 (18:14 -0400)
manifests/defines/line.pp

index c055f5b..e5b7fd5 100644 (file)
@@ -4,9 +4,9 @@
 
 # Usage:
 # line { description:
-#      file => "filename",
-#      line => "content",
-#      ensure => {absent,*present*}
+#   file => "filename",
+#   line => "content",
+#   ensure => {absent,*present*}
 # }
 #
 # Example:
 #
 #
 define line($file, $line, $ensure = 'present') {
-       case $ensure {
-               default : { err ( "unknown ensure value '${ensure}'" ) }
-               present: {
-                       exec { "echo '${line}' >> '${file}'":
-                               unless => "grep -qFx '${line}' '${file}'"
-                       }
-               }
-               absent: {
-                       exec { "perl -ni -e 'print if \$_ ne \"${line}\n\";' '${file}'":
-                               onlyif => "grep -qFx '${line}' '${file}'"
-                       }
-               }
-       }
+  case $ensure {
+    default : { err ( "unknown ensure value '${ensure}'" ) }
+    present: {
+      exec { "echo '${line}' >> '${file}'":
+        unless => "grep -qFx '${line}' '${file}'"
+      }
+    }
+    absent: {
+      $subst_line = regsubst($line,'(/|\.)','\\\1','G')
+      exec { "/bin/sed -i '/${subst_line}/d' '${file}'":
+        onlyif => "/bin/grep -qFx '${line}' '${file}'"
+      }
+    }
+  }
 }