From d4f906075fedd5cf53a3a0ea3a52930819b5026e Mon Sep 17 00:00:00 2001 From: Phill Morton Date: Wed, 11 Oct 2023 01:49:14 +0100 Subject: [PATCH] add dependency map --- .../ConfigModel/ConfigService.cs | 2 ++ .../DockerCompose/DockerComposeParser.cs | 2 ++ .../Serialization/ConfigServiceParser.cs | 16 ++++++++++++++++ 3 files changed, 20 insertions(+) diff --git a/src/Microsoft.Tye.Core/ConfigModel/ConfigService.cs b/src/Microsoft.Tye.Core/ConfigModel/ConfigService.cs index a131f937..f559a49b 100644 --- a/src/Microsoft.Tye.Core/ConfigModel/ConfigService.cs +++ b/src/Microsoft.Tye.Core/ConfigModel/ConfigService.cs @@ -46,5 +46,7 @@ namespace Microsoft.Tye.ConfigModel public string? Version { get; set; } public string? Architecture { get; set; } public string? CloneDirectory { get; internal set; } + + public List DependsOn { get; set; } = new List(); } } diff --git a/src/Microsoft.Tye.Core/DockerCompose/DockerComposeParser.cs b/src/Microsoft.Tye.Core/DockerCompose/DockerComposeParser.cs index ecee90f5..4dd2722a 100644 --- a/src/Microsoft.Tye.Core/DockerCompose/DockerComposeParser.cs +++ b/src/Microsoft.Tye.Core/DockerCompose/DockerComposeParser.cs @@ -273,6 +273,8 @@ namespace Tye.DockerCompose break; case "tty": break; + case "dependsOn": + break; default: throw new TyeYamlException(child.Key.Start, CoreStrings.FormatUnrecognizedKey(key)); } diff --git a/src/Microsoft.Tye.Core/Serialization/ConfigServiceParser.cs b/src/Microsoft.Tye.Core/Serialization/ConfigServiceParser.cs index 0f617838..8cf6820d 100644 --- a/src/Microsoft.Tye.Core/Serialization/ConfigServiceParser.cs +++ b/src/Microsoft.Tye.Core/Serialization/ConfigServiceParser.cs @@ -164,6 +164,13 @@ namespace Tye.Serialization case "cloneDirectory": service.CloneDirectory = YamlParser.GetScalarValue(key, child.Value); break; + case "dependsOn": + if (child.Value.NodeType != YamlNodeType.Sequence) + { + throw new TyeYamlException(child.Value.Start, CoreStrings.FormatExpectedYamlSequence(key)); + } + HandleDependencies((child.Value as YamlSequenceNode)!, service.DependsOn); + break; default: throw new TyeYamlException(child.Key.Start, CoreStrings.FormatUnrecognizedKey(key)); } @@ -578,6 +585,15 @@ namespace Tye.Serialization tags.Add(tag); } } + + private static void HandleDependencies(YamlSequenceNode yamlSequenceNode, List dependencies) + { + foreach (var child in yamlSequenceNode!.Children) + { + var dependsOn = YamlParser.GetScalarValue(child); + dependencies.Add(dependsOn); + } + } private static void HandleServiceBindingRoutes(YamlSequenceNode yamlSequenceNode, List routes) {