ghi 0.9.0.20120731 → 0.9.0.20121114
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/ghi.rb +3 -3
- data/lib/ghi/client.rb +11 -1
- data/lib/ghi/commands/assign.rb +1 -0
- data/lib/ghi/commands/config.rb +1 -1
- data/lib/ghi/commands/list.rb +6 -1
- data/lib/ghi/commands/show.rb +20 -10
- data/lib/ghi/commands/version.rb +1 -1
- data/lib/ghi/formatting.rb +4 -4
- data/lib/ghi/web.rb +12 -7
- metadata +2 -2
data/lib/ghi.rb
CHANGED
@@ -105,9 +105,9 @@ EOF
|
|
105
105
|
exit 1
|
106
106
|
end
|
107
107
|
|
108
|
-
def config key
|
109
|
-
var = key.gsub('core', 'git').gsub
|
110
|
-
value = ENV[var] || `git config #{key}`.chomp
|
108
|
+
def config key, upcase = true
|
109
|
+
var = key.gsub('core', 'git').gsub '.', '_'
|
110
|
+
value = ENV[upcase ? var.upcase : var] || `git config #{key}`.chomp
|
111
111
|
value unless value.empty?
|
112
112
|
end
|
113
113
|
|
data/lib/ghi/client.rb
CHANGED
@@ -54,6 +54,8 @@ module GHI
|
|
54
54
|
:patch => Net::HTTP::Patch,
|
55
55
|
:delete => Net::HTTP::Delete
|
56
56
|
}
|
57
|
+
HOST = 'api.github.com'
|
58
|
+
PORT = 443
|
57
59
|
|
58
60
|
attr_reader :username, :password
|
59
61
|
def initialize username = nil, password = nil
|
@@ -102,7 +104,15 @@ module GHI
|
|
102
104
|
end
|
103
105
|
req.basic_auth username, password if username && password
|
104
106
|
|
105
|
-
|
107
|
+
proxy = GHI.config 'https.proxy', false
|
108
|
+
proxy ||= GHI.config 'http.proxy', false
|
109
|
+
if proxy
|
110
|
+
proxy = URI.parse proxy
|
111
|
+
http = Net::HTTP::Proxy(proxy.host, proxy.port).new HOST, PORT
|
112
|
+
else
|
113
|
+
http = Net::HTTP.new HOST, PORT
|
114
|
+
end
|
115
|
+
|
106
116
|
http.use_ssl = true
|
107
117
|
http.verify_mode = OpenSSL::SSL::VERIFY_NONE # FIXME 1.8.7
|
108
118
|
|
data/lib/ghi/commands/assign.rb
CHANGED
data/lib/ghi/commands/config.rb
CHANGED
@@ -22,7 +22,7 @@ EOF
|
|
22
22
|
global = true
|
23
23
|
options.parse! args.empty? ? %w(-h) : args
|
24
24
|
|
25
|
-
if
|
25
|
+
if action == 'auth'
|
26
26
|
assigns[:password] = Authorization.password || get_password
|
27
27
|
Authorization.authorize!(
|
28
28
|
assigns[:username], assigns[:password], assigns[:local]
|
data/lib/ghi/commands/list.rb
CHANGED
@@ -6,6 +6,7 @@ module GHI
|
|
6
6
|
attr_accessor :web
|
7
7
|
attr_accessor :reverse
|
8
8
|
attr_accessor :quiet
|
9
|
+
attr_accessor :exclude_pull_requests
|
9
10
|
|
10
11
|
def options
|
11
12
|
OptionParser.new do |opts|
|
@@ -35,6 +36,7 @@ module GHI
|
|
35
36
|
opts.on '--reverse', 'reverse (ascending) sort order' do
|
36
37
|
self.reverse = !reverse
|
37
38
|
end
|
39
|
+
opts.on('-p', '--no-pulls','exclude pull requests') { self.exclude_pull_requests = true }
|
38
40
|
opts.on(
|
39
41
|
'--since <date>', 'issues more recent than',
|
40
42
|
"e.g., '2011-04-30'"
|
@@ -68,7 +70,7 @@ module GHI
|
|
68
70
|
opts.on(
|
69
71
|
'-u', '--[no-]assignee [<user>]', 'assigned to specified user'
|
70
72
|
) do |assignee|
|
71
|
-
assignee = assignee.sub /^@/, ''
|
73
|
+
assignee = assignee.sub /^@/, '' if assignee
|
72
74
|
assigns[:assignee] = any_or_none_or assignee
|
73
75
|
end
|
74
76
|
opts.on '--mine', 'assigned to you' do
|
@@ -113,6 +115,9 @@ module GHI
|
|
113
115
|
print "\r#{CURSOR[:up][1]}" if header && paginate?
|
114
116
|
page header do
|
115
117
|
issues = res.body
|
118
|
+
if exclude_pull_requests
|
119
|
+
issues = issues.reject {|i| i["pull_request"].any? {|k,v| !v.nil? } }
|
120
|
+
end
|
116
121
|
if verbose
|
117
122
|
puts issues.map { |i| format_issue i }
|
118
123
|
else
|
data/lib/ghi/commands/show.rb
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
module GHI
|
2
2
|
module Commands
|
3
3
|
class Show < Command
|
4
|
-
attr_accessor :web
|
4
|
+
attr_accessor :patch, :web
|
5
5
|
|
6
6
|
def options
|
7
7
|
OptionParser.new do |opts|
|
8
8
|
opts.banner = 'usage: ghi show <issueno>'
|
9
9
|
opts.separator ''
|
10
|
+
opts.on('-p', '--patch') { self.patch = true }
|
10
11
|
opts.on('-w', '--web') { self.web = true }
|
11
12
|
end
|
12
13
|
end
|
@@ -15,18 +16,27 @@ module GHI
|
|
15
16
|
require_issue
|
16
17
|
require_repo
|
17
18
|
options.parse! args
|
19
|
+
patch_path = "pull/#{issue}.patch" if patch # URI also in API...
|
18
20
|
if web
|
19
|
-
Web.new(repo).open "issues/#{issue}"
|
21
|
+
Web.new(repo).open patch_path || "issues/#{issue}"
|
20
22
|
else
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
23
|
+
if patch_path
|
24
|
+
i = throb { Web.new(repo).curl patch_path }
|
25
|
+
page do
|
26
|
+
puts i
|
27
|
+
break
|
28
|
+
end
|
29
|
+
else
|
30
|
+
i = throb { api.get "/repos/#{repo}/issues/#{issue}" }.body
|
31
|
+
page do
|
32
|
+
puts format_issue(i)
|
33
|
+
n = i['comments']
|
34
|
+
if n > 0
|
35
|
+
puts "#{n} comment#{'s' unless n == 1}:\n\n"
|
36
|
+
Comment.execute %W(-l #{issue} -- #{repo})
|
37
|
+
end
|
38
|
+
break
|
28
39
|
end
|
29
|
-
break
|
30
40
|
end
|
31
41
|
end
|
32
42
|
end
|
data/lib/ghi/commands/version.rb
CHANGED
data/lib/ghi/formatting.rb
CHANGED
@@ -31,11 +31,11 @@ module GHI
|
|
31
31
|
|
32
32
|
def puts *strings
|
33
33
|
strings = strings.flatten.map { |s|
|
34
|
-
s.gsub(
|
35
|
-
if $
|
36
|
-
bright { fg(:yellow) { "@#$
|
34
|
+
s.gsub(/(^| )*@([^@\s]+)/) {
|
35
|
+
if $2 == Authorization.username
|
36
|
+
bright { fg(:yellow) { "#$1@#$2" } }
|
37
37
|
else
|
38
|
-
bright { "@#$
|
38
|
+
bright { "#$1@#$2" }
|
39
39
|
end
|
40
40
|
}
|
41
41
|
}
|
data/lib/ghi/web.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'open-uri'
|
1
2
|
require 'uri'
|
2
3
|
|
3
4
|
module GHI
|
@@ -10,17 +11,21 @@ module GHI
|
|
10
11
|
end
|
11
12
|
|
12
13
|
def open path = '', params = {}
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
14
|
+
system "open '#{uri_for path, params}'"
|
15
|
+
end
|
16
|
+
|
17
|
+
def curl path = '', params = {}
|
18
|
+
uri_for(path, params).open.read
|
18
19
|
end
|
19
20
|
|
20
21
|
private
|
21
22
|
|
22
|
-
def
|
23
|
-
|
23
|
+
def uri_for path, params
|
24
|
+
unless params.empty?
|
25
|
+
q = params.map { |k, v| "#{CGI.escape k.to_s}=#{CGI.escape v.to_s}" }
|
26
|
+
path += "?#{q.join '&'}"
|
27
|
+
end
|
28
|
+
URI(BASE_URI) + "#{base}/" + path
|
24
29
|
end
|
25
30
|
end
|
26
31
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ghi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.0.
|
4
|
+
version: 0.9.0.20121114
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-11-14 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|