plain_file.rb 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. def write_new_file(name, new_line, owner, group)
  2. file name do
  3. content "#{new_line}\n"
  4. owner owner
  5. group group
  6. action :create
  7. end
  8. end
  9. action :replace do
  10. if ::File.exists? new_resource.name
  11. current_content = Chef::Util::FileEdit.new new_resource.name
  12. current_content.search_file_replace(new_resource.current_line, new_resource.new_line)
  13. edited = current_content.file_edited
  14. current_content.write_file
  15. new_resource.updated_by_last_action(edited)
  16. else
  17. Chef::Log.debug("replace action couldn't be performed. #{new_resource.name} does not exist")
  18. end
  19. end
  20. action :append do
  21. if ::File.exists? new_resource.name
  22. open(new_resource.name, 'a') { |f| f.puts new_resource.new_line }
  23. else
  24. write_new_file(new_resource.name,
  25. new_resource.new_line,
  26. new_resource.owner,
  27. new_resource.group)
  28. end
  29. new_resource.updated_by_last_action(true)
  30. end
  31. action :insert_if_no_match do
  32. if ::File.exists? new_resource.name
  33. new_file = Chef::Util::FileEdit.new new_resource.name
  34. new_file.insert_line_if_no_match(new_resource.pattern,
  35. new_resource.new_line)
  36. edited = new_file.file_edited
  37. new_file.write_file
  38. else
  39. write_new_file(new_resource.name,
  40. new_resource.new_line,
  41. new_resource.owner,
  42. new_resource.group)
  43. edited = true
  44. end
  45. new_resource.updated_by_last_action(edited)
  46. end
  47. action :insert_after_match do
  48. if ::File.exists? new_resource.name
  49. new_file = Chef::Util::FileEdit.new new_resource.name
  50. new_file.insert_line_after_match(new_resource.pattern,
  51. new_resource.new_line)
  52. edited = new_file.file_edited
  53. new_file.write_file
  54. else
  55. write_new_file(new_resource.name,
  56. new_resource.new_line,
  57. new_resource.owner,
  58. new_resource.group)
  59. edited = true
  60. end
  61. new_resource.updated_by_last_action(edited)
  62. end
  63. action :remove do
  64. if ::File.exists? new_resource.name
  65. new_file = Chef::Util::FileEdit.new new_resource.name
  66. new_file.search_file_delete_line(new_resource.pattern)
  67. edited = new_file.file_edited
  68. new_file.write_file
  69. new_resource.updated_by_last_action(edited)
  70. end
  71. end