kennel 1.116.2 → 1.117.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/file_cache.rb +7 -1
- data/lib/kennel/syncer.rb +30 -1
- data/lib/kennel/version.rb +1 -1
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 83531b8281e71f8a5f8e307320c81f2ecf4c320da617c27777b08325f1394ed1
|
4
|
+
data.tar.gz: 1d3bce11c52a35f07a48546d37147213a8ca407e7e30710a8efaedc59be8dcd5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fddea7652c95c90fb529520ab1422f8a8dca9d27f3fd05dd6d3abb0892e831c1fb91af4455b77eba748cd635f86537d19b473eacd2004721ce0717e342efc25d
|
7
|
+
data.tar.gz: 537d25042eb17f6a86a65edba83e57001f1da160eacad93478062aec665cdad2798040a946b21bab53818fec2bed6089d1f15b22ca5fddc15e85fc5f1aa0d036
|
data/lib/kennel/file_cache.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require "tempfile"
|
4
|
+
|
3
5
|
# cache that reads everything from a single file
|
4
6
|
# - avoids doing multiple disk reads while iterating all definitions
|
5
7
|
# - has a global expiry to not keep deleted resources forever
|
@@ -44,7 +46,11 @@ module Kennel
|
|
44
46
|
def persist
|
45
47
|
dir = File.dirname(@file)
|
46
48
|
FileUtils.mkdir_p(dir) unless File.directory?(dir)
|
47
|
-
|
49
|
+
|
50
|
+
Tempfile.create do |tmp|
|
51
|
+
Marshal.dump @data, tmp
|
52
|
+
File.rename tmp.path, @file
|
53
|
+
end
|
48
54
|
end
|
49
55
|
|
50
56
|
# keep the cache small to make loading it fast (5MB ~= 100ms)
|
data/lib/kennel/syncer.rb
CHANGED
@@ -1,4 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "diff/lcs"
|
4
|
+
|
2
5
|
module Kennel
|
3
6
|
class Syncer
|
4
7
|
DELETE_ORDER = ["dashboard", "slo", "monitor", "synthetics/tests"].freeze # dashboards references monitors + slos, slos reference monitors
|
@@ -196,16 +199,22 @@ module Kennel
|
|
196
199
|
|
197
200
|
def print_diff(diff)
|
198
201
|
diff.each do |type, field, old, new|
|
202
|
+
use_diff = false
|
199
203
|
if type == "+"
|
200
204
|
temp = Utils.pretty_inspect(new)
|
201
205
|
new = Utils.pretty_inspect(old)
|
202
206
|
old = temp
|
207
|
+
elsif old.is_a?(String) && new.is_a?(String) && (old.include?("\n") || new.include?("\n"))
|
208
|
+
use_diff = true
|
203
209
|
else # ~ and -
|
204
210
|
old = Utils.pretty_inspect(old)
|
205
211
|
new = Utils.pretty_inspect(new)
|
206
212
|
end
|
207
213
|
|
208
|
-
if
|
214
|
+
if use_diff
|
215
|
+
Kennel.out.puts " #{type}#{field}"
|
216
|
+
Kennel.out.puts(diff(old, new).map { |l| " #{l}" })
|
217
|
+
elsif (old + new).size > 100
|
209
218
|
Kennel.out.puts " #{type}#{field}"
|
210
219
|
Kennel.out.puts " #{old} ->"
|
211
220
|
Kennel.out.puts " #{new}"
|
@@ -215,6 +224,26 @@ module Kennel
|
|
215
224
|
end
|
216
225
|
end
|
217
226
|
|
227
|
+
# display diff for multi-line strings
|
228
|
+
# must stay readable when color is off too
|
229
|
+
def diff(old, new)
|
230
|
+
Diff::LCS.sdiff(old.split("\n", -1), new.split("\n", -1)).flat_map do |diff|
|
231
|
+
case diff.action
|
232
|
+
when "-"
|
233
|
+
Utils.color(:red, "- #{diff.old_element}")
|
234
|
+
when "+"
|
235
|
+
Utils.color(:green, "+ #{diff.new_element}")
|
236
|
+
when "!"
|
237
|
+
[
|
238
|
+
Utils.color(:red, "- #{diff.old_element}"),
|
239
|
+
Utils.color(:green, "+ #{diff.new_element}")
|
240
|
+
]
|
241
|
+
else
|
242
|
+
" #{diff.old_element}"
|
243
|
+
end
|
244
|
+
end
|
245
|
+
end
|
246
|
+
|
218
247
|
# We've already validated the desired objects ('generated') in isolation.
|
219
248
|
# Now that we have made the plan, we can perform some more validation.
|
220
249
|
def validate_plan
|
data/lib/kennel/version.rb
CHANGED
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kennel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.117.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: 2022-
|
11
|
+
date: 2022-09-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: diff-lcs
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.5'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.5'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: faraday
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|