openpull 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a18f9336b198849cd6a43e88e54ea7df8d48e219
4
- data.tar.gz: 3e06ef21e0af46ca5f563bb20f5d9a060f2dbe3c
3
+ metadata.gz: 11ac4753168a18e414bf437e328e2a6981bcb623
4
+ data.tar.gz: d51ca5e3ee7caa640623de403694c0c46a166315
5
5
  SHA512:
6
- metadata.gz: 9b9e22a28506ac7915e22e870c8a19b2ae8d1c415907ac57cea89c17b84210447a2746634e4792b73568a4871f9e954743db7443831f685d47259876bc1882e9
7
- data.tar.gz: 9e8a514a77cc057a0ab0672a7dcce096889b7939dd9f656aad343755e714ac9857acc3c088353ccdec1b91ba35ba2080025bd9665f7939538d85e63c798145ca
6
+ metadata.gz: 7f3741087b5ce398d095b22ca2c884f18b930441fdbd745659970115f63d53a529cfcf2f03beb6a5f9379784c7c83a58e45a5a8d8a7f4a197760544d87524ab7
7
+ data.tar.gz: 492bad90f158ad4c15f6314f8586b1bfb213b9befd7dce04c3a77698441f6ab768ccc19e77f18e1ebbf2a0ca4b1ebdd5f77cc98c1cbcee53493d27b6e143c3cc
data/bin/openpull CHANGED
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env ruby
2
2
  require 'openpull'
3
- OpenPull::Runner.new(ARGV).run
3
+ OpenPull::Runner.run(ARGV)
@@ -1,5 +1,10 @@
1
1
  module OpenPull
2
2
  class PullRequestDecorator < ::SimpleDelegator
3
+ def as_row(username)
4
+ [title, user(username), labels, status, commits, comments, mergeable,
5
+ html_url.underline, updated_at]
6
+ end
7
+
3
8
  def title
4
9
  title = super
5
10
  return title if title.size <= 80
@@ -32,6 +37,16 @@ module OpenPull
32
37
  end
33
38
  end
34
39
 
40
+ def commits
41
+ num = rels[:commits].get.data.size
42
+ num == 0 ? '' : num
43
+ end
44
+
45
+ def comments
46
+ num = rels[:review_comments].get.data.size
47
+ num == 0 ? '' : num
48
+ end
49
+
35
50
  def mergeable
36
51
  super ? 'Yes'.green : 'No'.red
37
52
  end
@@ -9,9 +9,11 @@ module OpenPull
9
9
  end
10
10
 
11
11
  def fetch
12
- client.org_repos(organisation).map do |repository|
12
+ repos = client.org_repos(organisation).map do |repository|
13
13
  Thread.new { fetch_pull_requests(repository) }
14
- end.map(&:value).reject { |v| v.nil? || v.empty? }
14
+ end.map(&:value)
15
+
16
+ repos.reject { |v| v.nil? || v.empty? }
15
17
  end
16
18
 
17
19
  private
@@ -22,35 +24,32 @@ module OpenPull
22
24
  pull_requests = client.pull_requests(repository.id, state: 'open')
23
25
  return [] if pull_requests.empty?
24
26
 
25
- headers = ["#{repository.name} (#{pull_requests.size})"]
26
- headers << (repository.private ? 'private' : 'public')
27
- headers += ['', '', '']
28
- headers << repository.html_url
29
- headers << ''
30
- headers.map! { |h| h.blue.bold }
31
-
32
27
  results = pull_requests.map do |pr|
33
28
  Thread.new { row(pr) }
34
29
  end.map(&:value)
35
30
 
36
- [headers] + results
31
+ [headers(repository, results.size)] + results
32
+ end
33
+
34
+ def headers(repository, size)
35
+ visibility = repository.private ? 'private' : 'public'
36
+
37
+ [
38
+ "#{repository.name} (#{size})",
39
+ visibility
40
+ ] +
41
+ [''] * 5 +
42
+ [
43
+ repository.html_url,
44
+ ''
45
+ ].map { |h| h.blue.bold }
37
46
  end
38
47
 
39
48
  def row(pr)
40
49
  print '.'.yellow
41
50
 
42
51
  pr_data = pr.rels[:self].get.data
43
- deco_pr = OpenPull::PullRequestDecorator.new(pr_data)
44
-
45
- [
46
- deco_pr.title,
47
- deco_pr.user(username),
48
- deco_pr.labels,
49
- deco_pr.status,
50
- deco_pr.mergeable,
51
- deco_pr.html_url.underline,
52
- deco_pr.updated_at
53
- ]
52
+ OpenPull::PullRequestDecorator.new(pr_data).as_row(username)
54
53
  end
55
54
  end
56
55
  end
@@ -2,10 +2,16 @@ require 'optparse'
2
2
 
3
3
  module OpenPull
4
4
  class Runner
5
+ class << self
6
+ def run(argv = [])
7
+ new(argv).run
8
+ end
9
+ end
10
+
5
11
  attr_reader :argv
6
12
  attr_accessor :options
7
13
 
8
- def initialize(argv)
14
+ def initialize(argv = [])
9
15
  @argv = argv
10
16
  @options = {}
11
17
  end
@@ -13,64 +19,90 @@ module OpenPull
13
19
  def run
