diff --git a/src/service/service.cr b/src/service/service.cr index 4acf186..7ec544a 100644 --- a/src/service/service.cr +++ b/src/service/service.cr @@ -373,6 +373,31 @@ class Service now = Time.local end end + + provides.each do |token_definition| + reverse_dependencies = get_consumers(token_definition.token) + .map(&.id) + .compact_map do |id| + context.get_service_by_id id + end + + reverse_dependencies.each do |service| + next unless service.non_runnable + + should_start = service + .dependency_tree.flatten + .select(&.!=(self)) + .map(&.status(context)) + .map do |status| + status.running? || status.non_runnable? + end + .reduce do |a, b| a && b end + + if should_start + service.start context + end + end + end end # TODO: