michael 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +4 -1
  3. data/Gemfile.lock +6 -71
  4. data/exe/michael +2 -2
  5. data/lib/michael.rb +1 -0
  6. data/lib/michael/cli.rb +15 -1
  7. data/lib/michael/commands/auth.rb +11 -21
  8. data/lib/michael/commands/repos.rb +39 -2
  9. data/lib/michael/commands/repos/edit.rb +13 -9
  10. data/lib/michael/commands/repos/pull_requests.rb +38 -97
  11. data/lib/michael/constants.rb +7 -0
  12. data/lib/michael/models/pull_request.rb +139 -0
  13. data/lib/michael/models/repository.rb +45 -0
  14. data/lib/michael/models/review.rb +57 -0
  15. data/lib/michael/models/status.rb +43 -0
  16. data/lib/michael/models/user.rb +18 -0
  17. data/lib/michael/services/configuration.rb +44 -0
  18. data/lib/michael/{models/github/octokit_initializer.rb → services/github/initializer.rb} +9 -7
  19. data/lib/michael/services/github/pull_requests.rb +46 -0
  20. data/lib/michael/services/github/token.rb +41 -0
  21. data/lib/michael/services/github/users.rb +16 -0
  22. data/lib/michael/services/repositories.rb +34 -0
  23. data/lib/michael/version.rb +1 -1
  24. data/michael.gemspec +2 -18
  25. metadata +19 -245
  26. data/lib/michael/command.rb +0 -131
  27. data/lib/michael/models/configuration.rb +0 -69
  28. data/lib/michael/models/github/pr_wrapper.rb +0 -84
  29. data/lib/michael/models/github/pull_request.rb +0 -51
  30. data/lib/michael/models/github/review.rb +0 -41
  31. data/lib/michael/models/github/reviewer.rb +0 -17
  32. data/lib/michael/models/github/status.rb +0 -25
  33. data/lib/michael/models/github/team.rb +0 -17
  34. data/lib/michael/models/github/token_validator.rb +0 -30
  35. data/lib/michael/models/github/user.rb +0 -21
  36. data/lib/michael/models/guard.rb +0 -20
  37. data/lib/michael/models/pull_request_formatter.rb +0 -116
  38. data/lib/michael/models/repository_formatter.rb +0 -26
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'initializer'
4
+ require 'michael/models/user'
5
+
6
+ module Michael
7
+ module Services
8
+ module Github
9
+ class Users < Initializer
10
+ def user
11
+ Michael::Models::User.new(octokit.user)
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'parallel'
4
+
5
+ require_relative '../models/repository'
6
+
7
+ module Michael
8
+ module Services
9
+ class Repositories
10
+ def initialize(prs, threads = 5)
11
+ raise Fatal, 'uninitialized prs' if prs.nil?
12
+
13
+ @prs = prs
14
+ @threads = threads
15
+ end
16
+
17
+ def pull_requests(org_repos_list, queue = nil, params = {})
18
+ repos = Parallel.map(org_repos_list, in_threads: threads) do |org_repo|
19
+ queue << org_repo unless queue.nil?
20
+ list = prs.search(org_repo, params)
21
+ Michael::Models::Repository.new(org_repo, prs: list)
22
+ end
23
+
24
+ queue&.close
25
+
26
+ repos
27
+ end
28
+
29
+ private
30
+
31
+ attr_reader :prs, :threads
32
+ end
33
+ end
34
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Michael
4
- VERSION = '0.1.1'
4
+ VERSION = '0.2.0'
5
5
  end
data/michael.gemspec CHANGED
@@ -35,32 +35,16 @@ Gem::Specification.new do |spec|
35
35
  spec.add_dependency 'pastel', '~> 0.7.2'
36
36
  spec.add_dependency 'ruby-duration', '~> 3.2.3'
37
37
  spec.add_dependency 'thor', '~> 0.20.0'
38
- spec.add_dependency 'tty-box', '~> 0.4.1'
39
- spec.add_dependency 'tty-color', '~> 0.5'
40
- spec.add_dependency 'tty-command', '~> 0.9.0'
41
38
  spec.add_dependency 'tty-config', '~> 0.3.2'
