diff --git a/src/Elastic.Documentation.Configuration/ConfigurationFileProvider.cs b/src/Elastic.Documentation.Configuration/ConfigurationFileProvider.cs index 58c06111d..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."); @@ -216,7 +223,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); 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}");