class Chef::Util::FileEdit
Attributes
Public Class Methods
# File lib/chef/util/file_edit.rb, line 31 def initialize(filepath) raise ArgumentError, "File '#{filepath}' does not exist" unless File.exist?(filepath) @editor = Editor.new(File.open(filepath, &:readlines)) @original_pathname = filepath @file_edited = false end
Public Instance Methods
return if file has been edited
# File lib/chef/util/file_edit.rb, line 39 def file_edited? @file_edited end
search the file line by line and match each line with the given regex if matched, insert newline after each matching line
# File lib/chef/util/file_edit.rb, line 69 def insert_line_after_match(regex, newline) @changes = (editor.append_line_after(regex, newline) > 0) || @changes end
search the file line by line and match each line with the given regex if not matched, insert newline at the end of the file
# File lib/chef/util/file_edit.rb, line 75 def insert_line_if_no_match(regex, newline) @changes = (editor.append_line_if_missing(regex, newline) > 0) || @changes end
search the file line by line and match each line with the given regex if matched, delete the match (all occurrences) from the line
# File lib/chef/util/file_edit.rb, line 63 def search_file_delete(regex) search_file_replace(regex, "") end
search the file line by line and match each line with the given regex if matched, delete the line
# File lib/chef/util/file_edit.rb, line 57 def search_file_delete_line(regex) @changes = (editor.remove_lines(regex) > 0) || @changes end
search the file line by line and match each line with the given regex if matched, replace the match (all occurrences) with the replace parameter
# File lib/chef/util/file_edit.rb, line 51 def search_file_replace(regex, replace) @changes = (editor.replace(regex, replace) > 0) || @changes end
search the file line by line and match each line with the given regex if matched, replace the whole line with newline.
# File lib/chef/util/file_edit.rb, line 45 def search_file_replace_line(regex, newline) @changes = (editor.replace_lines(regex, newline) > 0) || @changes end
# File lib/chef/util/file_edit.rb, line 79 def unwritten_changes? !!@changes end
Make a copy of old_file and write new file out (only if file changed)
# File lib/chef/util/file_edit.rb, line 84 def write_file if @changes backup_pathname = original_pathname + ".old" FileUtils.cp(original_pathname, backup_pathname, :preserve => true) File.open(original_pathname, "w") do |newfile| editor.lines.each do |line| newfile.puts(line) end newfile.flush end @file_edited = true end @changes = false end