gub 0.1.3 → 0.1.4

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: 3c545f5df605b71f6616e721cb7cede555e6f27b
4
- data.tar.gz: 35c55cf02011c7f5429cf1d8613ad775589caf4c
3
+ metadata.gz: 5c34013ffa3a6dd074cc20b2c444daa3d098ddd5
4
+ data.tar.gz: 2d9571b41254e697ba4a39580acd2f39c78b558b
5
5
  SHA512:
6
- metadata.gz: b29a59c7b85457da01e38dfc53a825526c0e527129fb04596ad860da5b03cadbd89cd2e7031e675139f30fbf43404c12dd65c56a14b89aacf8b6b199227b1cff
7
- data.tar.gz: 7d77d4cad52a3aba03447d358a577b1ef5e0f885f31f28aa6f6167f740653f3e56a3d6394343a92001cbe0340c9302ace20752f63ae7e33f84f6748082826525
6
+ metadata.gz: a876cee97d4f8af56f9435949ca16e0ed689a59e3adef6c1515c81047693d291de4e56bd8bef15278e6ee66a7f7638e694830abbc61cdff4676c0075eeb2cc53
7
+ data.tar.gz: aff50cfb351cd7c96ac0fa226161daf7e60862355817c5840edeca5512c04389208b5f198458e218b28e81837f3bdf297df30f9cf01b122653b23ffe0076fd26
data/lib/gub/cli.rb CHANGED
@@ -7,6 +7,8 @@ module Gub
7
7
  class CLI < Thor
8
8
  include Thor::Actions
9
9
 
10
+ trap(:INT) { exit 1 }
11
+
10
12
  default_task :help
11
13
 
12
14
  desc 'repos', 'List Github repositories'
@@ -27,6 +29,8 @@ module Gub
27
29
  end
28
30
  end
29
31
  puts table
32
+ rescue Gub::Unauthorized
33
+ reauthorize
30
34
  end
31
35
 
32
36
  desc 'issue [id]', 'Show a Github issue'
@@ -41,6 +45,8 @@ module Gub
41
45
  rows << ['Description:', word_wrap(issue.body, line_width: 70)]
42
46
  Gub.log.info "Hint: use 'gub start #{id}' to start working on this issue."
43
47
  say table rows, ["Issue ##{id}:", issue.title]
48
+ rescue Gub::Unauthorized
49
+ reauthorize
44
50
  end
45
51
 
46
52
  desc 'issues', 'List Github issues'
@@ -49,18 +55,18 @@ module Gub
49
55
  def issues
50
56
  args = {}
51
57
  repository = Gub::Repository.new
52
- if options.mine
53
- args[:assignee] = Gub.github.user.login
54
- end
55
58
  if options.all || repository.full_name.nil?
56
- Gub.log.info "Listing issues assigned to you:"
59
+ say "Listing all issues:"
57
60
  issues = Gub.github.user_issues
58
61
  else
62
+ if options.mine
63
+ args[:assignee] = Gub.github.user.login
64
+ end
59
65
  if repository.has_issues?
60
- Gub.log.info "Listing issues for #{repository.full_name}:"
66
+ say "Listing issues for #{repository.full_name}:"
61
67
  else
62
- Gub.log.info "Issues disabled #{repository.full_name}."
63
- Gub.log.info "Listing issues for #{repository.parent}:"
68
+ say "Issues disabled #{repository.full_name}.", :yellow
69
+ say "Listing issues for #{repository.parent}:"
64
70
  end
65
71
  issues = repository.issues(args)
66
72
  end
@@ -76,30 +82,32 @@ module Gub
76
82
  rows << row
77
83
  end
78
84
  say table rows, ['ID', 'Title', 'Author', 'Assignee', 'Status']
79
- Gub.log.info "Found #{issues.count} issue(s)."
80
- Gub.log.info 'Hint: use "gub start" to start working on an issue.'
85
+ say "Found #{issues.count} issue(s)."
86
+ say 'Hint: use "gub start" to start working on an issue.', :green
81
87
  end
88
+ rescue Gub::Unauthorized
89
+ reauthorize
82
90
  end
83
91
 
84
92
  desc 'start [id]', 'Start working on a Github issue'
85
93
  def start id
86
94
  if id.nil?
