Class: KubernetesTemplateRendering::VariableOverrideParser
- Inherits:
-
Object
- Object
- KubernetesTemplateRendering::VariableOverrideParser
- Defined in:
- lib/kubernetes_template_rendering/variable_override_parser.rb
Overview
Parses --variable-override / --variable-override-json values into (possibly nested) override fragments and deep-merges them, in command-line order, into one overrides hash.
Key forms:
* Legacy: KEY contains no "." -> top-level key, value kept as the raw string
(exactly the pre-0.7.0 behavior; never type-coerced).
* Dotted: KEY contains "." -> split on unescaped dots into a nested path ("\." is a
literal dot within a segment). The value is JSON-coerced when it parses as JSON
(2 -> Integer, true/false -> booleans, null -> nil, "2" -> String), else kept raw.
Defined Under Namespace
Classes: ParseError
Constant Summary collapse
- UNESCAPED_DOT =
/(?<!\\)\./.freeze
Class Method Summary collapse
-
.merge_json!(overrides, json) ⇒ Hash
Deep-merges a JSON object string into
overrides. -
.merge_override!(overrides, raw) ⇒ Hash
Deep-merges a KEY:VALUE override fragment into
overrides.
Class Method Details
.merge_json!(overrides, json) ⇒ Hash
Deep-merges a JSON object string into overrides.
40 41 42 43 44 45 46 47 48 49 |
# File 'lib/kubernetes_template_rendering/variable_override_parser.rb', line 40 def merge_json!(overrides, json) fragment = begin JSON.parse(json) rescue JSON::ParserError => ex raise ParseError, "--variable-override-json value is not valid JSON: #{ex.}" end fragment.is_a?(Hash) or raise ParseError, "--variable-override-json value must be a JSON object, got #{fragment.class}: #{json.inspect}" overrides.deep_merge!(fragment) end |
.merge_override!(overrides, raw) ⇒ Hash
Deep-merges a KEY:VALUE override fragment into overrides.
27 28 29 30 31 32 |
# File 'lib/kubernetes_template_rendering/variable_override_parser.rb', line 27 def merge_override!(overrides, raw) key, value = raw.split(":", 2) return overrides if key.nil? || value.nil? # preserve legacy silent-skip of colon-less args overrides.deep_merge!(fragment_for(key, value)) end |