wabbajack/Wabbajack.Paths.IO/KnownFolders.cs

54 lines
1.9 KiB
C#
Raw Normal View History

2021-09-27 12:42:46 +00:00
using System;
2022-05-23 19:54:46 +00:00
using System.Diagnostics;
2021-10-08 13:16:51 +00:00
using System.IO;
using System.Linq;
2021-09-27 12:42:46 +00:00
using System.Reflection;
2021-10-23 16:51:17 +00:00
namespace Wabbajack.Paths.IO;
public static class KnownFolders
2021-09-27 12:42:46 +00:00
{
2022-05-23 19:54:46 +00:00
public static AbsolutePath EntryPoint
{
get
{
var result = Process.GetCurrentProcess().MainModule?.FileName?.ToAbsolutePath() ?? default;
if (result != default &&
result.PathParts.Any(p => p.Equals("TestRunner", StringComparison.CurrentCultureIgnoreCase)))
{
return Assembly.GetExecutingAssembly().Location.ToAbsolutePath().Parent;
}
if ((result != default && result.Depth > 1 && result.FileName == "dotnet".ToRelativePath())
|| Assembly.GetEntryAssembly() != null)
{
result = Assembly.GetEntryAssembly()!.Location.ToAbsolutePath();
}
return result == default ? Environment.CurrentDirectory.ToAbsolutePath() : result.Parent;
2022-05-23 19:54:46 +00:00
}
}
2021-09-27 12:42:46 +00:00
2022-10-01 13:02:47 +00:00
public static AbsolutePath LauncherAwarePath
{
get
{
var path = EntryPoint;
if (path.Depth <= 2) return path;
if (Version.TryParse(path.Parent.FileName.ToString(), out var version) && version > new Version("1.0.0.0"))
return path.Parent;
return path;
}
}
2021-10-23 16:51:17 +00:00
public static AbsolutePath AppDataLocal =>
Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData).ToAbsolutePath();
2021-09-27 12:42:46 +00:00
public static AbsolutePath WindowsSystem32 => Environment.GetFolderPath(Environment.SpecialFolder.System).ToAbsolutePath();
2021-10-23 16:51:17 +00:00
public static AbsolutePath WabbajackAppLocal => AppDataLocal.Combine("Wabbajack");
public static AbsolutePath CurrentDirectory => Directory.GetCurrentDirectory().ToAbsolutePath();
public static AbsolutePath Windows => Environment.GetFolderPath(Environment.SpecialFolder.Windows).ToAbsolutePath();
2021-09-27 12:42:46 +00:00
}