Files
meeting-assistant/MeetingAssistant/RuntimeContentLocator.cs
codex 250d3b7a1e
PR and Push Build/Test / build-and-test (push) Successful in 16m43s
Generalize settings and logs assistant
2026-05-30 12:57:51 +02:00

40 lines
1.2 KiB
C#

namespace MeetingAssistant;
internal static class RuntimeContentLocator
{
public static IEnumerable<string> CandidateDocumentationPaths(string fileName)
{
foreach (var directory in EnumerateBaseDirectoryAndParents())
{
yield return Path.Combine(directory, "docs", fileName);
}
}
public static IEnumerable<string> CandidateDirectoryPaths(params string[] segments)
{
foreach (var directory in EnumerateBaseDirectoryAndParents())
{
yield return Path.Combine([directory, .. segments]);
}
}
public static IEnumerable<string> 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<string> 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;
}
}
}