Files
RolemasterDB/src/RolemasterDb.ImportTool/RepositoryPaths.cs

34 lines
1.1 KiB
C#

namespace RolemasterDb.ImportTool;
public sealed class RepositoryPaths
{
private RepositoryPaths(string rootPath)
{
RootPath = rootPath;
ManifestPath = Path.Combine(rootPath, "sources", "critical-import-manifest.json");
DefaultDatabasePath = Path.Combine(rootPath, "src", "RolemasterDb.App", "rolemaster.db");
ArtifactsRootPath = Path.Combine(rootPath, "src", "RolemasterDb.App", "import-artifacts", "critical");
}
public string RootPath { get; }
public string ManifestPath { get; }
public string DefaultDatabasePath { get; }
public string ArtifactsRootPath { get; }
public static RepositoryPaths Discover()
{
var probe = new DirectoryInfo(Directory.GetCurrentDirectory());
while (probe is not null)
{
if (File.Exists(Path.Combine(probe.FullName, "RolemasterDB.slnx")))
{
return new RepositoryPaths(probe.FullName);
}
probe = probe.Parent;
}
throw new InvalidOperationException("Could not discover the repository root from the current directory.");
}
}