summaryrefslogtreecommitdiff
path: root/lib/sitegen.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sitegen.rb')
-rw-r--r--lib/sitegen.rb26
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