diff options
author | Peter Meier <peter.meier@immerda.ch> | 2012-02-09 15:56:09 +0100 |
---|---|---|
committer | Peter Meier <peter.meier@immerda.ch> | 2012-02-09 15:56:09 +0100 |
commit | fc5cfc8cca2d9650d0b7e1dcafe92bf69aedadf9 (patch) | |
tree | 055da1b961bd251965112ceeefbaad160b6374fb /lib/puppet/provider/file_line | |
parent | d6fdfaba11aeff35604f1d5a917823f145a1cb76 (diff) |
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.
Diffstat (limited to 'lib/puppet/provider/file_line')
-rw-r--r-- | lib/puppet/provider/file_line/ruby.rb | 14 |
1 files changed, 13 insertions, 1 deletions
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 |