summaryrefslogtreecommitdiffstats
path: root/lib/puppet
diff options
context:
space:
mode:
Diffstat (limited to 'lib/puppet')
-rwxr-xr-xlib/puppet/type/file/content.rb18
1 files changed, 17 insertions, 1 deletions
diff --git a/lib/puppet/type/file/content.rb b/lib/puppet/type/file/content.rb
index 7d541645c..d7bb022a3 100755
--- a/lib/puppet/type/file/content.rb
+++ b/lib/puppet/type/file/content.rb
@@ -1,5 +1,6 @@
require 'net/http'
require 'uri'
+require 'tempfile'
require 'puppet/util/checksums'
require 'puppet/network/http/api/v1'
@@ -101,7 +102,9 @@ module Puppet
result = super
if ! result and Puppet[:show_diff]
- string_file_diff(@resource[:path], actual_content)
+ write_temporarily do |path|
+ print diff(@resource[:path], path)
+ end
end
return result
end
@@ -137,6 +140,19 @@ module Puppet
return return_event
end
+ def write_temporarily
+ tempfile = Tempfile.new("puppet-file")
+ tempfile.open
+
+ write(tempfile)
+
+ tempfile.close
+
+ yield tempfile.path
+
+ tempfile.delete
+ end
+
def write(file)
resource.parameter(:checksum).sum_stream { |sum|
each_chunk_from(actual_content || resource.parameter(:source)) { |chunk|