瀏覽代碼

Make cache dir configurable

Bond_009 6 年之前
父節點
當前提交
8af1e93cd4

+ 3 - 1
Emby.Server.Implementations/AppBase/BaseApplicationPaths.cs

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

+ 7 - 2
Emby.Server.Implementations/ServerApplicationPaths.cs

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

+ 26 - 1
Jellyfin.Server/Program.cs

@@ -202,6 +202,31 @@ namespace Jellyfin.Server
                 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");
             if (string.IsNullOrEmpty(logDir))
             {
@@ -223,7 +248,7 @@ namespace Jellyfin.Server
 
             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)