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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 67342a80e2cd8dd1f0f2ad613cca326405bff85975ceb4253bc6180c856b03cc
4
- data.tar.gz: 587fb9a0ca21bf084e71c496c411708cc132aa80f2f7ec3c34f56b5a3b1888b4
3
+ metadata.gz: 83531b8281e71f8a5f8e307320c81f2ecf4c320da617c27777b08325f1394ed1
4
+ data.tar.gz: 1d3bce11c52a35f07a48546d37147213a8ca407e7e30710a8efaedc59be8dcd5
5
5
  SHA512:
6
- metadata.gz: 89fb1183eb9ee4db1f0a138c342a79b9f6f5b1aab962090e8f5e83d0e1c7fcbd38486106cbfd506e7da33a747a0391b3a0944c214efeffbe3a5f1854cc0d0fc4
7
- data.tar.gz: 4b5de65ad6957b45309e8e1158c0a23ac7fb95242a264d2f292f74d156481a23af5737d13236f7761664954c1f77471d6327a2febf30d5489361b0a4988545f2
6
+ metadata.gz: fddea7652c95c90fb529520ab1422f8a8dca9d27f3fd05dd6d3abb0892e831c1fb91af4455b77eba748cd635f86537d19b473eacd2004721ce0717e342efc25d
7
+ data.tar.gz: 537d25042eb17f6a86a65edba83e57001f1da160eacad93478062aec665cdad2798040a946b21bab53818fec2bed6089d1f15b22ca5fddc15e85fc5f1aa0d036
@@ -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
- File.write(@file, Marshal.dump(@data))
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 (old + new).size > 100
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
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module Kennel
3
- VERSION = "1.116.2"
3
+ VERSION = "1.117.0"
4
4
  end
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.116.2
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-08-31 00:00:00.000000000 Z
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