From 90493d2a3d1395488f77bbedd246e09e22908c96 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Mon, 25 May 2026 21:15:06 +0300 Subject: 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. --- lib/hyperstack/config.rb | 60 +++++++++++++++++++----------------------------- 1 file changed, 24 insertions(+), 36 deletions(-) (limited to 'lib/hyperstack/config.rb') 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 -- cgit v1.2.3