using Microsoft.Extensions.Configuration.Ini; using Microsoft.Extensions.Configuration.Json; namespace SQLInsight.Agent; /// /// sqlinsight.ini, written by the MSI installer from the values given at install time (connection string, port …). /// It is read right after appsettings.json, so it overrides the examples there, while appsettings.{Environment}.json, /// environment variables and the command line still override it. /// public static class InstallerSettings { public const string FileName = "sqlinsight.ini"; public static void Add(IConfigurationBuilder configuration, string directory) { ArgumentNullException.ThrowIfNull(configuration); var source = new IniConfigurationSource { Path = Path.Combine(directory, FileName), Optional = true, ReloadOnChange = false }; source.ResolveFileProvider(); var appsettings = configuration.Sources .Select((s, i) => (Source: s, Index: i)) .LastOrDefault(x => x.Source is JsonConfigurationSource json && string.Equals(json.Path, "appsettings.json", StringComparison.OrdinalIgnoreCase)); if (appsettings.Source is null) { configuration.Add(source); } else { configuration.Sources.Insert(appsettings.Index + 1, source); } } }