From 9a74130efa0271cc59339f55090b5db60b40e723 Mon Sep 17 00:00:00 2001 From: Luka Vandervelden Date: Sun, 27 Oct 2019 23:02:45 +0100 Subject: [PATCH] wip, stuff --- services/nginx.spec | 4 ++-- src/gen-config.cr | 28 ++++++++++++++++++++++------ src/service/environment.cr | 1 - src/service/service.cr | 2 ++ 4 files changed, 26 insertions(+), 9 deletions(-) diff --git a/services/nginx.spec b/services/nginx.spec index 0938bde..2d6fbf5 100644 --- a/services/nginx.spec +++ b/services/nginx.spec @@ -1,7 +1,7 @@ command: nginx -c ${SERVICE_ROOT}/nginx.conf provides: www -#%directory ${SERVICE_ROOT}/ -# name: working directory +%directory ${SERVICE_ROOT}/ + name: working directory %configuration nginx.conf ${SERVICE_ROOT}/nginx.conf diff --git a/src/gen-config.cr b/src/gen-config.cr index 4acad10..5cc597c 100644 --- a/src/gen-config.cr +++ b/src/gen-config.cr @@ -8,10 +8,13 @@ def sanitize_path(path) end module GenConfig + # FIXME: The fuck has this become. alias Variables = String | Array(String) | Array(Variables) | Hash(String, String) | Hash(String, Variables) | + Array(Hash(String, String?)) | + Hash(String, String?) | Crinja::Callable::Instance def self.parse_options(unparsed : Array(String)) @@ -51,7 +54,6 @@ class GenConfig::Context Environment.load ENVIRONMENTS_DIRECTORY ServiceDefinition.load SERVICES_DIRECTORY Service.load RC_DIRECTORY - Environment.load ENVIRONMENTS_DIRECTORY target_file = File.open target, "w" @@ -94,10 +96,13 @@ class GenConfig::Context next unless provider - providers[token] = Hash(String, String).new.tap do |entry| + # FIXME: deduplicate + providers[token] = Hash(String, String?).new.tap do |entry| entry["name"] = provider.name entry["id"] = provider.full_id entry["environment"] = provider.environment.name + entry["root"] = provider.root + entry["domain"] = provider.domain end end options["providers"] = providers @@ -106,11 +111,22 @@ class GenConfig::Context service.provides.each do |provider_data| token = provider_data.token - consumers[token] = Service.all.select do |s2| - s2.providers.each do |t2, id| - token == t2 && id == service.id + # FIXME: definitely unreadable + consumers[token] = Service.all + .select( + &.providers.select do |t, provider| + t == token && service.is_id?(provider) + end + .size.>(0)) + .map do |consumer| + Hash(String, String?).new.tap do |entry| + entry["name"] = consumer.name + entry["id"] = consumer.id + entry["environment"] = consumer.environment.name + entry["root"] = consumer.root + entry["domain"] = consumer.domain + end end - end.map &.full_id end options["consumers"] = consumers end diff --git a/src/service/environment.cr b/src/service/environment.cr index 14d5071..2e1a53d 100644 --- a/src/service/environment.cr +++ b/src/service/environment.cr @@ -8,7 +8,6 @@ class Environment getter name : String getter type : Type = Type::Prefix - getter domain_name : String? getter pre_start_hooks = Array(ServiceDefinition::Hook).new # The place we’ll put services’ data and configuration. diff --git a/src/service/service.cr b/src/service/service.cr index ee605c0..7a4aa3a 100644 --- a/src/service/service.cr +++ b/src/service/service.cr @@ -54,6 +54,8 @@ class Service @reference = ServiceDefinition.get assignments["name"].as_s + @domain = assignments["domain"]?.try &.as_s + env = assignments["environment"]?.try &.as_s @environment = if env.nil? || env == "" Environment.root