Sha256: 69c610144460b26e108b32ee3e069b75502b34449b53c87bc9eaf19ff5ef6138

Contents?: true

Size: 1.97 KB

Versions: 1

Compression:

Stored size: 1.97 KB

Contents

# frozen_string_literal: true

require 'octokit'
require_relative 'config_reader'

module WhatsupGithub
  # Gets issues found on GitHub by query
  class Pulls
    attr_reader :since, :repo

    def initialize(args = {})
      @repo = args[:repo]
      @since = args[:since]
    end

    def data
      pull_requests = []
      filtered_numbers.each do |number|
        pull_requests << client.pull_request(@repo, number)
      end
      pull_requests
    end

    private

    # def access_token
    #   credentials.dig 'github_token'
    # end

    def configuration
      Config.instance
    end

    def optional_labels
      configuration.optional_labels
    end

    def required_labels
      configuration.required_labels
    end

    def magic_word
      configuration.magic_word
    end

    def base_branch
      configuration.base_branch
    end

    def client
      Octokit::Client.new(netrc: true)
    end

    def search_issues(label)
      auto_paginate
      query = "repo:#{repo} label:\"#{label}\" merged:>=#{since} base:#{base_branch}"
      puts "Searching on GitHub by query #{query}"
      client.search_issues(query)
    end

    def search_issues_with_magic_word(label)
      auto_paginate
      query = "repo:#{repo} label:\"#{label}\" merged:>=#{since} base:#{base_branch} \"#{magic_word}\" in:body"
      puts "Searching on GitHub by query #{query}"
      client.search_issues(query)
    end

    def auto_paginate
      Octokit.auto_paginate = true
    end

    def filtered_issues
      issues = []
      required_labels.each do |label|
        issues += search_issues(label).items
      end
      optional_labels.each do |label|
        issues += search_issues_with_magic_word(label).items
      end
      issues
    end

    def filtered_numbers
      filtered_issues.map(&:number)
    end
  end
end

if $PROGRAM_NAME == __FILE__
  require 'date'
  two_weeks_ago = (Date.today - 14).to_s
  pulls = WhatsupGithub::Pulls.new(repo: 'magento/devdocs', since: two_weeks_ago)
  p pulls.data
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
whatsup_github-0.4.0 lib/whatsup_github/pulls.rb