42
- spec.add_dependency 'tty-cursor', '~> 0.7'
43
39
  spec.add_dependency 'tty-editor', '~> 0.5'
44
- spec.add_dependency 'tty-file', '~> 0.8.0'
45
- spec.add_dependency 'tty-font', '~> 0.4.0'
46
40
  spec.add_dependency 'tty-logger', '~> 0.2.0'
47
- spec.add_dependency 'tty-markdown', '~> 0.6.0'
48
- spec.add_dependency 'tty-pager', '~> 0.12'
49
- spec.add_dependency 'tty-pie', '~> 0.3.0'
50
- spec.add_dependency 'tty-platform', '~> 0.2'
51
- spec.add_dependency 'tty-progressbar', '~> 0.17'
52
41
  spec.add_dependency 'tty-prompt', '~> 0.19'
53
- spec.add_dependency 'tty-screen', '~> 0.7'
54
- spec.add_dependency 'tty-spinner', '~> 0.9'
55
- spec.add_dependency 'tty-table', '~> 0.11.0'
56
- spec.add_dependency 'tty-tree', '~> 0.3'
57
- spec.add_dependency 'tty-which', '~> 0.4'
58
42
 
59
43
  spec.add_development_dependency 'bundler', '~> 1.17'
60
- spec.add_development_dependency 'pry'
44
+ spec.add_development_dependency 'pry', '~> 0.12.2'
61
45
  spec.add_development_dependency 'rake', '~> 10.0'
62
46
  spec.add_development_dependency 'rspec', '~> 3.0'
63
47
  spec.add_development_dependency 'simplecov', '~> 0.17.0'
64
48
 
65
- spec.required_ruby_version = '>= 2.4.1'
49
+ spec.required_ruby_version = '>= 2.5.0'
66
50
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: michael
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vitaliy Kudryk
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-10-25 00:00:00.000000000 Z
11
+ date: 2019-11-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: octokit
@@ -80,48 +80,6 @@ dependencies:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: 0.20.0
83
- - !ruby/object:Gem::Dependency
84
- name: tty-box
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - "~>"
88
- - !ruby/object:Gem::Version
89
- version: 0.4.1
90
- type: :runtime
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - "~>"
95
- - !ruby/object:Gem::Version
96
- version: 0.4.1
97
- - !ruby/object:Gem::Dependency
98
- name: tty-color
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: '0.5'
104
- type: :runtime
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
109
- - !ruby/object:Gem::Version
110
- version: '0.5'
111
- - !ruby/object:Gem::Dependency
112
- name: tty-command
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - "~>"
116
- - !ruby/object:Gem::Version
117
- version: 0.9.0
118
- type: :runtime
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - "~>"
123
- - !ruby/object:Gem::Version
124
- version: 0.9.0
125
83
  - !ruby/object:Gem::Dependency
126
84
  name: tty-config
127
85
  requirement: !ruby/object:Gem::Requirement
@@ -136,20 +94,6 @@ dependencies:
136
94
  - - "~>"
137
95
  - !ruby/object:Gem::Version
138
96
  version: 0.3.2
139
- - !ruby/object:Gem::Dependency
140
- name: tty-cursor
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - "~>"
144
- - !ruby/object:Gem::Version
145
- version: '0.7'
146
- type: :runtime
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - "~>"
151
- - !ruby/object:Gem::Version
152
- version: '0.7'
153
97
  - !ruby/object:Gem::Dependency
154
98
  name: tty-editor
155
99
  requirement: !ruby/object:Gem::Requirement
@@ -164,34 +108,6 @@ dependencies:
164
108
  - - "~>"
165
109
  - !ruby/object:Gem::Version
166
110
  version: '0.5'
