hub_link 0.11.0 → 0.12.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 +4 -4
- data/README.md +2 -2
- data/lib/hub_link/api/pull_request.rb +4 -3
- data/lib/hub_link/api/review.rb +12 -6
- data/lib/hub_link/callbacks.rb +23 -0
- data/lib/hub_link/configuration.rb +0 -1
- data/lib/hub_link/importer.rb +46 -0
- data/lib/hub_link/insert.rb +34 -0
- data/lib/hub_link/slicer.rb +1 -1
- data/lib/hub_link/stream.rb +4 -9
- data/lib/hub_link/version.rb +1 -1
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ca30700c01889aa81a758897b9ed2045326fc007
|
4
|
+
data.tar.gz: 927b8700754db70fd474635aa22cbadd5e2d68f3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ed4acda89cfe380cd64cf031a3be42d23340a297025fb48e625c50f720d997eefcdc031ca1cfe1e5a612caca131c7427188f0ae8e3e14ca9455c9dc6e1aaf24c
|
7
|
+
data.tar.gz: 8c8faa99fdb7f301f7c2a0c72d1e38bb5adc14f0efb39b6dcf8ef6d25983b1603ac2615f20c930567d2b3a0cb55253e1b7a905508f57b87a82d9dc2f7ae419d7
|
data/README.md
CHANGED
@@ -17,9 +17,9 @@ Then you can do:
|
|
17
17
|
stream = HubLink::Stream.new("balvig/hub_link", start_date: 3.months.ago)
|
18
18
|
|
19
19
|
stream.in_batches do |batch|
|
20
|
-
batch.prs # => [{ id: 34, merge_time: 6400, ... }]
|
21
|
-
batch.reviews # => [{ id: 54, reviewer: "balvig", approval: true, ... }]
|
22
20
|
batch.review_requests # => [{ digest: "a45bfa...", reviewer: "balvig", ... }]
|
21
|
+
batch.reviews # => [{ id: 54, reviewer: "balvig", approval: true, ... }]
|
22
|
+
batch.prs # => [{ id: 34, merge_time: 6400, ... }]
|
23
23
|
end
|
24
24
|
```
|
25
25
|
|
@@ -7,12 +7,13 @@ require "hub_link/slicer"
|
|
7
7
|
module HubLink
|
8
8
|
module Api
|
9
9
|
class PullRequest < SimpleDelegator
|
10
|
-
def self.search(filter)
|
10
|
+
def self.search(filter, auto_paginate: true)
|
11
|
+
Octokit.auto_paginate = auto_paginate
|
11
12
|
Octokit.search_issues(filter).items.map { |item| new(item) }
|
12
13
|
end
|
13
14
|
|
14
15
|
def self.oldest(repo:)
|
15
|
-
search("type:pr sort:updated-asc repo:#{repo}").first
|
16
|
+
search("type:pr sort:updated-asc repo:#{repo}", auto_paginate: false).first
|
16
17
|
end
|
17
18
|
|
18
19
|
def submitter
|
@@ -100,7 +101,7 @@ module HubLink
|
|
100
101
|
end
|
101
102
|
|
102
103
|
def first_review
|
103
|
-
reviews.
|
104
|
+
reviews.find(&:submitted?)
|
104
105
|
end
|
105
106
|
|
106
107
|
def extended_data
|
data/lib/hub_link/api/review.rb
CHANGED
@@ -12,11 +12,21 @@ module HubLink
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def invalid?
|
15
|
-
bot?
|
15
|
+
bot?
|
16
|
+
end
|
17
|
+
|
18
|
+
def submitted?
|
19
|
+
!draft?
|
20
|
+
end
|
21
|
+
|
22
|
+
def submitted_at
|
23
|
+
if submitted?
|
24
|
+
super
|
25
|
+
end
|
16
26
|
end
|
17
27
|
|
18
28
|
def to_h
|
19
|
-
Slicer.new(self, columns: %i(id pull_request_id submitted_at reviewer approval?)).to_h
|
29
|
+
Slicer.new(self, columns: %i(id pull_request_id submitted_at reviewer approval? state)).to_h
|
20
30
|
end
|
21
31
|
|
22
32
|
private
|
@@ -25,10 +35,6 @@ module HubLink
|
|
25
35
|
BOTS.include?(reviewer)
|
26
36
|
end
|
27
37
|
|
28
|
-
def driveby?
|
29
|
-
state == "COMMENTED"
|
30
|
-
end
|
31
|
-
|
32
38
|
def draft?
|
33
39
|
state == "PENDING"
|
34
40
|
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# https://gist.github.com/nilbus/6385142
|
2
|
+
module HubLink
|
3
|
+
class Callbacks
|
4
|
+
def initialize(block)
|
5
|
+
block&.call(self)
|
6
|
+
end
|
7
|
+
|
8
|
+
def callback(message, *args)
|
9
|
+
callbacks[message]&.call(*args)
|
10
|
+
end
|
11
|
+
|
12
|
+
def method_missing(m, *args, &block)
|
13
|
+
block ? callbacks[m] = block : super
|
14
|
+
self
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def callbacks
|
20
|
+
@callbacks ||= {}
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require "hub_link"
|
2
|
+
require "hub_link/callbacks"
|
3
|
+
require "hub_link/insert"
|
4
|
+
|
5
|
+
module HubLink
|
6
|
+
class Importer
|
7
|
+
delegate :callback, to: :callbacks
|
8
|
+
|
9
|
+
def self.run(*args, &block)
|
10
|
+
new(*args, &block).run
|
11
|
+
end
|
12
|
+
|
13
|
+
def initialize(repo:, start_date:, resources:, &block)
|
14
|
+
@repo = repo.to_s
|
15
|
+
@start_date = start_date
|
16
|
+
@resources = resources
|
17
|
+
@callbacks = Callbacks.new(block)
|
18
|
+
end
|
19
|
+
|
20
|
+
def run
|
21
|
+
stream.in_batches do |batch|
|
22
|
+
callback(:init, batch.query)
|
23
|
+
|
24
|
+
resources.each do |source, target|
|
25
|
+
callback(:start, source)
|
26
|
+
import batch.fetch(source), to: target
|
27
|
+
callback(:finish, target.count)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
private
|
33
|
+
|
34
|
+
attr_reader :repo, :start_date, :resources, :callbacks
|
35
|
+
|
36
|
+
def import(records, to:)
|
37
|
+
records.each do |row|
|
38
|
+
Insert.new(row: row, target: to).run
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def stream
|
43
|
+
@_stream ||= Stream.new(repo, start_date: start_date)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module HubLink
|
2
|
+
class Insert
|
3
|
+
delegate :primary_key, to: :target
|
4
|
+
|
5
|
+
def initialize(row:, target:)
|
6
|
+
@row = row
|
7
|
+
@target = target
|
8
|
+
end
|
9
|
+
|
10
|
+
def run
|
11
|
+
record.update! importable_attributes
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def record
|
17
|
+
target.find_or_initialize_by(primary_key => primary_key_value)
|
18
|
+
end
|
19
|
+
|
20
|
+
def primary_key_value
|
21
|
+
row[primary_key]
|
22
|
+
end
|
23
|
+
|
24
|
+
def importable_attributes
|
25
|
+
row.slice(*target_columns)
|
26
|
+
end
|
27
|
+
|
28
|
+
def target_columns
|
29
|
+
target.columns.map(&:name).map(&:to_sym)
|
30
|
+
end
|
31
|
+
|
32
|
+
attr_reader :row, :target
|
33
|
+
end
|
34
|
+
end
|
data/lib/hub_link/slicer.rb
CHANGED
data/lib/hub_link/stream.rb
CHANGED
@@ -10,8 +10,9 @@ module HubLink
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def in_batches(&block)
|
13
|
-
|
14
|
-
|
13
|
+
start_date.step(end_date, batch_size) do |date|
|
14
|
+
range = "#{date}..#{date + (batch_size - 1)}"
|
15
|
+
yield Batch.new "type:pr updated:#{range} repo:#{repo}"
|
15
16
|
end
|
16
17
|
end
|
17
18
|
|
@@ -23,14 +24,8 @@ module HubLink
|
|
23
24
|
Api::PullRequest.oldest(repo: repo)&.updated_at
|
24
25
|
end
|
25
26
|
|
26
|
-
def queries
|
27
|
-
start_date.step(end_date, batch_size).map do |date|
|
28
|
-
"type:pr updated:#{date}..#{date + (batch_size - 1)} repo:#{repo}"
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
27
|
def end_date
|
33
|
-
Date.tomorrow
|
28
|
+
@_end_date ||= Date.tomorrow
|
34
29
|
end
|
35
30
|
end
|
36
31
|
end
|
data/lib/hub_link/version.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.12.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jens Balvig
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-05-
|
11
|
+
date: 2019-05-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -158,8 +158,11 @@ files:
|
|
158
158
|
- lib/hub_link/api/review.rb
|
159
159
|
- lib/hub_link/api/review_request.rb
|
160
160
|
- lib/hub_link/batch.rb
|
161
|
+
- lib/hub_link/callbacks.rb
|
161
162
|
- lib/hub_link/configuration.rb
|
162
163
|
- lib/hub_link/core_ext/float.rb
|
164
|
+
- lib/hub_link/importer.rb
|
165
|
+
- lib/hub_link/insert.rb
|
163
166
|
- lib/hub_link/slicer.rb
|
164
167
|
- lib/hub_link/stream.rb
|
165
168
|
- lib/hub_link/version.rb
|