class Releaser::ChangeLog

Attributes

commits[RW]
repo[RW]
tag[RW]

Public Class Methods

new(repo, tag, commits) click to toggle source
# File lib/releaser.rb, line 9
def initialize(repo, tag, commits)
  @repo, @tag, @commits = repo, tag, commits
end

Public Instance Methods

format() click to toggle source
# File lib/releaser.rb, line 25
def format
  lines = ["Release #{name}: #{tag.time}"]
  lines << "\nTickets Resolved:"
  tickets.each do |t|
    lines << " * #{t} - #{jira_url}/browse/#{t}"
  end

  lines << "\nCommits:"
  commits.each do |c|
    author = c.author[:name]
    message = c.message.split("\n")[0]
    lines << " * [#{author}] #{message} (#{c.oid[0..8]})"
  end
  lines.join("\n")
end
jira_prefix() click to toggle source
# File lib/releaser.rb, line 17
def jira_prefix
  repo.repo.config['releaser.jira.prefix']
end
jira_url() click to toggle source
# File lib/releaser.rb, line 21
def jira_url
  repo.repo.config['releaser.jira.url']
end
name() click to toggle source
# File lib/releaser.rb, line 13
def name
  tag.name
end
tickets() click to toggle source
# File lib/releaser.rb, line 41
def tickets
  @tickets ||= Set.new(commits.flat_map { |c|
    c.message.match(/#{jira_prefix}-\d+/) { |m| m && m[0] }
  }.compact)
end