From fc5cfc8cca2d9650d0b7e1dcafe92bf69aedadf9 Mon Sep 17 00:00:00 2001 From: Peter Meier Date: Thu, 9 Feb 2012 15:56:09 +0100 Subject: implement #11017 - make file_line type ensurable * Implement a simple destroy method. * Add tests for it * Refactor code, so file is actually read only once. However, due to the nature how provider tests are run, we need to ensure that the file is read before we open it to write it. --- lib/puppet/provider/file_line/ruby.rb | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'lib/puppet/provider/file_line') diff --git a/lib/puppet/provider/file_line/ruby.rb b/lib/puppet/provider/file_line/ruby.rb index 63bbd8e..f5d3a32 100644 --- a/lib/puppet/provider/file_line/ruby.rb +++ b/lib/puppet/provider/file_line/ruby.rb @@ -1,7 +1,7 @@ Puppet::Type.type(:file_line).provide(:ruby) do def exists? - File.readlines(resource[:path]).find do |line| + lines.find do |line| line.chomp == resource[:line].chomp end end @@ -12,4 +12,16 @@ Puppet::Type.type(:file_line).provide(:ruby) do end end + def destroy + local_lines = lines + File.open(resource[:path],'w') do |fh| + fh.write(local_lines.reject{|l| l.chomp == resource[:line] }.join('')) + end + end + + private + def lines + @lines ||= File.readlines(resource[:path]) + end + end -- cgit v1.2.3