class March::Repo

Public Class Methods

new(namespace, repo) click to toggle source
# File lib/march/repo.rb, line 5
def initialize(namespace, repo)
  @string = "#{namespace}/#{repo}"
  @repo = client.repo(@string)
end

Public Instance Methods

branch_age() click to toggle source
# File lib/march/repo.rb, line 59
def branch_age
  compare_branches.each_with_object({}) do |(name, diff), acc|
    oldest = diff.merge_base_commit.commit.author.date
    newest = diff.commits.map { |c| c.commit.author.date }.sort.last
    res = { oldest: oldest, newest: newest }
    acc[name] = res unless name == default_branch_name || newest.nil?
  end
end
branch_owners() click to toggle source
# File lib/march/repo.rb, line 46
def branch_owners
  @branch_owners ||=
    compare_branches.each_with_object({}) do |(name, diff), acc|
      author_ary   = diff.commits.map { |c| c.commit.author }
      authors      =
        author_ary.map do |h|
          h.map { |k, v| v if k == :email }.compact
        end.uniq

      acc[name] = authors.flatten
    end
end
branches() click to toggle source
# File lib/march/repo.rb, line 30
def branches
  @branches ||= @repo.rels[:branches].get.data
end
client() click to toggle source
# File lib/march/repo.rb, line 10
def client
  March::Github.client
end
compare_branches() click to toggle source
# File lib/march/repo.rb, line 34
def compare_branches
  branches.each_with_object({}) do |branch, acc|
    acc[branch.name] = client.compare(id, default_tip, branch.commit.sha)
  end
end
default_branch() click to toggle source
# File lib/march/repo.rb, line 22
def default_branch
  branches[branches.find_index { |b| b.name == default_branch_name }]
end
default_branch_name() click to toggle source
# File lib/march/repo.rb, line 18
def default_branch_name
  @repo.default_branch
end
default_tip() click to toggle source
# File lib/march/repo.rb, line 26
def default_tip
  default_branch.commit.sha
end
delete_branches(branch_names) click to toggle source
# File lib/march/repo.rb, line 68
def delete_branches(branch_names)
  raise ArgumentError unless branch_names.is_a?(Array)
  branch_names.each do |name|
    puts 'Deleting ' + name
    client.delete_branch(id, name)
  end
end
id() click to toggle source
# File lib/march/repo.rb, line 14
def id
  @repo.id
end
merged_branches() click to toggle source
# File lib/march/repo.rb, line 40
def merged_branches
  @merged_branches ||= compare_branches.select do |_name, diff|
    diff.commits.empty?
  end.map(&:first).reject { |name| name == default_branch.name }
end