class Michael::Commands::Repos::PullRequests

Attributes

config[R]
options[R]
repos[R]
users[R]

Public Class Methods

new(config, users, repos, options) click to toggle source
# File lib/michael/commands/repos/pull_requests.rb, line 11
def initialize(config, users, repos, options)
  @config = config
  @users = users
  @repos = repos
  @options = options
end

Public Instance Methods

execute() click to toggle source
# File lib/michael/commands/repos/pull_requests.rb, line 18
def execute
  q = Queue.new
  waiting = print_waiting(q)
  list = config.fetch(:repos)

  list = repos.pull_requests(list, q)
  waiting.join

  puts [filter_repos_w_prs(list), get_empty(list), get_broken(list)]
    .reject(&:nil?).join("\n\n")
end

Private Instance Methods

filter_repos_w_prs(list) click to toggle source
# File lib/michael/commands/repos/pull_requests.rb, line 32
def filter_repos_w_prs(list)
  list.each do |r|
    r.prs.reject! { |pr| pr.author?(users.user.username) } if options[:skip_self]
    r.prs.reject!(&:approved?) if options[:hide_approved]
    r.prs.select!(&:needs_review?) if options[:needs_review]
    r.prs.select! { |pr| pr.actionable?(users.user.username) } if options[:actionable]
  end

  list.select(&:has_prs?).map!(&:pretty_print).join("\n\n")
end
get_broken(list) click to toggle source
# File lib/michael/commands/repos/pull_requests.rb, line 43
def get_broken(list)
  broken = list.select(&:broken?)
  return nil if broken.none?

  'Broken repos: ' + broken.map(&:pretty_print).join(', ')
end
get_empty(list) click to toggle source
# File lib/michael/commands/repos/pull_requests.rb, line 50
def get_empty(list)
  return nil unless options[:show_empty]

  empty = list.reject(&:has_prs?)
  return nil if empty.none?

  'No PRs: ' + empty.map(&:pretty_print).join(', ')
end
print_waiting(queue) click to toggle source