Class: ChangesSince::ChangelogPrinter
- Inherits:
-
Object
- Object
- ChangesSince::ChangelogPrinter
- Defined in:
- lib/changes_since/changelog_printer.rb
Constant Summary collapse
- TAGS =
{ :public => 'Public', :bug => 'Bugs', :internal => 'Internal' }
Instance Attribute Summary collapse
-
#options ⇒ Object
readonly
Returns the value of attribute options.
-
#repo ⇒ Object
readonly
Returns the value of attribute repo.
-
#teams ⇒ Object
readonly
Returns the value of attribute teams.
Instance Method Summary collapse
-
#initialize(commits, teams, options, repo) ⇒ ChangelogPrinter
constructor
A new instance of ChangelogPrinter.
- #print! ⇒ Object
- #print_commits!(output_commits) ⇒ Object
- #print_message(commit, type) ⇒ Object
- #print_team_commits! ⇒ Object
Constructor Details
#initialize(commits, teams, options, repo) ⇒ ChangelogPrinter
Returns a new instance of ChangelogPrinter.
10 11 12 13 14 15 |
# File 'lib/changes_since/changelog_printer.rb', line 10 def initialize(commits, teams, , repo) @commits = commits @teams = teams = @repo = repo end |
Instance Attribute Details
#options ⇒ Object (readonly)
Returns the value of attribute options.
2 3 4 |
# File 'lib/changes_since/changelog_printer.rb', line 2 def end |
#repo ⇒ Object (readonly)
Returns the value of attribute repo.
2 3 4 |
# File 'lib/changes_since/changelog_printer.rb', line 2 def repo @repo end |
#teams ⇒ Object (readonly)
Returns the value of attribute teams.
2 3 4 |
# File 'lib/changes_since/changelog_printer.rb', line 2 def teams @teams end |
Instance Method Details
#print! ⇒ Object
17 18 19 20 21 22 23 24 |
# File 'lib/changes_since/changelog_printer.rb', line 17 def print! if teams print_team_commits! else print_commits!(@commits) end return end |
#print_commits!(output_commits) ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/changes_since/changelog_printer.rb', line 49 def print_commits!(output_commits) output_commits.sort! { |a, b| a..name <=> b..name } if [:tags] TAGS.each do |type, title| tagged_commits = output_commits.select { |commit| commit..include?("##{type}") } next if tagged_commits.empty? puts "\n#{title}:\n\n" tagged_commits.each { |commit| (commit, type) } output_commits -= tagged_commits end return if output_commits.empty? puts "\nUnclassified:\n\n" end output_commits.each { |commit| (commit, nil) } end |
#print_message(commit, type) ⇒ Object
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/changes_since/changelog_printer.rb', line 68 def (commit, type) = commit..split("\n\n") if .first =~ /Merge pull request/ title = .last pr = .first.split(" from ").first.split("#").last else title = .first end title.gsub!("##{type}", "") if type = commit..name sha = commit.sha[0..9] if [:sha] if [:markdown] text = "|#{title}|" text << "#{branch_author}|" text << "[##{pr}|#{@repo}/pull/#{pr}]|" if @repo text << "[#{sha}|#{@repo}/commit/#{sha}]|" if sha else text = "* #{title} (#{branch_author}) #{options[:sha] ? commit.sha[0..9] : ''}" end puts text end |
#print_team_commits! ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/changes_since/changelog_printer.rb', line 26 def print_team_commits! teams.each do |team, members| = /#{members.join("|")}/i team_commits = @commits.select do |commit| [commit..name, commit..email].any? do |str| str =~ end end next if team_commits.empty? @commits -= team_commits if [:markdown] puts "||*#{team}*||Author||PR||#{"Commit" if options[:sha]}" else puts "\n*#{team}*\n" end print_commits!(team_commits) end return if @commits.empty? puts "\n*Other*\n\n" @commits.each { |commit| (commit, nil) } end |