ghi 0.2.5 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.rdoc +28 -0
- data/lib/ghi.rb +14 -15
- data/lib/ghi/api.rb +25 -8
- data/lib/ghi/cli.rb +36 -8
- data/lib/ghi/issue.rb +2 -1
- data/spec/ghi_spec.rb +0 -29
- metadata +39 -48
- data/History.rdoc +0 -221
- data/Manifest.txt +0 -14
data/README.rdoc
CHANGED
|
@@ -91,8 +91,36 @@ Always favor SSL by setting it:
|
|
|
91
91
|
|
|
92
92
|
=== CONTRIBUTE?
|
|
93
93
|
|
|
94
|
+
Running the tests should be as simple as a `bundle` and
|
|
95
|
+
`bundle exec spec spec`.
|
|
96
|
+
|
|
94
97
|
ghi is not under currently under the control of any gem packaging system. To
|
|
95
98
|
build, use RubyGems:
|
|
96
99
|
|
|
97
100
|
% gem build ghi.gemspec
|
|
98
101
|
% sudo gem install ghi*.gem
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
== LICENSE
|
|
105
|
+
|
|
106
|
+
(The MIT License)
|
|
107
|
+
|
|
108
|
+
(c) 2009-* Stephen Celis, stephen@stephencelis.com.
|
|
109
|
+
|
|
110
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
111
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
112
|
+
in the Software without restriction, including without limitation the rights
|
|
113
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
114
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
115
|
+
furnished to do so, subject to the following conditions:
|
|
116
|
+
|
|
117
|
+
The above copyright notice and this permission notice shall be included in all
|
|
118
|
+
copies or substantial portions of the Software.
|
|
119
|
+
|
|
120
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
121
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
122
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
123
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
124
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
125
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
126
|
+
SOFTWARE.
|
data/lib/ghi.rb
CHANGED
|
@@ -1,21 +1,19 @@
|
|
|
1
1
|
require "net/http"
|
|
2
2
|
require "yaml"
|
|
3
|
+
YAML::ENGINE.yamler = "syck" if YAML.const_defined? :ENGINE
|
|
3
4
|
|
|
4
5
|
module GHI
|
|
5
|
-
VERSION = "0.
|
|
6
|
+
VERSION = "0.3.0"
|
|
6
7
|
|
|
7
8
|
class << self
|
|
8
9
|
def login
|
|
9
10
|
return @login if defined? @login
|
|
10
11
|
@login = `git config --get github.user`.chomp
|
|
11
12
|
if @login.empty?
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
warn "invalid username" unless valid
|
|
17
|
-
end until valid
|
|
18
|
-
`git config --global github.user #@login`
|
|
13
|
+
warn "Please configure your GitHub username."
|
|
14
|
+
puts
|
|
15
|
+
puts "E.g., git config --global github.user [your username]"
|
|
16
|
+
abort
|
|
19
17
|
end
|
|
20
18
|
@login
|
|
21
19
|
end
|
|
@@ -24,13 +22,14 @@ module GHI
|
|
|
24
22
|
return @token if defined? @token
|
|
25
23
|
@token = `git config --get github.token`.chomp
|
|
26
24
|
if @token.empty?
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
25
|
+
warn "Please configure your GitHub token."
|
|
26
|
+
puts
|
|
27
|
+
puts "E.g., git config --global github.user [your token]"
|
|
28
|
+
puts
|
|
29
|
+
puts "Find your token here: https://github.com/account/admin"
|
|
30
|
+
abort
|
|
31
|
+
elsif @token.sub!(/^!/, '')
|
|
32
|
+
@token = `#@token`
|
|
34
33
|
end
|
|
35
34
|
@token
|
|
36
35
|
end
|
data/lib/ghi/api.rb
CHANGED
|
@@ -1,19 +1,22 @@
|
|
|
1
|
-
require "net/
|
|
1
|
+
require "net/https"
|
|
2
2
|
require "yaml"
|
|
3
3
|
require "cgi"
|
|
4
4
|
|
|
5
5
|
class GHI::API
|
|
6
|
-
class
|
|
6
|
+
class GHIError < StandardError
|
|
7
7
|
end
|
|
8
8
|
|
|
9
|
-
class
|
|
9
|
+
class InvalidRequest < GHIError
|
|
10
10
|
end
|
|
11
11
|
|
|
12
|
-
class
|
|
12
|
+
class InvalidConnection < GHIError
|
|
13
13
|
end
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
class ResponseError < GHIError
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
API_HOST = "github.com"
|
|
19
|
+
API_PATH = "/api/v2/yaml/issues/:action/:user/:repo"
|
|
17
20
|
|
|
18
21
|
attr_reader :user, :repo
|
|
19
22
|
|
|
@@ -34,11 +37,21 @@ class GHI::API
|
|
|
34
37
|
GHI::Issue.new get(:show, number)["issue"]
|
|
35
38
|
end
|
|
36
39
|
|
|
40
|
+
def comments(number)
|
|
41
|
+
get(:comments, number)["comments"]
|
|
42
|
+
end
|
|
43
|
+
|
|
37
44
|
def open(title, body)
|
|
45
|
+
if title.empty? && body.empty?
|
|
46
|
+
raise GHIError, "Aborting request due to empty issue."
|
|
47
|
+
end
|
|
38
48
|
GHI::Issue.new post(:open, "title" => title, "body" => body)["issue"]
|
|
39
49
|
end
|
|
40
50
|
|
|
41
51
|
def edit(number, title, body)
|
|
52
|
+
if title.empty? && body.empty?
|
|
53
|
+
raise GHIError, "Aborting request due to empty issue."
|
|
54
|
+
end
|
|
42
55
|
res = post :edit, number, "title" => title, "body" => body
|
|
43
56
|
GHI::Issue.new res["issue"]
|
|
44
57
|
end
|
|
@@ -60,6 +73,9 @@ class GHI::API
|
|
|
60
73
|
end
|
|
61
74
|
|
|
62
75
|
def comment(number, comment)
|
|
76
|
+
if comment.empty?
|
|
77
|
+
raise GHIError, "Aborting request due to empty comment."
|
|
78
|
+
end
|
|
63
79
|
post(:comment, number, "comment" => comment)["comment"]
|
|
64
80
|
end
|
|
65
81
|
|
|
@@ -79,7 +95,7 @@ class GHI::API
|
|
|
79
95
|
res = YAML.load http.request(req).body
|
|
80
96
|
end
|
|
81
97
|
|
|
82
|
-
raise ResponseError, errors(res) if res["error"]
|
|
98
|
+
raise ResponseError, errors(res) if res["error"] || res[:error]
|
|
83
99
|
res
|
|
84
100
|
rescue ArgumentError, URI::InvalidURIError
|
|
85
101
|
raise ResponseError, "GitHub hiccuped on your request"
|
|
@@ -99,7 +115,7 @@ class GHI::API
|
|
|
99
115
|
res = YAML.load http.request(req).body
|
|
100
116
|
end
|
|
101
117
|
|
|
102
|
-
raise ResponseError, errors(res) if res["error"]
|
|
118
|
+
raise ResponseError, errors(res) if res["error"] || res[:error]
|
|
103
119
|
res
|
|
104
120
|
rescue ArgumentError, URI::InvalidURIError
|
|
105
121
|
raise ResponseError, "GitHub hiccuped on your request"
|
|
@@ -108,6 +124,7 @@ class GHI::API
|
|
|
108
124
|
end
|
|
109
125
|
|
|
110
126
|
def errors(response)
|
|
127
|
+
return response[:error] if response.key? :error
|
|
111
128
|
[*response["error"]].map { |e| e["error"] } * ", "
|
|
112
129
|
end
|
|
113
130
|
|
data/lib/ghi/cli.rb
CHANGED
|
@@ -90,12 +90,16 @@ module GHI::CLI #:nodoc:
|
|
|
90
90
|
if verbosity
|
|
91
91
|
issues.map { |i| ["=" * 79] + show_format(i) }
|
|
92
92
|
else
|
|
93
|
-
issues.map { |i| " #{i.number.to_s.rjust 3}: #{truncate(i.title, 72)}" }
|
|
93
|
+
issues.map { |i| " #{i.number.to_s.rjust 3}: #{truncate(i.title, 72)} #{label_format(i.labels)}" }
|
|
94
94
|
end
|
|
95
95
|
else
|
|
96
96
|
"none"
|
|
97
97
|
end
|
|
98
98
|
end
|
|
99
|
+
|
|
100
|
+
def label_format(labels)
|
|
101
|
+
labels and labels.map {|l| "[#{l}]"}.join(' ')
|
|
102
|
+
end
|
|
99
103
|
|
|
100
104
|
def edit_format(issue)
|
|
101
105
|
l = []
|
|
@@ -122,6 +126,7 @@ module GHI::CLI #:nodoc:
|
|
|
122
126
|
l << " number: #{issue.number}" if issue.number
|
|
123
127
|
l << " state: #{issue.state}" if issue.state
|
|
124
128
|
l << " title: #{indent(issue.title, 15, 0).join}" if issue.title
|
|
129
|
+
l << " labels: #{label_format(issue.labels)}" unless issue.labels.nil? || issue.labels.empty?
|
|
125
130
|
l << " user: #{issue.user || GHI.login}"
|
|
126
131
|
l << " votes: #{issue.votes}" if issue.votes
|
|
127
132
|
l << " created at: #{issue.created_at}" if issue.created_at
|
|
@@ -129,6 +134,19 @@ module GHI::CLI #:nodoc:
|
|
|
129
134
|
return l unless verbose
|
|
130
135
|
l << ""
|
|
131
136
|
l += indent(issue.body)[0..-2]
|
|
137
|
+
|
|
138
|
+
comments = api.comments(issue.number)
|
|
139
|
+
unless comments.empty?
|
|
140
|
+
l << "=" * 79
|
|
141
|
+
comments.each do |c|
|
|
142
|
+
l << "#{c["user"]} commented:"
|
|
143
|
+
l << ""
|
|
144
|
+
l += indent(c["body"])
|
|
145
|
+
l << "-" * 79
|
|
146
|
+
end
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
l
|
|
132
150
|
end
|
|
133
151
|
|
|
134
152
|
def action_format(value = nil)
|
|
@@ -143,6 +161,7 @@ module GHI::CLI #:nodoc:
|
|
|
143
161
|
end
|
|
144
162
|
|
|
145
163
|
def indent(string, level = 4, first = level)
|
|
164
|
+
string = string.gsub(/\n{3,}/, "\n\n")
|
|
146
165
|
lines = string.scan(/.{0,#{79 - level}}(?:\s|\Z)/).map { |line|
|
|
147
166
|
" " * level + line
|
|
148
167
|
}
|
|
@@ -214,7 +233,7 @@ module GHI::CLI #:nodoc:
|
|
|
214
233
|
@args, @argv = argv, argv.dup
|
|
215
234
|
|
|
216
235
|
remotes = `git config --get-regexp remote\..+\.url`.split /\n/
|
|
217
|
-
repo_expression = %r{([^:/]+)/([^/\s]
|
|
236
|
+
repo_expression = %r{([^:/]+)/([^/\s]+?)(?:\.git)?$}
|
|
218
237
|
if remote = remotes.find { |r| r.include? "github.com" }
|
|
219
238
|
remote.match repo_expression
|
|
220
239
|
@user, @repo = $1, $2
|
|
@@ -271,6 +290,9 @@ module GHI::CLI #:nodoc:
|
|
|
271
290
|
rescue GHI::API::ResponseError => e
|
|
272
291
|
warn "#{File.basename $0}: #{e.message} (#{user}/#{repo})"
|
|
273
292
|
exit 1
|
|
293
|
+
rescue GHI::API::GHIError => e
|
|
294
|
+
warn e.message
|
|
295
|
+
exit 1
|
|
274
296
|
end
|
|
275
297
|
|
|
276
298
|
def commenting?
|
|
@@ -504,7 +526,7 @@ module GHI::CLI #:nodoc:
|
|
|
504
526
|
comment = api.comment number, new_body
|
|
505
527
|
end
|
|
506
528
|
puts action_format(issue.title)
|
|
507
|
-
puts "(
|
|
529
|
+
puts "(commented)" if comment
|
|
508
530
|
end
|
|
509
531
|
|
|
510
532
|
def reopen
|
|
@@ -514,7 +536,7 @@ module GHI::CLI #:nodoc:
|
|
|
514
536
|
comment = api.comment number, new_body
|
|
515
537
|
end
|
|
516
538
|
puts action_format(issue.title)
|
|
517
|
-
puts "(
|
|
539
|
+
puts "(commented)" if comment
|
|
518
540
|
end
|
|
519
541
|
|
|
520
542
|
def prepare_label
|
|
@@ -545,15 +567,15 @@ module GHI::CLI #:nodoc:
|
|
|
545
567
|
@body ||= gets_from_editor api.show(number)
|
|
546
568
|
comment = api.comment(number, body)
|
|
547
569
|
delete_message
|
|
548
|
-
puts "(comment
|
|
570
|
+
puts "(comment})"
|
|
549
571
|
end
|
|
550
572
|
|
|
551
573
|
def url
|
|
552
|
-
url = "
|
|
574
|
+
url = "https://github.com/#{user}/#{repo}/issues"
|
|
553
575
|
if number.nil?
|
|
554
576
|
url << "/#{state}" unless state == :open
|
|
555
577
|
else
|
|
556
|
-
url << "
|
|
578
|
+
url << "/#{number}"
|
|
557
579
|
end
|
|
558
580
|
defined?(Launchy) ? Launchy.open(url) : puts(url)
|
|
559
581
|
end
|
|
@@ -581,7 +603,13 @@ module GHI::CLI #:nodoc:
|
|
|
581
603
|
@action = :show
|
|
582
604
|
@number ||= ($1 || arguments.shift[/\d+/]).to_i
|
|
583
605
|
when "open"
|
|
584
|
-
|
|
606
|
+
if arguments.first =~ /^\d+$/
|
|
607
|
+
@action = :reopen
|
|
608
|
+
@number ||= arguments.shift[/\d+/].to_i
|
|
609
|
+
else
|
|
610
|
+
@action = :open
|
|
611
|
+
@title = arguments.join(' ')
|
|
612
|
+
end
|
|
585
613
|
when "edit"
|
|
586
614
|
@action = :edit
|
|
587
615
|
@number ||= arguments.shift[/\d+/].to_i
|
data/lib/ghi/issue.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
class GHI::Issue
|
|
2
2
|
attr_reader :number, :title, :body, :votes, :state, :user, :created_at,
|
|
3
|
-
:updated_at
|
|
3
|
+
:updated_at, :labels
|
|
4
4
|
|
|
5
5
|
def initialize(options = {})
|
|
6
6
|
@number = options["number"]
|
|
@@ -11,6 +11,7 @@ class GHI::Issue
|
|
|
11
11
|
@user = options["user"]
|
|
12
12
|
@created_at = options["created_at"]
|
|
13
13
|
@updated_at = options["updated_at"]
|
|
14
|
+
@labels = options["labels"]
|
|
14
15
|
end
|
|
15
16
|
|
|
16
17
|
#-
|
data/spec/ghi_spec.rb
CHANGED
|
@@ -59,33 +59,4 @@ describe GHI do
|
|
|
59
59
|
GHI.should_receive(:`).once.and_return "da39a3ee5e6b4b0d3255bfef95601890\n"
|
|
60
60
|
GHI.token.should == "da39a3ee5e6b4b0d3255bfef95601890"
|
|
61
61
|
end
|
|
62
|
-
|
|
63
|
-
it "should approve login input" do
|
|
64
|
-
GHI.instance_eval { instance_variable_defined?(:@login).should == false }
|
|
65
|
-
GHI.should_receive(:`).with("git config --get github.user").
|
|
66
|
-
and_return "\n"
|
|
67
|
-
GHI.should_receive(:print).twice
|
|
68
|
-
GHI.should_receive(:gets).twice.and_return "defunct\n", "defunkt\n"
|
|
69
|
-
Net::HTTP.should_receive(:get).and_return "500: invalid: response",
|
|
70
|
-
LOGGED_OUT_YAML
|
|
71
|
-
GHI.should_receive(:warn).once
|
|
72
|
-
GHI.should_receive(:`).with("git config --global github.user defunkt").
|
|
73
|
-
and_return "\n"
|
|
74
|
-
GHI.login.should == "defunkt"
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
it "should approve token input" do
|
|
78
|
-
GHI.instance_eval { instance_variable_defined?(:@token).should == false }
|
|
79
|
-
GHI.stub!(:login).and_return "defunkt"
|
|
80
|
-
GHI.should_receive(:`).with("git config --get github.token").
|
|
81
|
-
and_return "\n"
|
|
82
|
-
GHI.should_receive(:print).twice
|
|
83
|
-
token = "da39a3ee5e6b4b0d3255bfef95601890"
|
|
84
|
-
GHI.should_receive(:gets).and_return "invalid\n", "#{token}\n"
|
|
85
|
-
Net::HTTP.should_receive(:get).and_return LOGGED_OUT_YAML, LOGGED_IN_YAML
|
|
86
|
-
GHI.should_receive(:warn).once
|
|
87
|
-
GHI.should_receive(:`).with("git config --global github.token #{token}").
|
|
88
|
-
and_return "\n"
|
|
89
|
-
GHI.token.should == token
|
|
90
|
-
end
|
|
91
62
|
end
|
metadata
CHANGED
|
@@ -1,38 +1,35 @@
|
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ghi
|
|
3
|
-
version: !ruby/object:Gem::Version
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
- 0
|
|
7
|
-
- 2
|
|
8
|
-
- 5
|
|
9
|
-
version: 0.2.5
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.3.0
|
|
5
|
+
prerelease:
|
|
10
6
|
platform: ruby
|
|
11
|
-
authors:
|
|
7
|
+
authors:
|
|
12
8
|
- Stephen Celis
|
|
13
9
|
autorequire:
|
|
14
10
|
bindir: bin
|
|
15
11
|
cert_chain: []
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
12
|
+
date: 2012-01-09 00:00:00.000000000 Z
|
|
13
|
+
dependencies:
|
|
14
|
+
- !ruby/object:Gem::Dependency
|
|
15
|
+
name: rspec
|
|
16
|
+
requirement: &70226629529100 !ruby/object:Gem::Requirement
|
|
17
|
+
none: false
|
|
18
|
+
requirements:
|
|
19
|
+
- - <
|
|
20
|
+
- !ruby/object:Gem::Version
|
|
21
|
+
version: '2.0'
|
|
22
|
+
type: :development
|
|
23
|
+
prerelease: false
|
|
24
|
+
version_requirements: *70226629529100
|
|
21
25
|
description: GitHub Issues on the command line. Use your `$EDITOR`, not your browser.
|
|
22
|
-
email:
|
|
23
|
-
|
|
24
|
-
executables:
|
|
26
|
+
email: stephen@stephencelis.com
|
|
27
|
+
executables:
|
|
25
28
|
- ghi
|
|
26
29
|
extensions: []
|
|
27
|
-
|
|
28
|
-
extra_rdoc_files:
|
|
29
|
-
- History.rdoc
|
|
30
|
-
- Manifest.txt
|
|
31
|
-
- README.rdoc
|
|
32
|
-
files:
|
|
33
|
-
- History.rdoc
|
|
34
|
-
- Manifest.txt
|
|
30
|
+
extra_rdoc_files:
|
|
35
31
|
- README.rdoc
|
|
32
|
+
files:
|
|
36
33
|
- bin/ghi
|
|
37
34
|
- lib/ghi/api.rb
|
|
38
35
|
- lib/ghi/cli.rb
|
|
@@ -42,38 +39,32 @@ files:
|
|
|
42
39
|
- spec/ghi/cli_spec.rb
|
|
43
40
|
- spec/ghi/issue_spec.rb
|
|
44
41
|
- spec/ghi_spec.rb
|
|
45
|
-
|
|
42
|
+
- README.rdoc
|
|
46
43
|
homepage: http://github.com/stephencelis/ghi
|
|
47
44
|
licenses: []
|
|
48
|
-
|
|
49
45
|
post_install_message:
|
|
50
|
-
rdoc_options:
|
|
46
|
+
rdoc_options:
|
|
51
47
|
- --main
|
|
52
48
|
- README.rdoc
|
|
53
|
-
require_paths:
|
|
49
|
+
require_paths:
|
|
54
50
|
- lib
|
|
55
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
|
51
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
56
52
|
none: false
|
|
57
|
-
requirements:
|
|
58
|
-
- -
|
|
59
|
-
- !ruby/object:Gem::Version
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
version: "0"
|
|
63
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
53
|
+
requirements:
|
|
54
|
+
- - ! '>='
|
|
55
|
+
- !ruby/object:Gem::Version
|
|
56
|
+
version: '0'
|
|
57
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
64
58
|
none: false
|
|
65
|
-
requirements:
|
|
66
|
-
- -
|
|
67
|
-
- !ruby/object:Gem::Version
|
|
68
|
-
|
|
69
|
-
- 0
|
|
70
|
-
version: "0"
|
|
59
|
+
requirements:
|
|
60
|
+
- - ! '>='
|
|
61
|
+
- !ruby/object:Gem::Version
|
|
62
|
+
version: '0'
|
|
71
63
|
requirements: []
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
rubygems_version: 1.3.7
|
|
64
|
+
rubyforge_project:
|
|
65
|
+
rubygems_version: 1.8.11
|
|
75
66
|
signing_key:
|
|
76
67
|
specification_version: 3
|
|
77
|
-
summary: GitHub Issues
|
|
68
|
+
summary: GitHub Issues command line interface
|
|
78
69
|
test_files: []
|
|
79
|
-
|
|
70
|
+
has_rdoc: true
|
data/History.rdoc
DELETED
|
@@ -1,221 +0,0 @@
|
|
|
1
|
-
=== 0.2.5
|
|
2
|
-
|
|
3
|
-
* 1 enhancement
|
|
4
|
-
|
|
5
|
-
* Support for SSL with the "--ssl" flag (and "github.ssl" configuration).
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
=== 0.2.4
|
|
9
|
-
|
|
10
|
-
* 1 enhancement
|
|
11
|
-
|
|
12
|
-
* Detect remotes and prefer them with the "-r" flag.
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
* 1 bugfix
|
|
16
|
-
|
|
17
|
-
* Fix formatting for Ruby 1.9.1.
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
=== 0.2.3 / 2009-12-17
|
|
21
|
-
|
|
22
|
-
* Minor enhancements
|
|
23
|
-
|
|
24
|
-
* Better follow git's editor and pager behavior.
|
|
25
|
-
* Accept -w and --web as alternatives to -u and --url (like git help).
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
=== 0.2.2 / 2009-11-30
|
|
29
|
-
|
|
30
|
-
* 1 bugfix
|
|
31
|
-
|
|
32
|
-
* Fixed Net::HTTP posts in Ruby 1.9 (params must be stringified keys).
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
=== 0.2.1 / 2009-11-29
|
|
36
|
-
|
|
37
|
-
* 1 bugfix
|
|
38
|
-
|
|
39
|
-
* ANSI format by word break.
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
=== 0.2.0 / 2009-11-03
|
|
43
|
-
|
|
44
|
-
* Major-minor release!
|
|
45
|
-
|
|
46
|
-
* Cleanup! (Better help, warnings and errors.)
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
=== 0.1.7 / 2009-08-26
|
|
50
|
-
|
|
51
|
-
* 2 bugfixes
|
|
52
|
-
|
|
53
|
-
* Allow dots in repo names.
|
|
54
|
-
* Fix bug preventing invocation from non-GitHub repo directories.
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
=== 0.1.6 / 2009-08-05
|
|
58
|
-
|
|
59
|
-
* 1 minor enhancement
|
|
60
|
-
|
|
61
|
-
* Support for non-"origin" remotes.
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
* 1 bugfix
|
|
65
|
-
|
|
66
|
-
* Graceful offline error.
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
=== 0.1.5 / 2009-07-08
|
|
70
|
-
|
|
71
|
-
* 2 bugfixes
|
|
72
|
-
|
|
73
|
-
* Long titles should wrap in show/verbose issue view.
|
|
74
|
-
* If a non-OptionParser argument fails early, re-parse when valid.
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
=== 0.1.4 / 2009-05-15
|
|
78
|
-
|
|
79
|
-
* 1 minor enhancement
|
|
80
|
-
|
|
81
|
-
* Minor Windows support.
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
=== 0.1.3 / 2009-05-08
|
|
85
|
-
|
|
86
|
-
* 1 minor enhancement
|
|
87
|
-
|
|
88
|
-
* Fix bug where `more' was being passed `less' options.
|
|
89
|
-
* Fix scoping of commands so `ghi user/repo` can run outside of a repo
|
|
90
|
-
directory.
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
=== 0.1.2 / 2009-05-07
|
|
94
|
-
|
|
95
|
-
* 1 major enhancement
|
|
96
|
-
|
|
97
|
-
* Better fallbacks. Enter `ghi open`, `ghi list closed`, `ghi search term`,
|
|
98
|
-
`ghi show 2`, `ghi user/repo`, etc., it will try to work. Fallbacks do not
|
|
99
|
-
accept options, though.
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
=== 0.1.1 / 2009-05-01
|
|
103
|
-
|
|
104
|
-
* 3 major enhancements
|
|
105
|
-
|
|
106
|
-
* Use `more' (or $GHI_PAGER) to accommodate lengthy output.
|
|
107
|
-
* Default to "-l" if Dir.pwd is a git repo.
|
|
108
|
-
* Accept numbered args/flags to shortcut "show" (e.g., "ghi -2", "ghi 2")
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
* 1 minor enhancement
|
|
112
|
-
|
|
113
|
-
* Update --url flag to GitHub's new convention.
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
=== 0.1.0 / 2009-04-27
|
|
117
|
-
|
|
118
|
-
* 2 major enhancements
|
|
119
|
-
|
|
120
|
-
* Use tempfiles when we should, the gitdir otherwise.
|
|
121
|
-
* Now a minor!
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
* 2 minor enhancement
|
|
125
|
-
|
|
126
|
-
* Small ANSI tweaks.
|
|
127
|
-
* Truncation fix.
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
=== 0.0.9 / 2009-04-27
|
|
131
|
-
|
|
132
|
-
* 1 major enhancement
|
|
133
|
-
|
|
134
|
-
* ANSI colors (honors your .gitconfig).
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
* 1 minor enhancement
|
|
138
|
-
|
|
139
|
-
* Bugfixes.
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
=== 0.0.8 / 2009-04-26
|
|
143
|
-
|
|
144
|
-
* 1 major enhancement
|
|
145
|
-
|
|
146
|
-
* Flag to return issues URLs.
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
* 1 minor enhancement
|
|
150
|
-
|
|
151
|
-
* Preliminary specs for top-level module and API class.
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
=== 0.0.7 / 2009-04-25
|
|
155
|
-
|
|
156
|
-
* 1 major enhancement
|
|
157
|
-
|
|
158
|
-
* Labels! Label and un-label at your whim.
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
* 1 minor enhancement
|
|
162
|
-
|
|
163
|
-
* Tail arguments are sometimes parsed. E.g., ghi -om "Issue message parsed".
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
=== 0.0.6 / 2009-04-25
|
|
167
|
-
|
|
168
|
-
* 2 minor enhancements
|
|
169
|
-
|
|
170
|
-
* Accept comments as arguments in more places.
|
|
171
|
-
* Update error message to accommodate both issues and comments.
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
=== 0.0.5 / 2009-04-25
|
|
175
|
-
|
|
176
|
-
* 3 major enhancements
|
|
177
|
-
|
|
178
|
-
* Flag to claim/label issues with your GitHub username (thanks, Jamie).
|
|
179
|
-
* Flag for commenting on issues.
|
|
180
|
-
* Prompt for GitHub login and token if absent from gitconfig.
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
* 1 minor enhancement
|
|
184
|
-
|
|
185
|
-
* Opening issues with a title bypasses your $EDITOR.
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
=== 0.0.4 / 2009-04-24
|
|
189
|
-
|
|
190
|
-
* 1 major enhancement
|
|
191
|
-
|
|
192
|
-
* Cache messages created in $EDITOR.
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
* 2 minor enhancements
|
|
196
|
-
|
|
197
|
-
* Refactoring and cleanup.
|
|
198
|
-
* Change editing messages.
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
=== 0.0.3 / 2009-04-23
|
|
202
|
-
|
|
203
|
-
* 2 minor enhancements
|
|
204
|
-
|
|
205
|
-
* Typo corrected.
|
|
206
|
-
* README updated.
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
=== 0.0.2 / 2009-04-22
|
|
210
|
-
|
|
211
|
-
* 1 major enhancement
|
|
212
|
-
|
|
213
|
-
* Add --search flag.
|
|
214
|
-
* Add --repo flag.
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
=== 0.0.1 / 2009-04-21
|
|
218
|
-
|
|
219
|
-
* 1 major enhancement
|
|
220
|
-
|
|
221
|
-
* Birthday!
|
data/Manifest.txt
DELETED