87
- Gub.log.fatal 'Issue ID required.'
88
- exit 1
95
+ panic 'Issue ID required.'
89
96
  else
90
97
  repository = Repository.new
91
98
  Gub.git.sync
92
99
  repository.assign_issue id
93
100
  Gub.git.checkout('-b', "issue-#{id}")
94
101
  end
102
+ rescue Gub::Unauthorized
103
+ reauthorize
95
104
  end
96
105
 
97
106
  desc 'finish [id]', 'Finish working on a Github issue'
98
107
  def finish id = nil
99
108
  id ||= `git rev-parse --abbrev-ref HEAD`.split('-').last.to_s.chop
100
109
  if id.nil?
101
- Gub.log.fatal "Unable to guess issue ID from branch name. You might want to specify it explicitly."
102
- exit 1
110
+ panic "Unable to guess issue ID from branch name. You might want to specify it explicitly."
103
111
  else
104
112
  repository = Repository.new
105
113
  Gub.log.info 'Pushing branch...'
@@ -108,6 +116,8 @@ module Gub
108
116
  repository.issue_pull_request(id)
109
117
  Gub.git.checkout('master')
110
118
  end
119
+ rescue Gub::Unauthorized
120
+ reauthorize
111
121
  end
112
122
 
113
123
  desc 'clone [repo]', 'Clone a Github repository'
@@ -123,18 +133,24 @@ module Gub
123
133
  `cd #{repo.split('/').last}`
124
134
  repository = Repository.new
125
135
  repository.add_upstream
136
+ rescue Gub::Unauthorized
137
+ reauthorize
126
138
  end
127
139
 
128
140
  desc 'add_upstream', 'Add repo upstream'
129
141
  def add_upstream
130
142
  repository = Repository.new
131
143
  repository.add_upstream
144
+ rescue Gub::Unauthorized
145
+ reauthorize
132
146
  end
133
147
 
134
148
  desc 'sync', 'Synchronize fork with upstream repository'
135
149
  def sync
136
150
  Gub.log.info 'Synchroizing with upstream...'
137
151
  Gub.git.sync
152
+ rescue Gub::Unauthorized
153
+ reauthorize
138
154
  end
139
155
 
140
156
  desc 'info', 'Show current respository information'
@@ -142,6 +158,8 @@ module Gub
142
158
  repo = Gub::Repository.new
143
159
  say "Github repository: #{repo.full_name}"
144
160
  say "Forked from: #{repo.parent}" if repo.parent
161
+ rescue Gub::Unauthorized
162
+ reauthorize
145
163
  end
146
164
 
147
165
  desc 'setup', 'Setup Gub for the first time'
@@ -161,6 +179,16 @@ module Gub
161
179
  say Gub::VERSION
162
180
  end
163
181
 
182
+ no_commands do
183
+ def reauthorize
184
+ say "Unable to find token. You might need to run 'gub setup'.", :red
185
+ end
186
+
187
+ def panic message
188
+ say message, :red
189
+ exit 1
190
+ end
191
+ end
164
192
 
165
193
  private
166
194
  def table rows, header = []
@@ -1,4 +1,5 @@
1
1
  require 'octokit'
2
+ require 'gub/exceptions'
2
3
 
3
4
  module Gub
4
5
  class Github
@@ -14,6 +15,8 @@ module Gub
14
15
 
15
16
  def method_missing meth, *args, &block
16
17
  @connection.send(meth, *args, &block)
18
+ rescue Octokit::Unauthorized, Octokit::NotFound
19
+ raise Gub::Unauthorized
17
20
  end
18
21
  end
19
22
  end
@@ -0,0 +1,3 @@
1
+ module Gub
2
+ class Unauthorized < Exception; end
3
+ end
data/lib/gub/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Gub
2
- VERSION = "0.1.3"
2
+ VERSION = "0.1.4"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gub
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Omar Abdel-Wahab
@@ -129,6 +129,7 @@ files:
129
129
  - lib/gub/clients/git.rb
130
130
  - lib/gub/clients/github.rb
131
131
  - lib/gub/config.rb
132
+ - lib/gub/exceptions.rb
132
133
  - lib/gub/extensions.rb
133
134
  - lib/gub/logger.rb
134
135
  - lib/gub/repository.rb