From e16a35da4b6f9a2370e6d8647fe7a135ff236419 Mon Sep 17 00:00:00 2001 From: David Dollar Date: Sun, 29 Jan 2012 01:12:56 -0500 Subject: [PATCH] fix changelog script --- Changelog => Changelog.md | 0 tasks/release.rake | 55 ++++++++++++++++++++++++++++++--------- 2 files changed, 42 insertions(+), 13 deletions(-) rename Changelog => Changelog.md (100%) diff --git a/Changelog b/Changelog.md similarity index 100% rename from Changelog rename to Changelog.md diff --git a/tasks/release.rake b/tasks/release.rake index 4c0fcf3..f0dd0c0 100644 --- a/tasks/release.rake +++ b/tasks/release.rake @@ -1,3 +1,5 @@ +require "time" + desc "Build the manual" task :man do ENV['RONN_MANUAL'] = "Foreman Manual" @@ -31,22 +33,49 @@ task :authors do puts authors.join(", ") end +def latest_release + latest = File.read("Changelog.md").split("\n").first.split(" ").last +end + +def newer_release + release = %x{ git tag --contains #{latest_release} }.split("\n")[1] +end + desc "Generate a Changelog" task :changelog do - timestamp = Time.now.utc.strftime('%m/%d/%Y') - sha = `git log | head -1`.split(' ').last - changelog = ["#{version} #{timestamp} #{sha}"] - changelog << ('=' * changelog[0].length) - changelog << '' + while release = newer_release + entry = %x{ git show --format="%h %cd" #{release} | head -n 1 } + commit, date_raw = entry.split(" ", 2) + date = Time.parse(date_raw).strftime("%Y-%m-%d") - last_sha = `cat Changelog | head -1`.split(' ').last - shortlog = `git log #{last_sha}..HEAD --pretty=format:'%s [%an]'` - changelog << shortlog.split("\n") - changelog.concat ['', '', ''] + message = "## #{release[1..-1]} #{date} #{commit}\n" + message += %x{ git log --format="%s [%an]" #{latest_release}..#{release} } - old_changelog = File.read('Changelog') - File.open('Changelog', 'w') do |file| - file.write(changelog.join("\n")) - file.write(old_changelog) + changelog = File.read("Changelog.md") + changelog = message + "\n" + changelog + + File.open("Changelog.md", "w") do |file| + file.puts changelog + end end + + + # date = + # message = "## #{release[1..-1]} + # timestamp = Time.now.utc.strftime('%m/%d/%Y') + # sha = `git log | head -1`.split(' ').last + # changelog = ["#{version} #{timestamp} #{sha}"] + # changelog << ('=' * changelog[0].length) + # changelog << '' + + # last_sha = `cat Changelog | head -1`.split(' ').last + # shortlog = `git log #{last_sha}..HEAD --pretty=format:'%s [%an]'` + # changelog << shortlog.split("\n") + # changelog.concat ['', '', ''] + + # old_changelog = File.read('Changelog') + # File.open('Changelog', 'w') do |file| + # file.write(changelog.join("\n")) + # file.write(old_changelog) + # end end