167
- - !ruby/object:Gem::Dependency
168
- name: tty-file
169
- requirement: !ruby/object:Gem::Requirement
170
- requirements:
171
- - - "~>"
172
- - !ruby/object:Gem::Version
173
- version: 0.8.0
174
- type: :runtime
175
- prerelease: false
176
- version_requirements: !ruby/object:Gem::Requirement
177
- requirements:
178
- - - "~>"
179
- - !ruby/object:Gem::Version
180
- version: 0.8.0
181
- - !ruby/object:Gem::Dependency
182
- name: tty-font
183
- requirement: !ruby/object:Gem::Requirement
184
- requirements:
185
- - - "~>"
186
- - !ruby/object:Gem::Version
187
- version: 0.4.0
188
- type: :runtime
189
- prerelease: false
190
- version_requirements: !ruby/object:Gem::Requirement
191
- requirements:
192
- - - "~>"
193
- - !ruby/object:Gem::Version
194
- version: 0.4.0
195
111
  - !ruby/object:Gem::Dependency
196
112
  name: tty-logger
197
113
  requirement: !ruby/object:Gem::Requirement
@@ -206,76 +122,6 @@ dependencies:
206
122
  - - "~>"
207
123
  - !ruby/object:Gem::Version
208
124
  version: 0.2.0
209
- - !ruby/object:Gem::Dependency
210
- name: tty-markdown
211
- requirement: !ruby/object:Gem::Requirement
212
- requirements:
213
- - - "~>"
214
- - !ruby/object:Gem::Version
215
- version: 0.6.0
216
- type: :runtime
217
- prerelease: false
218
- version_requirements: !ruby/object:Gem::Requirement
219
- requirements:
220
- - - "~>"
221
- - !ruby/object:Gem::Version
222
- version: 0.6.0
223
- - !ruby/object:Gem::Dependency
224
- name: tty-pager
225
- requirement: !ruby/object:Gem::Requirement
226
- requirements:
227
- - - "~>"
228
- - !ruby/object:Gem::Version
229
- version: '0.12'
230
- type: :runtime
231
- prerelease: false
232
- version_requirements: !ruby/object:Gem::Requirement
233
- requirements:
234
- - - "~>"
235
- - !ruby/object:Gem::Version
236
- version: '0.12'
237
- - !ruby/object:Gem::Dependency
238
- name: tty-pie
239
- requirement: !ruby/object:Gem::Requirement
240
- requirements:
241
- - - "~>"
242
- - !ruby/object:Gem::Version
243
- version: 0.3.0
244
- type: :runtime
245
- prerelease: false
246
- version_requirements: !ruby/object:Gem::Requirement
247
- requirements:
248
- - - "~>"
249
- - !ruby/object:Gem::Version
250
- version: 0.3.0
251
- - !ruby/object:Gem::Dependency
252
- name: tty-platform
253
- requirement: !ruby/object:Gem::Requirement
254
- requirements:
255
- - - "~>"
256
- - !ruby/object:Gem::Version
257
- version: '0.2'
258
- type: :runtime
259
- prerelease: false
260
- version_requirements: !ruby/object:Gem::Requirement
261
- requirements:
262
- - - "~>"
263
- - !ruby/object:Gem::Version
264
- version: '0.2'
265
- - !ruby/object:Gem::Dependency
266
- name: tty-progressbar
267
- requirement: !ruby/object:Gem::Requirement
268
- requirements:
269
- - - "~>"
270
- - !ruby/object:Gem::Version
271
- version: '0.17'
272
- type: :runtime
273
- prerelease: false
274
- version_requirements: !ruby/object:Gem::Requirement
275
- requirements:
276
- - - "~>"
277
- - !ruby/object:Gem::Version
278
- version: '0.17'
279
125
  - !ruby/object:Gem::Dependency
280
126
  name: tty-prompt
281
127
  requirement: !ruby/object:Gem::Requirement
@@ -290,76 +136,6 @@ dependencies:
290
136
  - - "~>"
291
137
  - !ruby/object:Gem::Version
292
138
  version: '0.19'
