Sha256: f38b7341dd6e2d5a9179ce97635f9985169e8816752f14f30a5f9885618dcf88
Contents?: true
Size: 1.64 KB
Versions: 2
Compression:
Stored size: 1.64 KB
Contents
# Generates a HISTORY.md file for your repo based on tags and commits # Requires: gem install gitlab-grit # Usage: ruby history.rb /your/repo/directory # # Based on https://coderwall.com/p/99mjcg require 'grit' if ARGV.size < 1 p "Usage: ruby history.rb /your/repo/directory" exit end output_file = 'HISTORY.md' repo_dir = ARGV[0] output = "# #{File.basename(File.absolute_path(repo_dir))} - History\n" repo = Grit::Repo.new(repo_dir) head = Grit::Tag.new(repo.commits.first.sha, repo, repo.commits.first.id) tags = repo.tags + [head] tags.sort! {|x,y| y.commit.authored_date <=> x.commit.authored_date} output << "## Tags\n" tags.each do |tag| tag_name = tag.name if tag == tags.first tag_name = 'LATEST' end output << "* [#{tag_name} - #{tag.commit.authored_date.strftime("%-d %b, %Y")} (#{tag.commit.sha[0,8]})](##{tag_name})\n" end output << "\n## Details\n" tagcount = 0 tags.each do |tag| tag_name = tag.name if tag == tags.first tag_name = 'LATEST' end output << "### <a name = \"#{tag_name}\">#{tag_name} - #{tag.commit.authored_date.strftime("%-d %b, %Y")} (#{tag.commit.sha[0,8]})\n\n" if (tagcount != tags.size - 1) commit_set = repo.commits_between(tags[tagcount + 1].name, tag.name) commit_set.sort! {|x,y| y.authored_date <=> x.authored_date } commit_set.each do |c| output << "* #{c.short_message} (#{c.sha[0,8]})\n\n" if c.short_message != c.message output << "\n```\n#{c.message.gsub(/```/, "\n")}\n```\n" end end else output << "* Initial release.\n" end tagcount += 1 end File.open(output_file, 'w') { |f| f.write(output) } puts "success, output sent to #{output_file}"
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
beaker-1.17.0 | history.rb |
beaker-1.16.0 | history.rb |