kube_schema 1.2.4 → 1.3.1

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: 1e976c18b750dcd4d44e497ac2968f0cbc8c4e486fb17e16eb13a75e2763da82
4
- data.tar.gz: 871835b2346e8cdb3bc716d6fb9d3d33d904b688f6ae0bb1f51403f4f4161691
3
+ metadata.gz: c2fbfd3f44c5ebc57a3d43c6baac8be1b64c7feed0e8c9657c951cfd530013fa
4
+ data.tar.gz: b0057e0e43fe1160f6ad166dc28f204e4e9870c76457db5a980556ac883200c5
5
5
  SHA512:
6
- metadata.gz: f8180084aa73210782bd2767017b251c05641e0b0eab6f1799ada712dc7a6ca82d33e5312446f6fbdac66d33f8d3f98a6f641b111ad967cc57082b5d98366486
7
- data.tar.gz: f59b9ba8362aedd2448c70645ffe0778dc2428f8bf084ad038a29d802125beee6c6bc594e5ff53eab795786ea81c831f61e790a035eba39e9f687c3eb0b196a1
6
+ metadata.gz: 8314abd9a04c46ea3b1a2de5e5d27bbf05fb891b518881585b66d252f3a00a2cf38f33ad795a330d6477e5318edfa2ed5cdc0e6df63f06ec1f54a6a6e0629f69
7
+ data.tar.gz: facee27eab8f920216f537d14a1b403843cda17cb0ddf87980542e9693be2a219ea4ccb58d48665bda977554c7bc51b6d17fd7c1c82ad9283d3bfdc9c1def3ac
data/Gemfile.lock CHANGED
@@ -1,17 +1,15 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- kube_schema (1.2.3)
5
- black_hole_struct (~> 0.1)
6
- json_schemer (~> 2.5)
7
- rubyshell (~> 1.5)
4
+ kube_schema (1.3.1)
5
+ json_schemer (~> 2.5.0)
6
+ rubyshell (~> 1.5.0)
8
7
 
9
8
  GEM
10
9
  remote: https://rubygems.org/
11
10
  specs:
12
11
  ast (2.4.3)
13
12
  bigdecimal (4.1.2)
14
- black_hole_struct (0.1.3)
15
13
  diff-lcs (1.6.2)
16
14
  hana (1.3.7)
17
15
  json (2.19.3)
data/kube_schema.gemspec CHANGED
@@ -34,5 +34,4 @@ Gem::Specification.new do |spec|
34
34
 
35
35
  spec.add_dependency "rubyshell", "~> 1.5.0"
36
36
  spec.add_dependency "json_schemer", "~> 2.5.0"
37
- spec.add_dependency "black_hole_struct", "~> 0.1.0"
38
37
  end
@@ -0,0 +1,23 @@
1
+ # https://github.com/mickey/black-hole-struct/blob/master/lib/black_hole_struct.rb
2
+ class Hash
3
+ def method_missing(name, *args)
4
+ key = name.to_s
5
+
6
+ if key.end_with?("=")
7
+ self[key.chomp("=").to_sym] = args.first
8
+
9
+ elsif key?(name.to_sym)
10
+ self[name.to_sym]
11
+
12
+ elsif key.start_with?("to_")
13
+ super
14
+
15
+ else
16
+ self[name.to_sym] = {}
17
+ end
18
+ end
19
+
20
+ #def respond_to_missing(name, _priv = false)
21
+ # name.to_s.end_with?("=") || key?(name.to_sym)
22
+ #end
23
+ end
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "black_hole_struct"
4
-
5
3
  module Kube
6
4
  module Schema
7
5
  class Resource
@@ -9,13 +7,16 @@ module Kube
9
7
  def initialize(hash = {}, &block)
10
8
  deep_symbolize_keys(self.class.defaults.to_h).then do |defaults|
11
9
 
10
+ # You are NEVER allowed to change `apiVersion` or `kind`
11
+ # Therefore, they are ONLY ever set from the self.defaults
12
+ # property.
12
13
  deep_symbolize_keys(hash).then do |symbolized|
13
14
  config = defaults.merge({
14
- metadata: symbolized.delete(:metadata),
15
- spec: symbolized.delete(:spec),
15
+ metadata: symbolized.delete(:metadata) || {},
16
+ spec: symbolized.delete(:spec) || {},
16
17
  })
17
18
 
18
- @data = BlackHoleStruct.new(config)
19
+ @data = config
19
20
  end
20
21
  end
21
22
 
@@ -68,7 +69,7 @@ module Kube
68
69
  # they are facts derived from the GVK metadata.
69
70
  def to_h
70
71
  defaults = self.class.defaults
71
- data = @data.to_h
72
+ data = @data.reject { |_, v| v.is_a?(Hash) && v.empty? }
72
73
 
73
74
  if defaults
74
75
  symbolized = deep_symbolize_keys(defaults)
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Kube
4
4
  module Schema
5
- VERSION = "1.2.4"
5
+ VERSION = "1.3.1"
6
6
  end
7
7
  end
data/lib/kube/schema.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative '../kube/errors'
3
+ require_relative 'monkey_patches'
4
+ require_relative 'errors'
4
5
  require_relative 'schema/version'
5
6
  require_relative 'schema/resource'
6
7
  require_relative 'schema/instance'
@@ -44,7 +45,9 @@ module Kube
44
45
  )
45
46
  end
46
47
  else
47
- Instance.new(schema_version || DEFAULT_VERSION)[key]
48
+ version = schema_version || DEFAULT_VERSION
49
+ @instances[version] ||= Instance.new(version)
50
+ @instances[version][key]
48
51
  end
49
52
  end
50
53
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kube_schema
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.4
4
+ version: 1.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathan K
@@ -79,20 +79,6 @@ dependencies:
79
79
  - - "~>"
80
80
  - !ruby/object:Gem::Version
81
81
  version: 2.5.0
82
- - !ruby/object:Gem::Dependency
83
- name: black_hole_struct
84
- requirement: !ruby/object:Gem::Requirement
85
- requirements:
86
- - - "~>"
87
- - !ruby/object:Gem::Version
88
- version: 0.1.0
89
- type: :runtime
90
- prerelease: false
91
- version_requirements: !ruby/object:Gem::Requirement
92
- requirements:
93
- - - "~>"
94
- - !ruby/object:Gem::Version
95
- version: 0.1.0
96
82
  description: 'Abstractions are God. Let''s give praise and build on the shoulders
97
83
  of giants by using objects to represent schemas. It was written and to it became.
98
84
 
@@ -130,6 +116,7 @@ files:
130
116
  - flake.nix
131
117
  - kube_schema.gemspec
132
118
  - lib/kube/errors.rb
119
+ - lib/kube/monkey_patches.rb
133
120
  - lib/kube/schema.rb
134
121
  - lib/kube/schema/instance.rb
135
122
  - lib/kube/schema/manifest.rb