namespace MeetingAssistant; internal static class RuntimeContentLocator { public static IEnumerable CandidateDocumentationPaths(string fileName) { foreach (var directory in EnumerateBaseDirectoryAndParents()) { yield return Path.Combine(directory, "docs", fileName); } } public static IEnumerable CandidateDirectoryPaths(params string[] segments) { foreach (var directory in EnumerateBaseDirectoryAndParents()) { yield return Path.Combine([directory, .. segments]); } } public static IEnumerable CandidateContentPaths(string fileName) { foreach (var directory in EnumerateBaseDirectoryAndParents()) { yield return Path.Combine(directory, "MeetingAssistant", "Content", fileName); yield return Path.Combine(directory, "Content", fileName); } } private static IEnumerable EnumerateBaseDirectoryAndParents(int maxParentDepth = 8) { var current = new DirectoryInfo(AppContext.BaseDirectory); for (var i = 0; i < maxParentDepth && current is not null; i++) { yield return current.FullName; current = current.Parent; } } }