class Gissuel::Issues

Constants

TOKEN

Public Class Methods

new(label, repo, verbose, index) click to toggle source
# File lib/gissuel/issues.rb, line 6
def initialize(label, repo, verbose, index)
  @verbose  = verbose
  @label    = label
  @repo     = repo
  @state    = "open"
  @index    = index
end

Public Instance Methods

publish() click to toggle source
# File lib/gissuel/issues.rb, line 14
def publish
  handle_issues(desired_issues)
end

Private Instance Methods

client() click to toggle source
# File lib/gissuel/issues.rb, line 20
def client
  @connection ||= Octokit::Client.new(:access_token => TOKEN, 
                                      :auto_paginate => true)
end
comments_report(issue) click to toggle source
# File lib/gissuel/issues.rb, line 72
def comments_report(issue)
  general_info = "No of comments: #{issue.comments} | Updated at: #{issue.updated_at}"

 # comment_autor_requested? ? [general, comment_author(issue)].join(" | ") : general
 issue.comments.nonzero? && @verbose ? [general_info, last_comment_author(issue)].join(" | ") : general_info
end
desired_issues() click to toggle source
# File lib/gissuel/issues.rb, line 29
def desired_issues
  issues = client.list_issues(
    @repo,
    options = { 
      :assignee => my_login,
      :labels => @label,
      :state => @state
    }
  )

  @index.zero? ? issues : [issues[@index - 1]]
end
handle_issues(issues) click to toggle source
# File lib/gissuel/issues.rb, line 42
def handle_issues(issues)
  case issues.count
  when 0
    Gissuel::Log.new("\nGissuel: πŸ‘‹ β˜• ☺️").grey
  when 1
    if @index.zero? then
      Gissuel::Log.new("πŸ‘‹  there is one issue on your 🍽️.").red
      Gissuel::Log.new("β˜•  here is quick look at it:\n").grey
      report_issue(issues.first, @index + 1)
    else 
      Gissuel::Log.new("β˜•  here is quick look at the issue:\n").grey
      report_issue(issues.first, @index)
    end
  else
    Gissuel::Log.new("πŸ‘‹  there are #{issues.count} issues on your 🍽️.").red
    Gissuel::Log.new("β˜•  here is quick look at these:\n").grey

    issues.each_with_index do |issue, index|
      report_issue(issue, index + 1)
    end
  end
end
last_comment_author(issue) click to toggle source
# File lib/gissuel/issues.rb, line 79
def last_comment_author(issue)
  repo = issue.repository_url
                    .split("/")
                    .last(2)
                    .join("/")

  client.issue_comments(repo, issue.number).last
        .user.login
end
my_login() click to toggle source
# File lib/gissuel/issues.rb, line 25
def my_login
  client.user.login
end
report_issue(issue, index) click to toggle source
# File lib/gissuel/issues.rb, line 65
def report_issue(issue, index)
  Gissuel::Log.new("[#{index}]: #{issue.title}").yellow
  Gissuel::Log.new("URL: #{issue.html_url}").blue
  Gissuel::Log.new("DESCRIPTION: #{issue.body}").grey if @verbose
  Gissuel::Log.new(comments_report(issue)).green
end