private static SettingsDetails TraversePathToFindCollocatedSettings(DirectoryInfo directory,
string settingsFileName,
string collocatedFile)
{
if (directory == null) return new SettingsDetails();
var solutionFile = directory.GetFiles().TryFirst(f => f.Name.EndsWith(collocatedFile));
if (solutionFile.HasValue)
{
return directory.GetFiles()
.TryFirst(f => f.Name.EndsWith(settingsFileName))
.Match<SettingsDetails>()
.Some().Do(f => LoadSettingsFromFile(f.FullName))
.Else(new SettingsDetails())
.Result();
}
return TraversePathToFindCollocatedSettings(directory.Parent, settingsFileName, collocatedFile);
}