14
20
  op = option_parser
15
21
  op.parse!
16
- exit unless check_options(op)
22
+ check_options(op)
17
23
 
18
24
  puts OpenPull::Client.new(@options[:access_token],
19
25
  @options[:organisation],
20
26
  @options[:username]).show_table
21
-
22
27
  end
23
28
 
24
29
  private
25
30
 
26
31
  def option_parser
27
32
  OptionParser.new do |opts|
28
- opts.banner = 'Usage: openpull [options]'
29
-
30
- opts.separator ''
31
- opts.separator 'Organisation and username can also be set in the ' \
32
- 'environment as GITHUB_ORGANISATION and GITHUB_USERNAME.'
33
- opts.separator ''
34
-
35
- opts.separator 'Options:'
36
-
37
- opts.on_tail('-h', '--help', 'Show this message') do
38
- puts opts
39
- exit
40
- end
41
-
42
- opts.on_tail('--version', 'Show version') do
43
- puts OpenPull::VERSION
44
- exit
45
- end
46
-
47
- @options[:organisation] = ENV['GITHUB_ORGANISATION']
48
- opts.on('-o', '--organisation [ORG]', String, 'The Github organisation') do |o|
49
- @options[:organisation] = o
50
- end
51
-
52
- @options[:username] = ENV['GITHUB_USERNAME']
53
- opts.on('-u', '--username [USER]', String, 'Your Github username') do |u|
54
- @options[:username] = u
55
- end
33
+ parse_banner(opts)
34
+ parse_options(opts)
35
+ parse_values(opts)
56
36
  end
57
37
  end
58
38
 
59
- def check_options(op)
60
- @options[:access_token] = ENV['GITHUB_ACCESS_TOKEN']
39
+ def parse_banner(opts)
40
+ opts.banner = 'Usage: openpull [options]'
41
+
42
+ opts.separator ''
43
+ opts.separator 'Organisation and username can also be set in the ' \
44
+ 'environment as GITHUB_ORGANISATION and GITHUB_USERNAME.'
45
+ opts.separator ''
46
+ end
47
+
48
+ def parse_options(opts)
49
+ opts.separator 'Options:'
50
+
51
+ opts.on_tail('-h', '--help', 'Show this message') do
52
+ puts opts
53
+ exit
54
+ end
55
+
56
+ opts.on_tail('--version', 'Show version') do
57
+ puts OpenPull::VERSION
58
+ exit
59
+ end
60
+ end
61
+
62
+ def parse_values(opts)
63
+ parse_organisation(opts)
64
+ parse_username(opts)
65
+ end
61
66
 
62
- if @options[:access_token].nil?
63
- puts 'You need to set the GitHub access token in your environment. ' \
64
- '(GITHUB_ACCESS_TOKEN)'
65
- return false
66
- elsif @options[:organisation].nil?
67
- puts 'You need to either pass GitHub organisation or set it in your ' \
68
- 'environment. (GITHUB_ORGANISATION)'
69
- puts "\n#{op}"
70
- return false
67
+ def parse_organisation(opts)
68
+ @options[:organisation] = ENV['GITHUB_ORGANISATION']
69
+ opts.on('-o',
70
+ '--organisation [ORG]',
71
+ String,
72
+ 'The Github organisation') do |o|
73
+ @options[:organisation] = o
71
74
  end
75
+ end
76
+
77
+ def parse_username(opts)
78
+ @options[:username] = ENV['GITHUB_USERNAME']
79
+ opts.on('-u',
80
+ '--username [USER]',
81
+ String,
82
+ 'Your Github username') do |u|
83
+ @options[:username] = u
84
+ end
85
+ end
86
+
87
+ def check_options(op)
88
+ check_access_token
89
+ check_organisation(op)
90
+ end
91
+
92
+ def check_access_token
93
+ @options[:access_token] = ENV['GITHUB_ACCESS_TOKEN']
94
+ return unless @options[:access_token].nil?
95
+ puts 'You need to set the GitHub access token in your environment. ' \
96
+ '(GITHUB_ACCESS_TOKEN)'
97
+ exit
98
+ end
72
99
 
73
- return true
100
+ def check_organisation(op)
101
+ return unless @options[:organisation].nil?
102
+ puts 'You need to either pass GitHub organisation or set it in your ' \
103
+ 'environment. (GITHUB_ORGANISATION)'
104
+ puts "\n#{op}"
105
+ exit
74
106
  end
75
107
  end
76
108
  end
@@ -1,6 +1,8 @@
1
1
  module OpenPull
2
2
  class Table
3
- HEADINGS = %w(title user labels status mergeable url updated)
3
+ HEADINGS = %w(
4
+ title user labels status commits comments mergeable url updated
5
+ )
4
6
 
5
7
  class << self
6
8
  def rewind!
@@ -1,3 +1,3 @@
1
1
  module OpenPull
2
- VERSION = '0.0.5'
2
+ VERSION = '0.0.6'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: openpull
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mads Ohm Larsen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-19 00:00:00.000000000 Z
11
+ date: 2015-06-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: octokit
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0.4'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rubocop
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '0.31'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.31'
69
83
  description: Fetches open pull-requests, with status and mergability, in your organisation.
70
84
  email: mads.ohm@gmail.com
71
85
  executables: