gub 0.1.3 → 0.1.4

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.
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