stephencelis-ghi 0.0.6 → 0.0.7

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/History.rdoc CHANGED
@@ -1,3 +1,15 @@
1
+ === 0.0.7 / 2009-04-25
2
+
3
+ * 1 major enhancement
4
+
5
+ * Labels! Label and un-label at your whim.
6
+
7
+
8
+ * 1 minor enhancement
9
+
10
+ * Tail arguments are sometimes parsed. E.g., ghi -om "Issue message parsed".
11
+
12
+
1
13
  === 0.0.6 / 2009-04-25
2
14
 
3
15
  * 2 minor enhancements
data/README.rdoc CHANGED
@@ -15,21 +15,25 @@ Get:
15
15
 
16
16
  Go:
17
17
 
18
- % ghi
19
18
  Usage: ghi [options]
20
19
  -l, --list [state|term|number]
21
20
  --search, --show
22
- -o, --open, --reopen [number]
21
+ -o, --open [title|number]
22
+ --reopen
23
23
  -c, --closed, --close [number]
24
24
  -e, --edit [number]
25
25
  -r, --repo, --repository [name]
26
26
  -m, --comment [number|comment]
27
+ -t, --label [number] [label]
27
28
  --claim [number]
29
+ -d, --unlabel [number] [label]
30
+ -V, --version
31
+ -h, --help
28
32
 
29
33
 
30
34
  == EXAMPLE?
31
35
 
32
- ghi works simply from within the directory. Some short examples:
36
+ ghi works simply from within a repository. Some short examples:
33
37
 
34
38
  ghi -l # Lists all open issues
35
39
  ghi -lc # Lists all closed issues
@@ -45,6 +49,8 @@ ghi works simply from within the directory. Some short examples:
45
49
  ghi -c1 -m "Comment" # Closes issue with specified comment
46
50
  ghi -o1 # Reopens 1 (accepts comments, too)
47
51
  ghi -m1 # Comments on issue 1 (in your $EDITOR)
52
+ ghi -t1 "tag" # Labels issue 1 with "tag"
53
+ ghi -d1 "tag" # Removes the label, "tag"
48
54
  ghi --claim 1 # Tags issue 1 with your GitHub username
49
55
 
50
56
 
data/lib/ghi.rb CHANGED
@@ -2,7 +2,7 @@ require "net/http"
2
2
  require "yaml"
3
3
 
4
4
  module GHI
5
- VERSION = "0.0.6"
5
+ VERSION = "0.0.7"
6
6
 
7
7
  def self.login
8
8
  return @login if defined? @login
data/lib/ghi/api.rb CHANGED
@@ -67,6 +67,8 @@ class GHI::API
67
67
  res = YAML.load Net::HTTP.get(URI.parse(url(*args) + auth(true)))
68
68
  raise ResponseError, errors(res) if res["error"]
69
69
  res
70
+ rescue ArgumentError, URI::InvalidURIError
71
+ raise ResponseError, "GitHub hiccuped on your request"
70
72
  end
71
73
 
72
74
  def post(*args)
@@ -75,6 +77,8 @@ class GHI::API
75
77
  res = YAML.load Net::HTTP.post_form(URI.parse(url(*args)), params).body
76
78
  raise ResponseError, errors(res) if res["error"]
77
79
  res
80
+ rescue ArgumentError, URI::InvalidURIError
81
+ raise ResponseError, "GitHub hiccuped on your request"
78
82
  end
79
83
 
80
84
  def errors(response)
data/lib/ghi/cli.rb CHANGED
@@ -136,10 +136,15 @@ module GHI::CLI #:nodoc:
136
136
  include FileHelper, FormattingHelper
137
137
 
138
138
  attr_reader :message, :user, :repo, :api, :action, :state, :search_term,
139
- :number, :title, :body, :label
139
+ :number, :title, :body, :label, :args
140
140
 
141
141
  def initialize
142
- option_parser.parse!(ARGV)
142
+ @args = option_parser.parse!(ARGV)
143
+
144
+ if action.nil?
145
+ puts option_parser
146
+ exit
147
+ end
143
148
 
