kennel 2.7.0 → 2.8.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/lib/kennel/api.rb +1 -0
- data/lib/kennel/models/project.rb +6 -1
- data/lib/kennel/syncer.rb +5 -5
- data/lib/kennel/tasks.rb +1 -1
- data/lib/kennel/utils.rb +3 -2
- data/lib/kennel/version.rb +1 -1
- data/lib/kennel.rb +5 -3
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: bebf47eb6fde98d7122a199324dca2c205b94a65e844193d7917f2e384fbc029
|
|
4
|
+
data.tar.gz: c3631e51b4d7ef363b7fd177e42d688e00f7ea9816b9161b27dd2f48753fff93
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 7029a570da24413841e71dc380a7f07d476c9cff3b83aee05a032478ed1707771b96f071949e2284003ef51777f955174c9d241a0e11c2d6fbd6aadc1d4ccece
|
|
7
|
+
data.tar.gz: b5df9cfcd85ff76b762c9c8a96e630f1b3cf509eb8509e71a42fb2d5c8b24efd6588a88033abe38c2d1ff5b37f8087d2e0074be171f3e78066c1796df53f72b4
|
data/lib/kennel/api.rb
CHANGED
|
@@ -18,7 +18,7 @@ module Kennel
|
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
def validated_parts
|
|
21
|
-
all = parts
|
|
21
|
+
all = filter_parts(parts)
|
|
22
22
|
unless all.is_a?(Array) && all.all? { |part| part.is_a?(Record) }
|
|
23
23
|
raise "Project #{kennel_id} #parts must return an array of Records"
|
|
24
24
|
end
|
|
@@ -29,6 +29,11 @@ module Kennel
|
|
|
29
29
|
|
|
30
30
|
private
|
|
31
31
|
|
|
32
|
+
# hook for users to add custom filtering via `prepend`
|
|
33
|
+
def filter_parts(parts)
|
|
34
|
+
parts
|
|
35
|
+
end
|
|
36
|
+
|
|
32
37
|
# hook for users to add custom validations via `prepend`
|
|
33
38
|
def validate_parts(parts)
|
|
34
39
|
end
|
data/lib/kennel/syncer.rb
CHANGED
|
@@ -13,7 +13,7 @@ module Kennel
|
|
|
13
13
|
|
|
14
14
|
attr_reader :plan
|
|
15
15
|
|
|
16
|
-
def initialize(api, expected
|
|
16
|
+
def initialize(api, expected:, actual:, filter:, strict_imports: true)
|
|
17
17
|
@api = api
|
|
18
18
|
@strict_imports = strict_imports
|
|
19
19
|
@filter = filter
|
|
@@ -155,10 +155,10 @@ module Kennel
|
|
|
155
155
|
raise # uncovered: should never happen ...
|
|
156
156
|
end
|
|
157
157
|
|
|
158
|
-
# fill details of things we need to compare
|
|
159
|
-
def fill_details!(
|
|
160
|
-
|
|
161
|
-
@api.fill_details! "dashboard",
|
|
158
|
+
# fill details of things we need to compare, so diff works even though we cannot mass-fetch definitions
|
|
159
|
+
def fill_details!(matching)
|
|
160
|
+
dashboards = matching.filter_map { |e, a| a if e && e.class.api_resource == "dashboard" }
|
|
161
|
+
@api.fill_details! "dashboard", dashboards
|
|
162
162
|
end
|
|
163
163
|
|
|
164
164
|
def validate_expected_id_not_missing(expected)
|
data/lib/kennel/tasks.rb
CHANGED
data/lib/kennel/utils.rb
CHANGED
|
@@ -24,13 +24,14 @@ module Kennel
|
|
|
24
24
|
workers = Array.new(threads).map do
|
|
25
25
|
Thread.new do
|
|
26
26
|
loop do
|
|
27
|
-
item, i = work.
|
|
27
|
+
item, i = work.shift
|
|
28
28
|
break unless i
|
|
29
29
|
done[i] =
|
|
30
30
|
begin
|
|
31
31
|
yield item
|
|
32
32
|
rescue Exception => e # rubocop:disable Lint/RescueException
|
|
33
|
-
work.clear
|
|
33
|
+
work.clear # prevent new work
|
|
34
|
+
(workers - [Thread.current]).each(&:kill) # stop ongoing work
|
|
34
35
|
e
|
|
35
36
|
end
|
|
36
37
|
end
|
data/lib/kennel/version.rb
CHANGED
data/lib/kennel.rb
CHANGED
|
@@ -56,7 +56,7 @@ module Kennel
|
|
|
56
56
|
self.err = $stderr
|
|
57
57
|
|
|
58
58
|
class Engine
|
|
59
|
-
attr_accessor :strict_imports
|
|
59
|
+
attr_accessor :strict_imports # TODO: rename to :enforce_expected_ids_exist
|
|
60
60
|
|
|
61
61
|
def initialize
|
|
62
62
|
@strict_imports = true
|
|
@@ -93,7 +93,9 @@ module Kennel
|
|
|
93
93
|
@syncer ||= begin
|
|
94
94
|
preload
|
|
95
95
|
Syncer.new(
|
|
96
|
-
api,
|
|
96
|
+
api,
|
|
97
|
+
expected: generated,
|
|
98
|
+
actual: definitions,
|
|
97
99
|
filter: filter,
|
|
98
100
|
strict_imports: strict_imports
|
|
99
101
|
)
|
|
@@ -129,7 +131,7 @@ module Kennel
|
|
|
129
131
|
end
|
|
130
132
|
end
|
|
131
133
|
|
|
132
|
-
# performance: this takes ~100ms on large codebases, tried rewriting with Set or Hash but it was slower
|
|
134
|
+
# performance: this takes ~100ms on large codebases, tried rewriting with Set or Hash, but it was slower
|
|
133
135
|
def validate_unique_tracking_ids(parts)
|
|
134
136
|
bad = parts.group_by(&:tracking_id).select { |_, same| same.size > 1 }
|
|
135
137
|
return if bad.empty?
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: kennel
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.8.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Michael Grosser
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2025-11-
|
|
11
|
+
date: 2025-11-15 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: diff-lcs
|