takoyaki 0.1.0 → 0.2.0

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: 61de62f7f98364a4f3f5d3dd4c474dc360e46a7d
4
- data.tar.gz: 754603899b5cee7ce7cbdc80bd82ac70164665dc
3
+ metadata.gz: 36c2edab1e5af30b43fdf1d3b020dee7e669459b
4
+ data.tar.gz: e3568adb6a590097df7b62ea4b548cf1de014146
5
5
  SHA512:
6
- metadata.gz: 22e923d8a8f030dc27e92a676823e4d539778bbb9f946295a1677e313f6a46b516586b4b60bb5d7421efbc7dc067451cc3da6308f68fb569d4cd7e82cb66618f
7
- data.tar.gz: 69d199b6e4191ca498068c0478cd0186502fbbbea190b5bcf248ea79078e3e5cf7732edaf178cd11164e742519892208ed1488744cae8731eeffadebf19aeec2
6
+ metadata.gz: ecbaab0d3f6e4f83c3183144d701f8f7302fa466590227846059ba25d9f747708dd2be31797e74f247166f1dffde1226b0adff94a55678d9832443605efa2bd1
7
+ data.tar.gz: 72ce3ed7bf8a2d92db17b72576e776fc55674628f683220ab532e94feec8f8cc1e6ebe71b033362e0219473aa8062d7ca72a89155b12ae846beb825ec90c1030
data/.rubocop.yml CHANGED
@@ -71,3 +71,7 @@ Style/StringLiterals:
71
71
 
72
72
  Style/TrailingCommaInLiteral:
73
73
  Enabled: false
74
+
75
+ ######## Metrics ########
76
+ Metrics/LineLength:
77
+ Max: 100
data/README.md CHANGED
@@ -21,12 +21,17 @@ repositories:
21
21
  - repo4
22
22
  ```
23
23
 
24
- Run `tkyk` command:
25
-
24
+ ### Activities
26
25
  ```bash
27
26
  $ tkyk activities
28
27
  ```
29
28
 
29
+ ### Code Reviews
30
+ ```bash
31
+ $ tkyk reviews # only your reviews
32
+ $ tkyk reviews all # all open pull requests
33
+ ```
34
+
30
35
  ## Contributing
31
36
 
32
37
  Bug reports and pull requests are welcome on GitHub at https://github.com/nownabe/takoyaki.
@@ -54,6 +54,8 @@ module Takoyaki
54
54
  end
55
55
  end
56
56
 
57
+ private
58
+
57
59
  def client
58
60
  @client ||= Octokit::Client.new(access_token: config["access_token"])
59
61
  end
@@ -0,0 +1,88 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Takoyaki
4
+ module Commands
5
+ class Reviews
6
+ attr_reader :target
7
+
8
+ def initialize(target = nil)
9
+ @target = target
10
+ end
11
+
12
+ def execute
13
+ output
14
+ end
15
+
16
+ private
17
+
18
+ def client
19
+ @client ||= Octokit::Client.new(access_token: config["access_token"])
20
+ end
21
+
22
+ def config
23
+ @config ||= YAML.load_file(File.expand_path("~/.takoyaki.yaml"))
24
+ end
25
+
26
+ def filtered_reviews
27
+ @filtered_reviews ||=
28
+ reviews.each_with_object({}) do |(repo, prs), obj|
29
+ obj[repo] = prs.keep_if { |pr| pr[:reviewers].include?(user) }
30
+ end
31
+ end
32
+
33
+ def generate_pull_request_hash(pr)
34
+ reviewers = pr.assignees.map(&:login).delete_if { |u| u == pr.user.login }
35
+ {
36
+ number: pr.number,
37
+ title: pr.title,
38
+ author: pr.user.login,
39
+ reviewers: reviewers,
40
+ created_at: pr.created_at.getlocal.strftime("%Y-%m-%d"),
41
+ url: pr.html_url
42
+ }
43
+ end
44
+ alias pr_hash generate_pull_request_hash
45
+
46
+ def only_me?
47
+ target != "all"
48
+ end
49
+
50
+ def fetch_pull_requests(repository)
51
+ client.pull_requests(repository, state: "open")
52
+ end
53
+ alias fetch_pr fetch_pull_requests
54
+
55
+ def format_pull_request(pr)
56
+ "- [##{pr[:number]} #{pr[:title]}](#{pr[:url]}) " \
57
+ "from #{pr[:created_at]}, " \
58
+ "reviewes: #{pr[:reviewers].join(', ')}"
59
+ end
60
+ alias format_pr format_pull_request
61
+
62
+ def output
63
+ output_reviews = only_me? ? filtered_reviews : reviews
64
+ output_reviews.each do |repo, prs|
65
+ puts "### #{repo}"
66
+ prs.each { |pr| puts format_pr(pr) }
67
+ end
68
+ end
69
+
70
+ def repositories
71
+ config["repositories"].map do |org, repos|
72
+ repos.map { |repo| "#{org}/#{repo}" }
73
+ end.flatten
74
+ end
75
+
76
+ def reviews
77
+ @reviews ||=
78
+ repositories.each_with_object({}) do |repo, obj|
79
+ obj[repo] = fetch_pr(repo).map { |pr| pr_hash(pr) }
80
+ end
81
+ end
82
+
83
+ def user
84
+ client.user.login
85
+ end
86
+ end
87
+ end
88
+ end
@@ -6,3 +6,4 @@ module Takoyaki
6
6
  end
7
7
 
8
8
  require "takoyaki/commands/activities"
9
+ require "takoyaki/commands/reviews"
@@ -19,6 +19,8 @@ module Takoyaki
19
19
  case command
20
20
  when "activities"
21
21
  Commands::Activities.new.execute
22
+ when "reviews"
23
+ Commands::Reviews.new(*args[1..-1]).execute
22
24
  end
23
25
  end
24
26
 
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module Takoyaki
3
- VERSION = "0.1.0"
3
+ VERSION = "0.2.0"
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: takoyaki
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - nownabe
@@ -104,6 +104,7 @@ files:
104
104
  - lib/takoyaki.rb
105
105
  - lib/takoyaki/commands.rb
106
106
  - lib/takoyaki/commands/activities.rb
107
+ - lib/takoyaki/commands/reviews.rb
107
108
  - lib/takoyaki/runner.rb
108
109
  - lib/takoyaki/version.rb
109
110
  - takoyaki.gemspec