Pārlūkot izejas kodu

Add env vars JELLYFIN_CONFIG_DIR and JELLYFIN_DATA_PATH

Bond_009 6 gadi atpakaļ
vecāks
revīzija
f6d50c411f
1 mainītis faili ar 39 papildinājumiem un 33 dzēšanām
  1. 39 33
      Jellyfin.Server/Program.cs

+ 39 - 33
Jellyfin.Server/Program.cs

@@ -102,56 +102,62 @@ namespace Jellyfin.Server
 
 
         private static ServerApplicationPaths createApplicationPaths(StartupOptions options)
         private static ServerApplicationPaths createApplicationPaths(StartupOptions options)
         {
         {
-            string programDataPath;
-            if (options.ContainsOption("-programdata"))
+            string programDataPath = Environment.GetEnvironmentVariable("JELLYFIN_DATA_PATH");
+            if (string.IsNullOrEmpty(programDataPath))
             {
             {
-                programDataPath = options.GetOption("-programdata");
-            }
-            else
-            {
-                if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
+                if (options.ContainsOption("-programdata"))
                 {
                 {
-                    programDataPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
+                    programDataPath = options.GetOption("-programdata");
                 }
                 }
                 else
                 else
                 {
                 {
-                    // $XDG_DATA_HOME defines the base directory relative to which user specific data files should be stored.
-                    programDataPath = Environment.GetEnvironmentVariable("XDG_DATA_HOME");
-                    // If $XDG_DATA_HOME is either not set or empty, $HOME/.local/share should be used.
-                    if (string.IsNullOrEmpty(programDataPath))
+                    if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
                     {
                     {
-                        programDataPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".local", "share");
+                        programDataPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
                     }
                     }
+                    else
+                    {
+                        // $XDG_DATA_HOME defines the base directory relative to which user specific data files should be stored.
+                        programDataPath = Environment.GetEnvironmentVariable("XDG_DATA_HOME");
+                        // If $XDG_DATA_HOME is either not set or empty, $HOME/.local/share should be used.
+                        if (string.IsNullOrEmpty(programDataPath))
+                        {
+                            programDataPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".local", "share");
+                        }
+                    }
+                    programDataPath = Path.Combine(programDataPath, "jellyfin");
+                    // Ensure the dir exists
+                    Directory.CreateDirectory(programDataPath);
                 }
                 }
-                programDataPath = Path.Combine(programDataPath, "jellyfin");
-                // Ensure the dir exists
-                Directory.CreateDirectory(programDataPath);
             }
             }
 
 
-            string configPath;
-            if (options.ContainsOption("-configdir"))
+            string configDir = Environment.GetEnvironmentVariable("JELLYFIN_CONFIG_DIR");
+            if (string.IsNullOrEmpty(configDir))
             {
             {
-                configPath = options.GetOption("-configdir");
-            }
-            else
-            {
-                if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
+                if (options.ContainsOption("-configdir"))
                 {
                 {
-                    configPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
+                    configDir = options.GetOption("-configdir");
                 }
                 }
                 else
                 else
                 {
                 {
-                    // $XDG_CONFIG_HOME defines the base directory relative to which user specific configuration files should be stored.
-                    configPath = Environment.GetEnvironmentVariable("XDG_CONFIG_HOME");
-                    // If $XDG_CONFIG_HOME is either not set or empty, $HOME/.config should be used.
-                    if (string.IsNullOrEmpty(configPath))
+                    if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
                     {
                     {
-                        configPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".local", "share");
+                        configDir = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
                     }
                     }
+                    else
+                    {
+                        // $XDG_CONFIG_HOME defines the base directory relative to which user specific configuration files should be stored.
+                        configDir = Environment.GetEnvironmentVariable("XDG_CONFIG_HOME");
+                        // If $XDG_CONFIG_HOME is either not set or empty, $HOME/.config should be used.
+                        if (string.IsNullOrEmpty(configDir))
+                        {
+                            configDir = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".local", "share");
+                        }
+                    }
+                    configDir = Path.Combine(configDir, "jellyfin");
+                    // Ensure the dir exists
+                    Directory.CreateDirectory(configDir);
                 }
                 }
-                configPath = Path.Combine(configPath, "jellyfin");
-                // Ensure the dir exists
-                Directory.CreateDirectory(configPath);
             }
             }
 
 
             string logDir = Environment.GetEnvironmentVariable("JELLYFIN_LOG_DIR");
             string logDir = Environment.GetEnvironmentVariable("JELLYFIN_LOG_DIR");
@@ -173,7 +179,7 @@ namespace Jellyfin.Server
 
 
             string appPath = AppContext.BaseDirectory;
             string appPath = AppContext.BaseDirectory;
 
 
-            return new ServerApplicationPaths(programDataPath, appPath, appPath, logDir, configPath);
+            return new ServerApplicationPaths(programDataPath, appPath, appPath, logDir, configDir);
         }
         }
 
 
         private static async Task createLogger(IApplicationPaths appPaths)
         private static async Task createLogger(IApplicationPaths appPaths)