diff --git a/src/gen-config.cr b/src/gen-config.cr index 455278e..97a6d90 100644 --- a/src/gen-config.cr +++ b/src/gen-config.cr @@ -26,6 +26,7 @@ module GenConfig Array(String) | Array(Variables) | Hash(String, String) | Hash(String, Variables) | Array(Hash(String, String?)) | + Hash(String, Array(Hash(String, String?))) | Hash(String, String?) | Crinja::Callable::Instance @@ -96,23 +97,20 @@ class GenConfig::Context options["service"] = service.to_genconfig - providers = Hash(String, Variables).new - service.providers.each do |token, provider| + options["providers"] = service.providers.compact_map do |token, provider| provider = Service.get_by_id provider next unless provider - providers[token] = provider.to_genconfig + provider.to_genconfig end - options["providers"] = providers - consumers = Hash(String, Variables).new - service.provides.each do |provider_data| - token = provider_data.token - - consumers[token] = service.get_consumers(token).map &.to_genconfig - end - options["consumers"] = consumers + options["consumers"] = service.provides + .map(&.token) + .map{ |token| + {token, service.get_consumers(token).map &.to_genconfig} + } + .to_h end end