From fd2a8194ac7a0cd5295bfa1974a4da3e2dada416 Mon Sep 17 00:00:00 2001
From: Thomas Bellman <bellman@lysator.liu.se>
Date: Sun, 29 Apr 2018 16:52:05 +0200
Subject: [PATCH] Use Augeas to manage (remove) Grub0 kernel options.

Augeas knows the grammar for the Grub0 config file, so we don't need
to have complicated regular expressions in our code to deal with all
the corner cases.
---
 manifests/grub0/kernel_option.pp | 16 ++++++----------
 1 file changed, 6 insertions(+), 10 deletions(-)

diff --git a/manifests/grub0/kernel_option.pp b/manifests/grub0/kernel_option.pp
index 578442f..5cee05f 100644
--- a/manifests/grub0/kernel_option.pp
+++ b/manifests/grub0/kernel_option.pp
@@ -1,4 +1,4 @@
-# Copyright © 2017   Thomas Bellman, Linköping, Sweden
+# Copyright © 2017-2018   Thomas Bellman, Linköping, Sweden
 # Licensed under the GNU LGPL v3+; see the README file for more information.
 
 
@@ -7,18 +7,14 @@
  */
 define bootloader::grub0::kernel_option($ensure, $value)
 {
-    $prefix = '^(\s*kernel\s(|.*\s))'
-    $suffix = '(|\s.*)$'
-    $qname = regexp_quote($name)
-
     if ($ensure == 'absent')
     {
-	regexp_replace_lines {
+	augeas {
 	    "bootloader::grub0::kernel_option::${name}":
-		file => '/boot/grub/grub.conf',
-		pattern => "${prefix}${qname}(=\\S*)?${suffix}",
-		# \1 is prefix, \4 is suffix
-		replacement => '\1\4';
+		incl => '/boot/grub/grub.conf',
+		lens => 'Grub.lns',
+		context => '/files/boot/grub/grub.conf',
+		changes => "rm title[*]/kernel/${name}";
 	}
     }
     elsif ($ensure != 'present')
-- 
GitLab