From 67aadcb2fc2e65d9431f3bfa27123bf3815103d7 Mon Sep 17 00:00:00 2001 From: Martijn Laarman Date: Thu, 2 Oct 2025 16:40:26 +0200 Subject: [PATCH 1/2] LocalConfigurationDirectory should not use Paths.WorkingDirectoryRoot but Directory.GetCurrentDirectory() --- .../ConfigurationFileProvider.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Elastic.Documentation.Configuration/ConfigurationFileProvider.cs b/src/Elastic.Documentation.Configuration/ConfigurationFileProvider.cs index 58c06111d..dbb4430ca 100644 --- a/src/Elastic.Documentation.Configuration/ConfigurationFileProvider.cs +++ b/src/Elastic.Documentation.Configuration/ConfigurationFileProvider.cs @@ -216,7 +216,7 @@ private StreamReader GetEmbeddedStream(string fileName) } public static string AppDataConfigurationDirectory { get; } = Path.Combine(Paths.ApplicationData.FullName, "config-clone", "config"); - public static string LocalConfigurationDirectory { get; } = Path.Combine(Paths.WorkingDirectoryRoot.FullName, "config"); + public static string LocalConfigurationDirectory { get; } = Path.Combine(Directory.GetCurrentDirectory(), "config"); private static string GetLocalPath(string file) => Path.Combine(LocalConfigurationDirectory, file); private static string GetAppDataPath(string file) => Path.Combine(AppDataConfigurationDirectory, file); From baaf66fb6cc94194e40a97571a184bf83abb995b Mon Sep 17 00:00:00 2001 From: Martijn Laarman Date: Thu, 2 Oct 2025 16:59:42 +0200 Subject: [PATCH 2/2] save local should path as is, restored defaulting to local (with spot checks looking for config files) --- .../ConfigurationFileProvider.cs | 17 ++++++++++++----- .../Configuration/ConfigurationCloneService.cs | 2 +- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/Elastic.Documentation.Configuration/ConfigurationFileProvider.cs b/src/Elastic.Documentation.Configuration/ConfigurationFileProvider.cs index dbb4430ca..7b6f5c03b 100644 --- a/src/Elastic.Documentation.Configuration/ConfigurationFileProvider.cs +++ b/src/Elastic.Documentation.Configuration/ConfigurationFileProvider.cs @@ -45,11 +45,18 @@ public ConfigurationFileProvider( // fileSystem.Directory.Exists(LocalConfigurationDirectory) // ? ConfigurationSource.Local : ConfigurationSource.Embedded // ); - - - // Using Embedded as default for now - ConfigurationSource = configurationSource ?? ConfigurationSource.Embedded; - + if (configurationSource is { } source) + ConfigurationSource = source; + else + { + string[] spotChecks = ["navigation.yml", "versions.yml", "products.yml", "assembler.yml"]; + var defaultSource = + fileSystem.Directory.Exists(LocalConfigurationDirectory) + && spotChecks.All(f => fileSystem.File.Exists(Path.Combine(LocalConfigurationDirectory, f))) + ? ConfigurationSource.Local + : ConfigurationSource.Embedded; + ConfigurationSource = defaultSource; + } if (ConfigurationSource == ConfigurationSource.Local && !fileSystem.Directory.Exists(LocalConfigurationDirectory)) throw new Exception($"Required directory form {nameof(ConfigurationSource)}.{nameof(ConfigurationSource.Local)} directory {LocalConfigurationDirectory} does not exist."); diff --git a/src/services/Elastic.Documentation.Assembler/Configuration/ConfigurationCloneService.cs b/src/services/Elastic.Documentation.Assembler/Configuration/ConfigurationCloneService.cs index 956dfdef2..bbcbcd39d 100644 --- a/src/services/Elastic.Documentation.Assembler/Configuration/ConfigurationCloneService.cs +++ b/src/services/Elastic.Documentation.Assembler/Configuration/ConfigurationCloneService.cs @@ -29,7 +29,7 @@ Cancel ctx { var checkoutFolder = fs.DirectoryInfo.New(ConfigurationFileProvider.AppDataConfigurationDirectory).Parent; if (saveLocal) - checkoutFolder = fs.DirectoryInfo.New(ConfigurationFileProvider.LocalConfigurationDirectory).Parent; + checkoutFolder = fs.DirectoryInfo.New(ConfigurationFileProvider.LocalConfigurationDirectory); if (checkoutFolder is null) { collector.EmitGlobalError($"Unable to find checkout folder {checkoutFolder}");