144
149
  `git config --get remote.origin.url`.match %r{([^:/]+)/([^/]+).git$}
145
150
  @user ||= $1
@@ -147,17 +152,16 @@ module GHI::CLI #:nodoc:
147
152
  @api = GHI::API.new user, repo
148
153
 
149
154
  case action
150
- when :search then search
151
- when :list then list
152
- when :show then show
153
- when :open then open
154
- when :edit then edit
155
- when :close then close
156
- when :reopen then reopen
157
- when :comment then comment
158
-
159
- when :claim then label
160
- else puts option_parser
155
+ when :search then search
156
+ when :list then list
157
+ when :show then show
158
+ when :open then open
159
+ when :edit then edit
160
+ when :close then close
161
+ when :reopen then reopen
162
+ when :comment then comment
163
+ when :label, :claim then add_label
164
+ when :unlabel then remove_label
161
165
  end
162
166
  rescue GHI::API::InvalidConnection
163
167
  warn "#{File.basename $0}: not a GitHub repo"
@@ -208,7 +212,7 @@ module GHI::CLI #:nodoc:
208
212
  @action = :list
209
213
  @state = :open
210
214
  when /^m$/
211
- raise OptionParser::AmbiguousOption # TODO: Parse args for message.
215
+ @title = ARGV * " "
212
216
  else
213
217
  @title = v
214
218
  end
@@ -222,6 +226,8 @@ module GHI::CLI #:nodoc:
222
226
  when /^l/, nil
223
227
  @action = :list
224
228
  @state = :closed
229
+ when nil
230
+ raise OptionParser::MissingArgument
225
231
  else
226
232
  raise OptionParser::InvalidOption
227
233
  end
@@ -233,10 +239,10 @@ module GHI::CLI #:nodoc:
233
239
  @action = :edit
234
240
  @state = :closed
235
241
  @number = v.to_i
236
- when /^m$/
237
- raise OptionParser::AmbiguousOption # TODO: Parse args for message.
238
- else
242
+ when nil
239
243
  raise OptionParser::MissingArgument
244
+ else
245
+ raise OptionParser::InvalidOption
240
246
  end
241
247
  end
242
248
 
@@ -257,12 +263,29 @@ module GHI::CLI #:nodoc:
257
263
  end
258
264
  end
259
265
 
266
+ opts.on("-t", "--label [number] [label]") do |v|
267
+ raise OptionParser::MissingArgument if v.nil?
268
+ @action ||= :label
269
+ @number = v.to_i
270
+ end
271
+
260
272
  opts.on("--claim [number]") do |v|
273
+ raise OptionParser::MissingArgument if v.nil?
261
274
  @action = :claim
262
275
  @number = v.to_i
263
276
  @label = GHI.login
264
277
  end
265
278
 
279
+ opts.on("-d", "--unlabel [number] [label]") do |v|
280
+ @action = :unlabel
281
+ case v
282
+ when /^\d+$/
283
+ @number = v.to_i
284
+ when /^\w+$/
285
+ @label = v
286
+ end
287
+ end
288
+
266
289
  opts.on_tail("-V", "--version") do
267
290
  puts "#{File.basename($0)}: v#{GHI::VERSION}"
268
291
  exit
@@ -334,16 +357,18 @@ module GHI::CLI #:nodoc:
334
357
  puts "(comment #{comment["status"]})" if comment
335
358
  end
336
359
 
337
- def label
338
- labels = api.add_label label, number
360
+ def add_label
361
+ new_label = label || body || @args * " "
362
+ labels = api.add_label new_label, number
339
363
  puts action_format
340
364
  puts indent(labels.join(", "))
341
365
  end
342
366
 
343
- def unlabel
344
- labels = api.add_label label, number
367
+ def remove_label
368
+ new_label = label || body || @args * " "
369
+ labels = api.remove_label new_label, number
345
370
  puts action_format
346
- puts indent(labels.join(", "))
371
+ puts indent(labels.empty? ? "no labels" : labels.join(", "))
347
372
  end
348
373
 
349
374
  def comment
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stephencelis-ghi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stephen Celis