293
- - !ruby/object:Gem::Dependency
294
- name: tty-screen
295
- requirement: !ruby/object:Gem::Requirement
296
- requirements:
297
- - - "~>"
298
- - !ruby/object:Gem::Version
299
- version: '0.7'
300
- type: :runtime
301
- prerelease: false
302
- version_requirements: !ruby/object:Gem::Requirement
303
- requirements:
304
- - - "~>"
305
- - !ruby/object:Gem::Version
306
- version: '0.7'
307
- - !ruby/object:Gem::Dependency
308
- name: tty-spinner
309
- requirement: !ruby/object:Gem::Requirement
310
- requirements:
311
- - - "~>"
312
- - !ruby/object:Gem::Version
313
- version: '0.9'
314
- type: :runtime
315
- prerelease: false
316
- version_requirements: !ruby/object:Gem::Requirement
317
- requirements:
318
- - - "~>"
319
- - !ruby/object:Gem::Version
320
- version: '0.9'
321
- - !ruby/object:Gem::Dependency
322
- name: tty-table
323
- requirement: !ruby/object:Gem::Requirement
324
- requirements:
325
- - - "~>"
326
- - !ruby/object:Gem::Version
327
- version: 0.11.0
328
- type: :runtime
329
- prerelease: false
330
- version_requirements: !ruby/object:Gem::Requirement
331
- requirements:
332
- - - "~>"
333
- - !ruby/object:Gem::Version
334
- version: 0.11.0
335
- - !ruby/object:Gem::Dependency
336
- name: tty-tree
337
- requirement: !ruby/object:Gem::Requirement
338
- requirements:
339
- - - "~>"
340
- - !ruby/object:Gem::Version
341
- version: '0.3'
342
- type: :runtime
343
- prerelease: false
344
- version_requirements: !ruby/object:Gem::Requirement
345
- requirements:
346
- - - "~>"
347
- - !ruby/object:Gem::Version
348
- version: '0.3'
349
- - !ruby/object:Gem::Dependency
350
- name: tty-which
351
- requirement: !ruby/object:Gem::Requirement
352
- requirements:
353
- - - "~>"
354
- - !ruby/object:Gem::Version
355
- version: '0.4'
356
- type: :runtime
357
- prerelease: false
358
- version_requirements: !ruby/object:Gem::Requirement
359
- requirements:
360
- - - "~>"
361
- - !ruby/object:Gem::Version
362
- version: '0.4'
363
139
  - !ruby/object:Gem::Dependency
364
140
  name: bundler
365
141
  requirement: !ruby/object:Gem::Requirement
@@ -378,16 +154,16 @@ dependencies:
378
154
  name: pry
379
155
  requirement: !ruby/object:Gem::Requirement
380
156
  requirements:
381
- - - ">="
157
+ - - "~>"
382
158
  - !ruby/object:Gem::Version
383
- version: '0'
159
+ version: 0.12.2
384
160
  type: :development
385
161
  prerelease: false
386
162
  version_requirements: !ruby/object:Gem::Requirement
387
163
  requirements:
388
- - - ">="
164
+ - - "~>"
389
165
  - !ruby/object:Gem::Version
390
- version: '0'
166
+ version: 0.12.2
391
167
  - !ruby/object:Gem::Dependency
392
168
  name: rake
393
169
  requirement: !ruby/object:Gem::Requirement
@@ -450,25 +226,23 @@ files:
450
226
  - exe/michael
451
227
  - lib/michael.rb
452
228
  - lib/michael/cli.rb
453
- - lib/michael/command.rb
454
229
  - lib/michael/commands/.gitkeep
455
230
  - lib/michael/commands/auth.rb
456
231
  - lib/michael/commands/repos.rb
457
232
  - lib/michael/commands/repos/edit.rb
458
233
  - lib/michael/commands/repos/pull_requests.rb
459
- - lib/michael/models/configuration.rb
460
- - lib/michael/models/github/octokit_initializer.rb
461
- - lib/michael/models/github/pr_wrapper.rb
462
- - lib/michael/models/github/pull_request.rb
463
- - lib/michael/models/github/review.rb
464
- - lib/michael/models/github/reviewer.rb
465
- - lib/michael/models/github/status.rb
466
- - lib/michael/models/github/team.rb
467
- - lib/michael/models/github/token_validator.rb
468
- - lib/michael/models/github/user.rb
469
- - lib/michael/models/guard.rb
470
- - lib/michael/models/pull_request_formatter.rb
471
- - lib/michael/models/repository_formatter.rb
234
+ - lib/michael/constants.rb
235
+ - lib/michael/models/pull_request.rb
236
+ - lib/michael/models/repository.rb
237
+ - lib/michael/models/review.rb
238
+ - lib/michael/models/status.rb
239
+ - lib/michael/models/user.rb
240
+ - lib/michael/services/configuration.rb
241
+ - lib/michael/services/github/initializer.rb
242
+ - lib/michael/services/github/pull_requests.rb
243
+ - lib/michael/services/github/token.rb
244
+ - lib/michael/services/github/users.rb
245
+ - lib/michael/services/repositories.rb
472
246
  - lib/michael/version.rb
