Flow.Launcher/Flow.Launcher.Infrastructure/UserSettings/DataLocation.cs
2025-09-21 16:17:41 +08:00

47 lines
2.1 KiB
C#

using System;
using System.IO;
#pragma warning disable CA2211 // Non-constant fields should not be visible
namespace Flow.Launcher.Infrastructure.UserSettings
{
public static class DataLocation
{
public const string PortableFolderName = "UserData";
public const string DeletionIndicatorFile = ".dead";
public static string PortableDataPath = Path.Combine(Constant.ProgramDirectory, PortableFolderName);
public static string RoamingDataPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "FlowLauncher");
public static string DataDirectory()
{
if (PortableDataLocationInUse())
return PortableDataPath;
return RoamingDataPath;
}
public static bool PortableDataLocationInUse()
{
if (Directory.Exists(PortableDataPath) &&
!File.Exists(Path.Combine(PortableDataPath, DeletionIndicatorFile))
return true;
return false;
}
public static string VersionLogDirectory => Path.Combine(LogDirectory, Constant.Version);
public static string LogDirectory => Path.Combine(DataDirectory(), Constant.Logs);
public static string CacheDirectory => Path.Combine(DataDirectory(), Constant.Cache);
public static string SettingsDirectory => Path.Combine(DataDirectory(), Constant.Settings);
public static string PluginsDirectory => Path.Combine(DataDirectory(), Constant.Plugins);
public static string ThemesDirectory => Path.Combine(DataDirectory(), Constant.Themes);
public static string PluginSettingsDirectory => Path.Combine(SettingsDirectory, Constant.Plugins);
public static string PluginCacheDirectory => Path.Combine(DataDirectory(), Constant.Cache, Constant.Plugins);
public const string PythonEnvironmentName = "Python";
public const string NodeEnvironmentName = "Node.js";
public const string PluginEnvironments = "Environments";
public static string PluginEnvironmentsPath => Path.Combine(DataDirectory(), PluginEnvironments);
}
}