Class: ListPullRequests::CLI

Inherits:
Object
  • Object
show all
Defined in:
lib/list_pull_requests/cli.rb

Instance Method Summary collapse

Instance Method Details

#callObject



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/list_pull_requests/cli.rb', line 3

def call
  puts "I list a GitHub user's pull requests!"
  puts "Please type the user name:"
  @username = gets.strip
  puts "What kind of pull requests would you like? (all/merged/unmerged):"
  @request_type = gets.strip
  case @request_type
  when "all"
    list_prs(pulls = ListPullRequests::User.new(@username).get_all)
    pr_details(pulls)
  when "merged"
    list_prs(pulls = ListPullRequests::User.new(@username).get_merged)
    pr_details(pulls)
  when "unmerged"
    list_prs(pulls = ListPullRequests::User.new(@username).get_unmerged)
    pr_details(pulls)
  end
end

#list_prs(prs) ⇒ Object



22
23
24
25
26
27
# File 'lib/list_pull_requests/cli.rb', line 22

def list_prs(prs)
  puts "#{@username} has #{prs.count} #{@request_type + " " unless @request_type == "all"}pull requests:"
  prs.each.with_index(1) do |pull, i|
    puts "#{i}." + "#{pull.repo} ##{pull.number}".cyan + " | " + "#{pull.name}".green + " | " + "#{pull.created}".yellow
  end
end

#pr_details(prs) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/list_pull_requests/cli.rb', line 29

def pr_details(prs)
  puts "Enter a pull request number to see more details. Otherwise type exit:"
  input = gets.strip
  until input == "exit"
    if input == "list"
      list_prs(prs)
    elsif input.to_i < 1 || input.to_i > prs.count
      print "Invalid input. "
    else
      detail_pr = input.to_i-1
      prs[detail_pr].lookup
      puts "---"
      puts "#{prs[detail_pr].repo} ##{prs[detail_pr].number}".cyan
      puts "Title:     " + "#{prs[detail_pr].name}".green
      puts "Created:   " + "#{prs[detail_pr].created}".yellow
      puts "URL:       " + "#{prs[detail_pr].url}".blue
      print "Merged:    "; puts prs[detail_pr].merged ? "#{prs[detail_pr].merged} by #{prs[detail_pr].merged_by}".magenta : "false".magenta
      puts "Mergeable: " + "#{prs[detail_pr].mergeable}".magenta unless prs[detail_pr].merged_by
      puts "---"
      puts ""
    end
    puts "Enter a pull request number to see more details. Otherwise type list or exit:"
    input = gets.strip
  end
end