Browse Source

Changed the conf provider plain_file to use Chef::Util::FileEdit

Juanje Ojeda 12 years ago
parent
commit
ac9e97f083
1 changed files with 22 additions and 31 deletions
  1. 22 31
      providers/plain_file.rb

+ 22 - 31
providers/plain_file.rb

@@ -1,44 +1,35 @@
+require 'chef/util/file_edit'
+
 action :replace do
-  file new_resource.name do
-    if ::File.exists? new_resource.name
-      old_content = IO.read new_resource.name
-      if old_content =~ /#{new_resource.before}/
-        content old_content.gsub(new_resource.before, new_resource.after)
-      end
-      owner new_resource.owner
-      group new_resource.group
-    else
-      Chef::Log.debug("replace action couldn't be performed. #{new_resource.name} does not exist")
-    end
+  if ::File.exists? new_resource.name
+    old_content = Chef::Util::FileEdit.new new_resource.name
+    old_content.search_file_replace(new_resource.before, new_resource.after)
+    old_content.write_file
+  else
+    Chef::Log.debug("replace action couldn't be performed. #{new_resource.name} does not exist")
   end
 end
 
 action :add do
-  file new_resource.name do
-    if ::File.exists? new_resource.name
-      old_content = IO.read new_resource.name
-    else
-      old_content = ""
+  if ::File.exists? new_resource.name
+    new_file = Chef::Util::FileEdit.new new_resource.name
+    new_file.insert_line_if_no_match(new_resource.pattern, new_resource.new_line)
+    new_file.write_file
+  else
+    file new_resource.name do
+      content new_resource.new_line + "\n"
+      owner new_resource.owner
+      group new_resource.group
+      action :create
     end
-    old_content << new_resource.new_line + "\n"
-    content old_content
-    owner new_resource.owner
-    group new_resource.group
   end
 end
 
 action :remove do
-  file new_resource.name do
-    if ::File.exists? new_resource.name
-      old_content = IO.read new_resource.name
-      new_content = ""
-      old_content.each do |line|
-        new_content << line unless line =~ /#{new_resource.pattern}/
-      end
-      content new_content
-      owner new_resource.owner
-      group new_resource.group
-    end
+  if ::File.exists? new_resource.name
+    new_file = Chef::Util::FileEdit.new new_resource.name
+    new_file.search_file_delete_line(new_resource.pattern)
+    new_file.write_file
   end
 end