mirror of
https://github.com/nsnail/Ocelot.git
synced 2025-04-22 06:22:50 +08:00
Added overload of the IConfigurationBuilder.AddOcelot extension-method that accepts a specific folder (#476)
This commit is contained in:
parent
5c940acf0e
commit
12ef3bc00f
@ -29,12 +29,17 @@ namespace Ocelot.DependencyInjection
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static IConfigurationBuilder AddOcelot(this IConfigurationBuilder builder)
|
public static IConfigurationBuilder AddOcelot(this IConfigurationBuilder builder)
|
||||||
|
{
|
||||||
|
return builder.AddOcelot(".");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static IConfigurationBuilder AddOcelot(this IConfigurationBuilder builder, string folder)
|
||||||
{
|
{
|
||||||
const string pattern = "(?i)ocelot\\.([a-zA-Z0-9]*)(\\.json)$";
|
const string pattern = "(?i)ocelot\\.([a-zA-Z0-9]*)(\\.json)$";
|
||||||
|
|
||||||
var reg = new Regex(pattern);
|
var reg = new Regex(pattern);
|
||||||
|
|
||||||
var files = Directory.GetFiles(".")
|
var files = Directory.GetFiles(folder)
|
||||||
.Where(path => reg.IsMatch(path))
|
.Where(path => reg.IsMatch(path))
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
@ -43,7 +48,7 @@ namespace Ocelot.DependencyInjection
|
|||||||
foreach (var file in files)
|
foreach (var file in files)
|
||||||
{
|
{
|
||||||
// windows and unix sigh...
|
// windows and unix sigh...
|
||||||
if(files.Count > 1 && (file == "./ocelot.json" || file == ".\\ocelot.json"))
|
if(files.Count > 1 && (Path.GetFileName(file) == "ocelot.json"))
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -53,7 +58,7 @@ namespace Ocelot.DependencyInjection
|
|||||||
var config = JsonConvert.DeserializeObject<FileConfiguration>(lines);
|
var config = JsonConvert.DeserializeObject<FileConfiguration>(lines);
|
||||||
|
|
||||||
// windows and unix sigh...
|
// windows and unix sigh...
|
||||||
if (file == "./ocelot.global.json" || file == ".\\ocelot.global.json")
|
if (Path.GetFileName(file) == "ocelot.global.json")
|
||||||
{
|
{
|
||||||
fileConfiguration.GlobalConfiguration = config.GlobalConfiguration;
|
fileConfiguration.GlobalConfiguration = config.GlobalConfiguration;
|
||||||
}
|
}
|
||||||
|
@ -32,14 +32,29 @@
|
|||||||
[Fact]
|
[Fact]
|
||||||
public void should_merge_files()
|
public void should_merge_files()
|
||||||
{
|
{
|
||||||
this.Given(_ => GivenMultipleConfigurationFiles())
|
this.Given(_ => GivenMultipleConfigurationFiles(""))
|
||||||
.When(_ => WhenIAddOcelotConfiguration())
|
.When(_ => WhenIAddOcelotConfiguration())
|
||||||
.Then(_ => ThenTheConfigsAreMerged())
|
.Then(_ => ThenTheConfigsAreMerged())
|
||||||
.BDDfy();
|
.BDDfy();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void GivenMultipleConfigurationFiles()
|
[Fact]
|
||||||
|
public void should_merge_files_in_specific_folder()
|
||||||
{
|
{
|
||||||
|
string configFolder = "ConfigFiles";
|
||||||
|
this.Given(_ => GivenMultipleConfigurationFiles(configFolder))
|
||||||
|
.When(_ => WhenIAddOcelotConfigurationWithSpecificFolder(configFolder))
|
||||||
|
.Then(_ => ThenTheConfigsAreMerged())
|
||||||
|
.BDDfy();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void GivenMultipleConfigurationFiles(string folder)
|
||||||
|
{
|
||||||
|
if (!string.IsNullOrEmpty(folder))
|
||||||
|
{
|
||||||
|
Directory.CreateDirectory(folder);
|
||||||
|
}
|
||||||
|
|
||||||
_globalConfig = new FileConfiguration
|
_globalConfig = new FileConfiguration
|
||||||
{
|
{
|
||||||
GlobalConfiguration = new FileGlobalConfiguration
|
GlobalConfiguration = new FileGlobalConfiguration
|
||||||
@ -159,10 +174,15 @@
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
File.WriteAllText("ocelot.global.json", JsonConvert.SerializeObject(_globalConfig));
|
string globalFilename = Path.Combine(folder, "ocelot.global.json");
|
||||||
File.WriteAllText("ocelot.reRoutesA.json", JsonConvert.SerializeObject(_reRouteA));
|
string reroutesAFilename = Path.Combine(folder, "ocelot.reRoutesA.json");
|
||||||
File.WriteAllText("ocelot.reRoutesB.json", JsonConvert.SerializeObject(_reRouteB));
|
string reroutesBFilename = Path.Combine(folder, "ocelot.reRoutesB.json");
|
||||||
File.WriteAllText("ocelot.aggregates.json", JsonConvert.SerializeObject(_aggregate));
|
string aggregatesFilename = Path.Combine(folder, "ocelot.aggregates.json");
|
||||||
|
|
||||||
|
File.WriteAllText(globalFilename, JsonConvert.SerializeObject(_globalConfig));
|
||||||
|
File.WriteAllText(reroutesAFilename, JsonConvert.SerializeObject(_reRouteA));
|
||||||
|
File.WriteAllText(reroutesBFilename, JsonConvert.SerializeObject(_reRouteB));
|
||||||
|
File.WriteAllText(aggregatesFilename, JsonConvert.SerializeObject(_aggregate));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void WhenIAddOcelotConfiguration()
|
private void WhenIAddOcelotConfiguration()
|
||||||
@ -172,6 +192,13 @@
|
|||||||
_configRoot = builder.Build();
|
_configRoot = builder.Build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void WhenIAddOcelotConfigurationWithSpecificFolder(string folder)
|
||||||
|
{
|
||||||
|
IConfigurationBuilder builder = new ConfigurationBuilder();
|
||||||
|
builder.AddOcelot(folder);
|
||||||
|
_configRoot = builder.Build();
|
||||||
|
}
|
||||||
|
|
||||||
private void ThenTheConfigsAreMerged()
|
private void ThenTheConfigsAreMerged()
|
||||||
{
|
{
|
||||||
var fc = (FileConfiguration)_configRoot.Get(typeof(FileConfiguration));
|
var fc = (FileConfiguration)_configRoot.Get(typeof(FileConfiguration));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user