hub_link 0.18.0 → 0.19.0
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 +5 -5
- data/README.md +0 -1
- data/hub_link.gemspec +2 -2
- data/lib/hub_link/api/issue.rb +59 -0
- data/lib/hub_link/api/pull_request.rb +7 -59
- data/lib/hub_link/batch.rb +7 -7
- data/lib/hub_link/version.rb +1 -1
- data/lib/hub_link.rb +3 -1
- metadata +14 -16
- data/lib/hub_link/api/review_request.rb +0 -31
- data/lib/hub_link/api_logging.rb +0 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: bb5467d077c3a02f7bb755a034997a7df4ead75eedabbad773b5d48725d57446
|
4
|
+
data.tar.gz: 1204105a373f2af9a76f37c9beecc0ef9dc30f377b6344d4b831c187fa1eaaec
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fa20791e755f899fdb81f8a9166328779ae2223219de2cdbf1008887d7647494f080e5d9a72e8652762cd1e460ba203f49f07605ff93dde29093b3074a1044d4
|
7
|
+
data.tar.gz: 5f42d81a7bc074eb3cccb0970623da01855d2d86624bc193d6039b54198df16ed5342579870c9354efe9d1c70c5107a916be0e8f2c0a07ab74c94e17dedaeb28
|
data/README.md
CHANGED
@@ -17,7 +17,6 @@ Then you can do:
|
|
17
17
|
stream = HubLink::Stream.new("balvig/hub_link", since: 3.months.ago)
|
18
18
|
|
19
19
|
stream.in_batches do |batch|
|
20
|
-
batch.review_requests # => [{ digest: "a45bfa...", reviewer: "balvig", ... }]
|
21
20
|
batch.reviews # => [{ id: 54, reviewer: "balvig", approval: true, ... }]
|
22
21
|
batch.prs # => [{ id: 34, merge_time: 6400, ... }]
|
23
22
|
end
|
data/hub_link.gemspec
CHANGED
@@ -23,8 +23,8 @@ Gem::Specification.new do |spec|
|
|
23
23
|
spec.add_dependency "faraday_middleware"
|
24
24
|
spec.add_dependency "octokit"
|
25
25
|
|
26
|
-
spec.add_development_dependency "bundler", "~>
|
27
|
-
spec.add_development_dependency "rake", "
|
26
|
+
spec.add_development_dependency "bundler", "~> 2.0"
|
27
|
+
spec.add_development_dependency "rake", ">= 12.3.3"
|
28
28
|
spec.add_development_dependency "minitest", "~> 5.0"
|
29
29
|
spec.add_development_dependency "pry"
|
30
30
|
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
module HubLink
|
2
|
+
module Api
|
3
|
+
class Issue < SimpleDelegator
|
4
|
+
require "hub_link/slicer"
|
5
|
+
require "hub_link/api/pull_request"
|
6
|
+
|
7
|
+
EXPORT_COLUMNS = %i(
|
8
|
+
id
|
9
|
+
title
|
10
|
+
number
|
11
|
+
created_at
|
12
|
+
updated_at
|
13
|
+
closed_at
|
14
|
+
submitter
|
15
|
+
labels
|
16
|
+
repo
|
17
|
+
html_url
|
18
|
+
state
|
19
|
+
)
|
20
|
+
|
21
|
+
def self.list(repo:, page:, **options)
|
22
|
+
Octokit.list_issues(repo, options.merge(page: page, sort: "updated", direction: "asc", state: "all")).map do |item|
|
23
|
+
item.repo = repo
|
24
|
+
new_from_api(item)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.new_from_api(item)
|
29
|
+
if item.respond_to?(:pull_request)
|
30
|
+
PullRequest.new(item)
|
31
|
+
else
|
32
|
+
Issue.new(item)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def pull_request?
|
37
|
+
false
|
38
|
+
end
|
39
|
+
|
40
|
+
def submitter
|
41
|
+
user.login
|
42
|
+
end
|
43
|
+
|
44
|
+
def labels
|
45
|
+
super.map(&:name).join(", ")
|
46
|
+
end
|
47
|
+
|
48
|
+
def to_h
|
49
|
+
Slicer.new(self, columns: export_columns).to_h
|
50
|
+
end
|
51
|
+
|
52
|
+
private
|
53
|
+
|
54
|
+
def export_columns
|
55
|
+
EXPORT_COLUMNS
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -1,52 +1,24 @@
|
|
1
|
-
require "hub_link/api/review"
|
2
|
-
require "hub_link/api/review_request"
|
3
|
-
require "hub_link/slicer"
|
4
|
-
|
5
1
|
module HubLink
|
6
2
|
module Api
|
7
|
-
class PullRequest <
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
number
|
12
|
-
created_at
|
13
|
-
updated_at
|
14
|
-
closed_at
|
3
|
+
class PullRequest < Issue
|
4
|
+
require "hub_link/api/review"
|
5
|
+
|
6
|
+
ADDITIONAL_EXPORT_COLUMNS = %i(
|
15
7
|
merged_at
|
16
8
|
body_size
|
17
9
|
additions
|
18
10
|
comments_count
|
19
11
|
review_comments_count
|
20
|
-
submitter
|
21
|
-
labels
|
22
|
-
repo
|
23
|
-
html_url
|
24
|
-
state
|
25
12
|
)
|
26
13
|
|
27
|
-
def self.list(repo:, page:, **options)
|
28
|
-
Octokit.list_issues(repo, options.merge(page: page, sort: "updated", direction: "asc", state: "all")).map do |item|
|
29
|
-
item.repo = repo
|
30
|
-
new(item)
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
14
|
def pull_request?
|
35
|
-
|
36
|
-
end
|
37
|
-
|
38
|
-
def submitter
|
39
|
-
user.login
|
15
|
+
true
|
40
16
|
end
|
41
17
|
|
42
18
|
def reviews
|
43
19
|
@_reviews ||= fetch_reviews
|
44
20
|
end
|
45
21
|
|
46
|
-
def review_requests
|
47
|
-
@_review_requests ||= fetch_review_requests
|
48
|
-
end
|
49
|
-
|
50
22
|
def additions
|
51
23
|
extended_data.additions
|
52
24
|
end
|
@@ -67,26 +39,10 @@ module HubLink
|
|
67
39
|
extended_data.review_comments
|
68
40
|
end
|
69
41
|
|
70
|
-
def labels
|
71
|
-
super.map(&:name).join(", ")
|
72
|
-
end
|
73
|
-
|
74
|
-
def to_h
|
75
|
-
Slicer.new(self, columns: EXPORT_COLUMNS).to_h
|
76
|
-
end
|
77
|
-
|
78
42
|
private
|
79
43
|
|
80
|
-
def
|
81
|
-
|
82
|
-
end
|
83
|
-
|
84
|
-
def fetch_review_requests
|
85
|
-
requests = Octokit.pull_request_review_requests(repo, number)
|
86
|
-
|
87
|
-
requests.users.compact.map do |reviewer|
|
88
|
-
ReviewRequest.new(created_at: created_at, reviewer: reviewer.login, requester: submitter, pull_request_id: id)
|
89
|
-
end
|
44
|
+
def export_columns
|
45
|
+
super + ADDITIONAL_EXPORT_COLUMNS
|
90
46
|
end
|
91
47
|
|
92
48
|
def fetch_reviews
|
@@ -99,14 +55,6 @@ module HubLink
|
|
99
55
|
end
|
100
56
|
end
|
101
57
|
|
102
|
-
def first_approval
|
103
|
-
reviews.find(&:approval?)
|
104
|
-
end
|
105
|
-
|
106
|
-
def first_review
|
107
|
-
reviews.find(&:submitted?)
|
108
|
-
end
|
109
|
-
|
110
58
|
def extended_data
|
111
59
|
@_extended_data ||= Octokit.get(pull_request.url)
|
112
60
|
end
|
data/lib/hub_link/batch.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require "hub_link/api/
|
1
|
+
require "hub_link/api/issue"
|
2
2
|
|
3
3
|
module HubLink
|
4
4
|
class Batch
|
@@ -28,16 +28,16 @@ module HubLink
|
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
|
-
def
|
32
|
-
log "Fetching
|
33
|
-
pull_request_results
|
31
|
+
def issues
|
32
|
+
log "Fetching issues" do
|
33
|
+
(results - pull_request_results).map(&:to_h)
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
37
37
|
private
|
38
38
|
|
39
39
|
def pull_request_results
|
40
|
-
results.find_all(&:pull_request?)
|
40
|
+
@_pull_request_results ||= results.find_all(&:pull_request?)
|
41
41
|
end
|
42
42
|
|
43
43
|
def results
|
@@ -45,8 +45,8 @@ module HubLink
|
|
45
45
|
end
|
46
46
|
|
47
47
|
def fetch_results
|
48
|
-
log "*
|
49
|
-
Api::
|
48
|
+
log "*Querying issues* #{formatted_options}" do
|
49
|
+
Api::Issue.list(**options)
|
50
50
|
end
|
51
51
|
end
|
52
52
|
|
data/lib/hub_link/version.rb
CHANGED
data/lib/hub_link.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hub_link
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.19.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jens Balvig
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-08-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -72,28 +72,28 @@ dependencies:
|
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
75
|
+
version: '2.0'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
82
|
+
version: '2.0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: rake
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - "
|
87
|
+
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
89
|
+
version: 12.3.3
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- - "
|
94
|
+
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
96
|
+
version: 12.3.3
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: minitest
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -122,7 +122,7 @@ dependencies:
|
|
122
122
|
- - ">="
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '0'
|
125
|
-
description:
|
125
|
+
description:
|
126
126
|
email:
|
127
127
|
- jens@balvig.com
|
128
128
|
executables: []
|
@@ -140,11 +140,10 @@ files:
|
|
140
140
|
- bin/setup
|
141
141
|
- hub_link.gemspec
|
142
142
|
- lib/hub_link.rb
|
143
|
+
- lib/hub_link/api/issue.rb
|
143
144
|
- lib/hub_link/api/logging.rb
|
144
145
|
- lib/hub_link/api/pull_request.rb
|
145
146
|
- lib/hub_link/api/review.rb
|
146
|
-
- lib/hub_link/api/review_request.rb
|
147
|
-
- lib/hub_link/api_logging.rb
|
148
147
|
- lib/hub_link/batch.rb
|
149
148
|
- lib/hub_link/configuration.rb
|
150
149
|
- lib/hub_link/importer.rb
|
@@ -158,7 +157,7 @@ homepage: https://github.com/balvig/hub_link
|
|
158
157
|
licenses:
|
159
158
|
- MIT
|
160
159
|
metadata: {}
|
161
|
-
post_install_message:
|
160
|
+
post_install_message:
|
162
161
|
rdoc_options: []
|
163
162
|
require_paths:
|
164
163
|
- lib
|
@@ -173,9 +172,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
173
172
|
- !ruby/object:Gem::Version
|
174
173
|
version: '0'
|
175
174
|
requirements: []
|
176
|
-
|
177
|
-
|
178
|
-
signing_key:
|
175
|
+
rubygems_version: 3.2.3
|
176
|
+
signing_key:
|
179
177
|
specification_version: 4
|
180
178
|
summary: Fetch raw data from GitHub for metrics
|
181
179
|
test_files: []
|
@@ -1,31 +0,0 @@
|
|
1
|
-
module HubLink
|
2
|
-
module Api
|
3
|
-
class ReviewRequest
|
4
|
-
require "digest/sha1"
|
5
|
-
|
6
|
-
attr_reader :reviewer, :requester, :created_at, :pull_request_id
|
7
|
-
|
8
|
-
def initialize(reviewer:, requester:, created_at:, pull_request_id:)
|
9
|
-
@reviewer = reviewer
|
10
|
-
@requester = requester
|
11
|
-
@created_at = created_at
|
12
|
-
@pull_request_id = pull_request_id
|
13
|
-
end
|
14
|
-
|
15
|
-
# API doesn't return IDs for review requests https://developer.github.com/v3/pulls/review_requests/#list-review-requests
|
16
|
-
def digest
|
17
|
-
Digest::SHA1.hexdigest(digest_components.join)
|
18
|
-
end
|
19
|
-
|
20
|
-
def to_h
|
21
|
-
Slicer.new(self, columns: %i(digest reviewer requester created_at pull_request_id)).to_h
|
22
|
-
end
|
23
|
-
|
24
|
-
private
|
25
|
-
|
26
|
-
def digest_components
|
27
|
-
[pull_request_id, reviewer]
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
data/lib/hub_link/api_logging.rb
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
module HubLink
|
2
|
-
class ApiLogging < Faraday::Response::Middleware
|
3
|
-
def call(env)
|
4
|
-
message = "#{env[:method].upcase} #{env[:url]}".sub("https://api.github.com/repos", "")
|
5
|
-
logger.info(UPDATE) { message }
|
6
|
-
super
|
7
|
-
end
|
8
|
-
|
9
|
-
private
|
10
|
-
|
11
|
-
def logger
|
12
|
-
HubLink.logger
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|