Sha256: ef38f6ff459c33f0ae760ca961d210acafd35f691ab66825454826faefb2d5c0
Contents?: true
Size: 1.98 KB
Versions: 4
Compression:
Stored size: 1.98 KB
Contents
# frozen_string_literal: true require_relative 'row' require_relative 'pulls' require_relative 'config_reader' module WhatsupGithub # Creates Row objects for the future table class RowCollector attr_reader :repos, :since def initialize(args = {}) @repos = config.repos @since = args[:since] end def collect_rows rows = [] repos.each do |repo| rows << collect_rows_for_a(repo) end rows.flatten end def collect_rows_for_a(repo) pulls(repo).map do |pull| Row.new( repo: repo, repo_url: pull.base.repo.html_url, private: pull.base.repo.private?, pr_number: pull.number, pr_title: pull.title, pr_body: pull.body, date: pull.merged_at, pr_labels: label_names(pull.labels), assignee: assignee(pull.assignees), membership: member?(pull.user.login), merger: pull.merged_by.login, merge_commit_sha: pull.merge_commit_sha, author: pull.user.login, author_url: pull.user.html_url, pr_url: pull.html_url ) end end def sort_by_date collect_rows.sort_by do |c| Date.parse(c.date) end.reverse end def reverse(collection) collection.reverse end private def assignee(assignees) if assignees.empty? 'NOBODY' else assignees.map(&:login).join(', ') end end def member?(login) return nil unless config.membership member_logins.include? login end def label_names(labels) labels.map(&:name) end def pulls(repo) Pulls.new(repo: repo, since: since).data end def load_members return if @members @members = client.org_members(config.membership) end def member_logins load_members @members.map(&:login) end def config Config.instance end def client Client.instance end end end
Version data entries
4 entries across 4 versions & 1 rubygems