Make cache dir configurable

This commit is contained in:
Bond_009 2019-01-28 17:52:56 +01:00
parent b4c5ff89fd
commit 8af1e93cd4
3 changed files with 36 additions and 4 deletions

View File

@ -16,12 +16,14 @@ namespace Emby.Server.Implementations.AppBase
string programDataPath, string programDataPath,
string appFolderPath, string appFolderPath,
string logDirectoryPath = null, string logDirectoryPath = null,
string configurationDirectoryPath = null) string configurationDirectoryPath = null,
string cacheDirectoryPath = null)
{ {
ProgramDataPath = programDataPath; ProgramDataPath = programDataPath;
ProgramSystemPath = appFolderPath; ProgramSystemPath = appFolderPath;
LogDirectoryPath = logDirectoryPath; LogDirectoryPath = logDirectoryPath;
ConfigurationDirectoryPath = configurationDirectoryPath; ConfigurationDirectoryPath = configurationDirectoryPath;
CachePath = cacheDirectoryPath;
} }
public string ProgramDataPath { get; private set; } public string ProgramDataPath { get; private set; }

View File

@ -18,8 +18,13 @@ namespace Emby.Server.Implementations
string appFolderPath, string appFolderPath,
string applicationResourcesPath, string applicationResourcesPath,
string logDirectoryPath = null, string logDirectoryPath = null,
string configurationDirectoryPath = null) string configurationDirectoryPath = null,
: base(programDataPath, appFolderPath, logDirectoryPath, configurationDirectoryPath) string cacheDirectoryPath = null)
: base(programDataPath,
appFolderPath,
logDirectoryPath,
configurationDirectoryPath,
cacheDirectoryPath)
{ {
ApplicationResourcesPath = applicationResourcesPath; ApplicationResourcesPath = applicationResourcesPath;
} }

View File

@ -202,6 +202,31 @@ namespace Jellyfin.Server
Directory.CreateDirectory(configDir); Directory.CreateDirectory(configDir);
} }
string cacheDir = Environment.GetEnvironmentVariable("JELLYFIN_CACHE_DIR");
if (string.IsNullOrEmpty(cacheDir))
{
if (options.ContainsOption("-cachedir"))
{
cacheDir = options.GetOption("-cachedir");
}
else if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{
// $XDG_CACHE_HOME defines the base directory relative to which user specific non-essential data files should be stored.
cacheDir = Environment.GetEnvironmentVariable("XDG_CACHE_HOME");
// If $XDG_CACHE_HOME is either not set or empty, $HOME/.cache should be used.
if (string.IsNullOrEmpty(cacheDir))
{
cacheDir = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".cache");
}
cacheDir = Path.Combine(cacheDir, "jellyfin");
}
}
if (cacheDir != null)
{
Directory.CreateDirectory(cacheDir);
}
string logDir = Environment.GetEnvironmentVariable("JELLYFIN_LOG_DIR"); string logDir = Environment.GetEnvironmentVariable("JELLYFIN_LOG_DIR");
if (string.IsNullOrEmpty(logDir)) if (string.IsNullOrEmpty(logDir))
{ {
@ -223,7 +248,7 @@ namespace Jellyfin.Server
string appPath = AppContext.BaseDirectory; string appPath = AppContext.BaseDirectory;
return new ServerApplicationPaths(programDataPath, appPath, appPath, logDir, configDir); return new ServerApplicationPaths(programDataPath, appPath, appPath, logDir, configDir, cacheDir);
} }
private static async Task createLogger(IApplicationPaths appPaths) private static async Task createLogger(IApplicationPaths appPaths)