summaryrefslogtreecommitdiff
path: root/lib/puppet/provider/file_line
diff options
context:
space:
mode:
authorPeter Meier <peter.meier@immerda.ch>2012-02-09 15:56:09 +0100
committerPeter Meier <peter.meier@immerda.ch>2012-02-09 15:56:09 +0100
commitfc5cfc8cca2d9650d0b7e1dcafe92bf69aedadf9 (patch)
tree055da1b961bd251965112ceeefbaad160b6374fb /lib/puppet/provider/file_line
parentd6fdfaba11aeff35604f1d5a917823f145a1cb76 (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.rb14
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