diff options
| author | Paul Buetow <paul@buetow.org> | 2026-05-25 21:15:06 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-05-25 21:15:06 +0300 |
| commit | 90493d2a3d1395488f77bbedd246e09e22908c96 (patch) | |
| tree | c23208e40beaa4170b1b43e94148b05e8a90dcd7 /lib/hyperstack/config.rb | |
| parent | 2e3e01ccc851897b6e8552c15e118e82a9abb0f8 (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.rb | 60 |
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 |
