about summary refs log tree commit homepage
path: root/lib/olddoc/changelog.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/olddoc/changelog.rb')
-rw-r--r--lib/olddoc/changelog.rb28
1 files changed, 28 insertions, 0 deletions
diff --git a/lib/olddoc/changelog.rb b/lib/olddoc/changelog.rb
new file mode 100644
index 0000000..7a7fe96
--- /dev/null
+++ b/lib/olddoc/changelog.rb
@@ -0,0 +1,28 @@
+# helper method for generating the ChangeLog in RDoc format atomically
+require 'tempfile'
+
+module Olddoc::Changelog
+  include Olddoc::History
+
+  def changelog
+    fp = Tempfile.new('ChangeLog', '.')
+    fp.write "ChangeLog from #@cgit_uri"
+    cmd = %w(git log)
+    if @changelog_start && tags[0]
+      range = "#@changelog_start..#{tags[0][:tag]}"
+      fp.write(" (#{range})")
+      cmd << range
+    end
+    fp.write("\n\n")
+    prefix = "   "
+    IO.popen(cmd.join(' ')) do |io|
+      io.each { |line|
+        fp.write prefix
+        fp.write line
+      }
+    end
+    fp.chmod(0666 & ~File.umask)
+    File.rename(fp.path, 'ChangeLog')
+    fp.close!
+  end
+end