class Manifestly::ManifestDiff::ItemDiff

Public Class Methods

new(from_item, to_item) click to toggle source
# File lib/manifestly/manifest_diff.rb, line 5
def initialize(from_item, to_item)
  @from_item = from_item
  @to_item = to_item

  @markdown = "## #{to_item.repository_name}#{item_source_info}\n\n#{commits_markdown}\n"
end

Public Instance Methods

commits_markdown() click to toggle source
# File lib/manifestly/manifest_diff.rb, line 34
def commits_markdown
  if new_item?
    "* This manifest item was not in the prior manifest, so all of its commits are new."
  else
    repository = @from_item.repository
    repository.toggle_prs_only

    is_rollback = false

    commits = repository.commits(between: [from_sha, to_sha])

    if commits.size == 0
      # This might be a rollback, so try them backwards
      commits = repository.commits(between: [to_sha, from_sha])
      is_rollback = commits.size != 0
    end

    if commits.size == 0
      "* There were no pull requests merged in this range of commits."
    else
      entries = commits.collect do |commit|
        wrapper = Commit.new(commit)
        entry = wrapper.summarized_message

        entry = "[#{entry}](https://github.com/#{repository.display_name}/pull/#{wrapper.pr_number})" if wrapper.is_pr?

        "1. #{entry}"
      end.join("\n")

      is_rollback ? "These commits were ***rolled back***:\n\n#{entries}" : entries
    end
  end
end
from_sha() click to toggle source
# File lib/manifestly/manifest_diff.rb, line 16
def from_sha
  @from_item.commit.sha
end
item_source_info() click to toggle source
# File lib/manifestly/manifest_diff.rb, line 24
def item_source_info
  new_item? ?
    " (new manifest entry)" :
    " (`#{from_sha[0..9]}` to `#{to_sha[0..9]}`)"
end
new_item?() click to toggle source
# File lib/manifestly/manifest_diff.rb, line 30
def new_item?
  @from_item.nil?
end
to_markdown() click to toggle source
# File lib/manifestly/manifest_diff.rb, line 12
def to_markdown
  @markdown
end
to_sha() click to toggle source
# File lib/manifestly/manifest_diff.rb, line 20
def to_sha
  @to_item.commit.sha
end