Forráskód Böngészése

Merge pull request #756 from Bond-009/cachedir

Make cache dir configurable
Joshua M. Boniface 6 éve
szülő
commit
021a1887fb

+ 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.CacheDir != null)
+                {
+                    cacheDir = options.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)

+ 3 - 0
Jellyfin.Server/StartupOptions.cs

@@ -11,6 +11,9 @@ namespace Jellyfin.Server
         [Option('d', "datadir", Required = false, HelpText = "Path to use for the data folder (database files, etc.).")]
         public string DataDir { get; set; }
 
+        [Option('C', "cachedir", Required = false, HelpText = "Path to use for caching.")]
+        public string CacheDir { get; set; }
+
         [Option('c', "configdir", Required = false, HelpText = "Path to use for configuration data (user settings and pictures).")]
         public string ConfigDir { get; set; }