kucodiff 0.2.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
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