473
247
  - michael.gemspec
474
248
  homepage: https://github.com/kudrykv/michael
@@ -485,7 +259,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
485
259
  requirements:
486
260
  - - ">="
487
261
  - !ruby/object:Gem::Version
488
- version: 2.4.1
262
+ version: 2.5.0
489
263
  required_rubygems_version: !ruby/object:Gem::Requirement
490
264
  requirements:
491
265
  - - ">="
@@ -1,131 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'forwardable'
4
-
5
- module Michael
6
- class Command
7
- extend Forwardable
8
-
9
- def_delegators :command, :run
10
-
11
- # Execute this command
12
- #
13
- # @api public
14
- def execute(*)
15
- raise(
16
- NotImplementedError,
17
- "#{self.class}##{__method__} must be implemented"
18
- )
19
- end
20
-
21
- # The external commands runner
22
- #
23
- # @see http://www.rubydoc.info/gems/tty-command
24
- #
25
- # @api public
26
- def command(**options)
27
- require 'tty-command'
28
- TTY::Command.new(options)
29
- end
30
-
31
- # The cursor movement
32
- #
33
- # @see http://www.rubydoc.info/gems/tty-cursor
34
- #
35
- # @api public
36
- def cursor
37
- require 'tty-cursor'
38
- TTY::Cursor
39
- end
40
-
41
- # Open a file or text in the user's preferred editor
42
- #
43
- # @see http://www.rubydoc.info/gems/tty-editor
44
- #
45
- # @api public
46
- def editor
47
- require 'tty-editor'
48
- TTY::Editor
49
- end
50
-
51
- # File manipulation utility methods
52
- #
53
- # @see http://www.rubydoc.info/gems/tty-file
54
- #
55
- # @api public
56
- def generator
57
- require 'tty-file'
58
- TTY::File
59
- end
60
-
61
- def spinner(*args)
62
- require 'tty-spinner'
63
- TTY::Spinner.new(*args)
64
- end
65
-
66
- # Terminal output paging
67
- #
68
- # @see http://www.rubydoc.info/gems/tty-pager
69
- #
70
- # @api public
71
- def pager(**options)
72
- require 'tty-pager'
73
- TTY::Pager.new(options)
74
- end
75
-
76
- # Terminal platform and OS properties
77
- #
78
- # @see http://www.rubydoc.info/gems/tty-pager
79
- #
80
- # @api public
81
- def platform
82
- require 'tty-platform'
83
- TTY::Platform.new
84
- end
85
-
86
- # The interactive prompt
87
- #
88
- # @see http://www.rubydoc.info/gems/tty-prompt
89
- #
90
- # @api public
91
- def prompt(**options)
92
- require 'tty-prompt'
93
- TTY::Prompt.new(options)
94
- end
95
-
96
- def pastel
97
- require 'pastel'
98
- Pastel.new
99
- end
100
-
101
- # Get terminal screen properties
102
- #
103
- # @see http://www.rubydoc.info/gems/tty-screen
104
- #
105
- # @api public
106
- def screen
107
- require 'tty-screen'
108
- TTY::Screen
109
- end
110
-
111
- # The unix which utility
112
- #
113
- # @see http://www.rubydoc.info/gems/tty-which
114
- #
115
- # @api public
116
- def which(*args)
117
- require 'tty-which'
118
- TTY::Which.which(*args)
119
- end
120
-
121
- # Check if executable exists
122
- #
123
- # @see http://www.rubydoc.info/gems/tty-which
124
- #
125
- # @api public
126
- def exec_exist?(*args)
127
- require 'tty-which'
128
- TTY::Which.exist?(*args)
129
- end
130
- end
131
- end