From f1b145fbeec7cd9935ab7654c6801e92f0552a74 Mon Sep 17 00:00:00 2001 From: Justin Kotalik Date: Tue, 13 Oct 2020 14:46:48 -0700 Subject: [PATCH] Fix dapr paths (#701) * Fix Dapr paths * oops --- .../Dapr/DaprExtension.cs | 29 ++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/src/Microsoft.Tye.Extensions/Dapr/DaprExtension.cs b/src/Microsoft.Tye.Extensions/Dapr/DaprExtension.cs index 8188149c..64f891aa 100644 --- a/src/Microsoft.Tye.Extensions/Dapr/DaprExtension.cs +++ b/src/Microsoft.Tye.Extensions/Dapr/DaprExtension.cs @@ -6,6 +6,7 @@ using System; using System.Globalization; using System.IO; using System.Linq; +using System.Runtime.InteropServices; using System.Threading.Tasks; namespace Microsoft.Tye.Extensions.Dapr @@ -42,7 +43,9 @@ namespace Microsoft.Tye.Extensions.Dapr throw new CommandException("Dapr support does not support multiple replicas yet for development."); } - var proxy = new ExecutableServiceBuilder($"{project.Name}-dapr", "daprd") + var daprExecutablePath = GetDaprExecutablePath(); + + var proxy = new ExecutableServiceBuilder($"{project.Name}-dapr", daprExecutablePath) { WorkingDirectory = context.Application.Source.DirectoryName, @@ -204,5 +207,29 @@ namespace Microsoft.Tye.Extensions.Dapr return Task.CompletedTask; } + + private string GetDaprExecutablePath() + { + // Starting with dapr version 11, dapr is installed in user profile/home. + if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) + { + var windowsPath = Environment.ExpandEnvironmentVariables("%USERPROFILE%/.dapr/bin/daprd.exe"); + if (File.Exists(windowsPath)) + { + return windowsPath; + } + } + else + { + var nixpath = Environment.ExpandEnvironmentVariables("$HOME/.dapr/bin/daprd"); + if (File.Exists(nixpath)) + { + return nixpath; + } + } + + // Older version of dapr don't have dapr in the bin directory, but it is usually on the path. + return "daprd"; + } } }