kucodiff 0.2.0 → 0.4.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
- SHA1:
3
- metadata.gz: 59e1b9b9b4ac8a580ad3f6d8cc5d67b81fdd18de
4
- data.tar.gz: 98be6f305b643cd96c419bf2287dc18f67a97e48
2
+ SHA256:
3
+ metadata.gz: e0c86b43c39bc7d8aa5fcb41035d254e8ce47e89969d97b4b1d0e5829ffeb139
4
+ data.tar.gz: b2da356c812dd537b04dfb5c327165ce895d182f1dc5a180cb1c335df93640d7
5
5
  SHA512:
6
- metadata.gz: 34ada378819ea565b3a14ff9a3229072e45bd18a7c26d860b1cb274dc8ce5414a11e1623167dbd794ce0e44a67fab82479473b6027d682802b7d129d5f77038e
7
- data.tar.gz: 233c20efb8dc84254cd1b049d1dfb9764dca5cec5d55c9694de42d252382586481a866dd46d92d922b42140b1dfdeff0f1d29b9affd26d5e1a6a57eea641df06
6
+ metadata.gz: 5ab4d4c2642f15fdf86798402f60115afd74787a81b49e6ce664f39e8d36873af440316c0c297d2543721ec43b11a4d22301810948786b5e4a6fc4b545b1f4e2
7
+ data.tar.gz: fdd69911a3a957c611a947044cf8f16293eac9fcc707c4d712409dd019fef6c979bb9f2ddec1f5098da167beab165d63dbd460a16b06c36e303e5ce2e74d2731
@@ -1,3 +1,3 @@
1
1
  module Kucodiff
2
- VERSION = "0.2.0"
2
+ VERSION = "0.4.0"
3
3
  end
data/lib/kucodiff.rb CHANGED
@@ -31,26 +31,39 @@ module Kucodiff
31
31
  private
32
32
 
33
33
  def read(file)
34
- content = if file.end_with?('.yml', '.yaml')
35
- YAML.load_stream(File.read(file)) # TODO: test need for stream
36
- else raise ArgumentError, "unknown file format in #{file}"
37
- end.first
34
+ content =
35
+ if file.end_with?('.yml', '.yaml')
36
+ if RUBY_VERSION >= "2.6.0"
37
+ YAML.load_stream(File.read(file), filename: file) # uncovered
38
+ else
39
+ YAML.load_stream(File.read(file), file) # uncovered
40
+ end
41
+ else
42
+ raise ArgumentError, "unknown file format in #{file}"
43
+ end.first
38
44
 
39
- hashify_container_env!(content)
45
+ template = template(content)
46
+ template.dig("spec", "containers")&.each do |container|
47
+ hashify_named_array!(container, "env", first: true)
48
+ hashify_named_array!(container, "volumeMounts", first: false)
49
+ end
50
+ hashify_named_array!(template["spec"], "volumes", first: false)
40
51
  hashify_required_env!(content)
41
52
 
42
53
  flat_hash(content)
43
54
  end
44
55
 
45
- # make env comparable
46
- def hashify_container_env!(content)
47
- containers = template(content).fetch('spec', {}).fetch('containers', [])
48
- containers.each do |container|
49
- next unless container['env']
50
- container['env'] = container['env'].each_with_object({}) do |v, h|
51
- value_key = (v.keys - ['name']).first
52
- h[v.fetch('name')] = v.fetch(value_key)
53
- end
56
+ def hashify_named_array!(object, key, first:)
57
+ return if !object || !(array = object[key])
58
+ object[key] = array.to_h do |v|
59
+ keep = (v.keys - ['name'])
60
+ value =
61
+ if first
62
+ v.fetch(keep.first)
63
+ else
64
+ v.slice(*keep)
65
+ end
66
+ [v.fetch('name'), value]
54
67
  end
55
68
  end
56
69
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kucodiff
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.4.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: 2017-04-01 00:00:00.000000000 Z
11
+ date: 2022-04-01 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email: michael@grosser.it
@@ -31,15 +31,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
31
31
  requirements:
32
32
  - - ">="
33
33
  - !ruby/object:Gem::Version
34
- version: 2.1.0
34
+ version: 2.6.0
35
35
  required_rubygems_version: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - ">="
38
38
  - !ruby/object:Gem::Version
39
39
  version: '0'
40
40
  requirements: []
41
- rubyforge_project:
42
- rubygems_version: 2.5.1
41
+ rubygems_version: 3.1.6
43
42
  signing_key:
44
43
  specification_version: 4
45
44
  summary: Smart diff for kubernetes configs to ensure symmetric configuration