summaryrefslogtreecommitdiff
path: root/lib/hyperstack/config.rb
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-05-25 21:15:06 +0300
committerPaul Buetow <paul@buetow.org>2026-05-25 21:15:06 +0300
commit90493d2a3d1395488f77bbedd246e09e22908c96 (patch)
treec23208e40beaa4170b1b43e94148b05e8a90dcd7 /lib/hyperstack/config.rb
parent2e3e01ccc851897b6e8552c15e118e82a9abb0f8 (diff)
refactor(config): extract shared ConfigDataHelpers module
Both ConfigLoader and Config duplicated fetch/dig/blank?/truthy? helpers. Extract them into HyperstackVM::ConfigDataHelpers and include it in both classes. No behaviour change; DRY surface reduced.
Diffstat (limited to 'lib/hyperstack/config.rb')
-rw-r--r--lib/hyperstack/config.rb60
1 files changed, 24 insertions, 36 deletions
diff --git a/lib/hyperstack/config.rb b/lib/hyperstack/config.rb
index e41d1dd..76e38d7 100644
--- a/lib/hyperstack/config.rb
+++ b/lib/hyperstack/config.rb
@@ -6,7 +6,30 @@ require 'json'
require 'toml-rb'
module HyperstackVM
+ module ConfigDataHelpers
+ private
+
+ def fetch(section, key)
+ dig(section, key)
+ end
+
+ def dig(*keys)
+ keys.reduce(@data) do |memo, key|
+ memo.is_a?(Hash) ? memo[key] : nil
+ end
+ end
+
+ def blank?(value)
+ value.nil? || value.to_s.strip.empty?
+ end
+
+ def truthy?(value)
+ value == true
+ end
+ end
+
class ConfigLoader
+ include ConfigDataHelpers
attr_reader :path
def self.load(path)
@@ -149,24 +172,6 @@ module HyperstackVM
end
end
- def fetch(section, key)
- dig(section, key)
- end
-
- def dig(*keys)
- keys.reduce(@data) do |memo, key|
- memo.is_a?(Hash) ? memo[key] : nil
- end
- end
-
- def blank?(value)
- value.nil? || value.to_s.strip.empty?
- end
-
- def truthy?(value)
- value == true
- end
-
def normalized_cidrs(values)
Array(values).map { |value| value.to_s.strip }.reject(&:empty?)
end
@@ -187,6 +192,7 @@ module HyperstackVM
end
class Config
+ include ConfigDataHelpers
attr_reader :path
def initialize(data, path = nil)
@@ -522,24 +528,6 @@ module HyperstackVM
private
- def fetch(section, key)
- dig(section, key)
- end
-
- def dig(*keys)
- keys.reduce(@data) do |memo, key|
- memo.is_a?(Hash) ? memo[key] : nil
- end
- end
-
- def blank?(value)
- value.nil? || value.to_s.strip.empty?
- end
-
- def truthy?(value)
- value == true
- end
-
def resolved_allowed_cidrs(key)
values = Array(fetch('network', key)).map { |value| value.to_s.strip }.reject(&:empty?)
values.flat_map { |value| value == 'auto' ? [detected_operator_cidr] : [value] }.uniq