Arnolyzer.Analyzers.Settings.SettingsHandler.TraversePathToFindCollocatedSettings C# (CSharp) Method

TraversePathToFindCollocatedSettings() private static method

private static TraversePathToFindCollocatedSettings ( DirectoryInfo directory, string settingsFileName, string collocatedFile ) : SettingsDetails
directory System.IO.DirectoryInfo
settingsFileName string
collocatedFile string
return SettingsDetails
        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);
        }