diff options
Diffstat (limited to 'lib/sitegen.rb')
-rw-r--r-- | lib/sitegen.rb | 26 |
1 files changed, 6 insertions, 20 deletions
diff --git a/lib/sitegen.rb b/lib/sitegen.rb index 765cfbd..ca0c4bf 100644 --- a/lib/sitegen.rb +++ b/lib/sitegen.rb @@ -65,12 +65,14 @@ module Sitegen when @mk[target].nil? raise "No rule to make target '#{target}'. Stop." when target.end_with?(".atom") - write_ifchanged(target) do |file| + puts "atom #{target}" + write_atomic(target) do |file| file.puts('<?xml version="1.0" encoding="utf-8"?>') file.print(@mk[target].atom) end when target.end_with?(".html") - write_ifchanged(target) do |file| + puts "html #{target}" + write_atomic(target) do |file| file.print(@mk[target].html) end else @@ -78,10 +80,9 @@ module Sitegen end end - def self.write_ifchanged(outfilename) + def self.write_atomic(outfilename) tmpfilename = "#{File::dirname(outfilename)}/.tmp#{File::basename(outfilename)}" - # Write our stuff to tmpfile FileUtils::mkdir_p(File::dirname(tmpfilename)) tmpfile = File::new(tmpfilename, 'wb') begin @@ -92,21 +93,6 @@ module Sitegen raise e end tmpfile.close - - # Now see if we should replace outfile with tmpfile - same = false - begin - if FileUtils::compare_file(tmpfilename, outfilename) - same = true - end - rescue Errno::ENOENT - end - - # And actually do so - if same - File::unlink(tmpfilename) - else - File::rename(tmpfilename, outfilename) - end + File::rename(tmpfilename, outfilename) end end |