From a2dd2ddd55adc001bf3752dce6d4a95616e5dc4b Mon Sep 17 00:00:00 2001
From: ploughpuff <33969763+ploughpuff@users.noreply.github.com>
Date: Wed, 13 Feb 2019 15:35:14 +0000
Subject: Rewrite rules for determining app paths and use XDG_CONFIG_HOME for
configDir (#781)
Re-write rules for determining dataDir, configDir and logDir. Generally, arguments from command line take precedence, then JELLYFIN env vars, before using XDG names.
Co-Authored-By: ploughpuff <33969763+ploughpuff@users.noreply.github.com>
---
.../AppBase/BaseApplicationPaths.cs | 103 +++++----------------
1 file changed, 21 insertions(+), 82 deletions(-)
(limited to 'Emby.Server.Implementations/AppBase/BaseApplicationPaths.cs')
diff --git a/Emby.Server.Implementations/AppBase/BaseApplicationPaths.cs b/Emby.Server.Implementations/AppBase/BaseApplicationPaths.cs
index 701c04f9e..f26cc4f62 100644
--- a/Emby.Server.Implementations/AppBase/BaseApplicationPaths.cs
+++ b/Emby.Server.Implementations/AppBase/BaseApplicationPaths.cs
@@ -1,3 +1,4 @@
+using System;
using System.IO;
using MediaBrowser.Common.Configuration;
@@ -14,50 +15,44 @@ namespace Emby.Server.Implementations.AppBase
///
protected BaseApplicationPaths(
string programDataPath,
- string appFolderPath,
- string logDirectoryPath = null,
- string configurationDirectoryPath = null,
- string cacheDirectoryPath = null)
+ string logDirectoryPath,
+ string configurationDirectoryPath,
+ string cacheDirectoryPath)
{
ProgramDataPath = programDataPath;
- ProgramSystemPath = appFolderPath;
LogDirectoryPath = logDirectoryPath;
ConfigurationDirectoryPath = configurationDirectoryPath;
CachePath = cacheDirectoryPath;
+
+ DataPath = Path.Combine(ProgramDataPath, "data");
}
+ ///
+ /// Gets the path to the program data folder
+ ///
+ /// The program data path.
public string ProgramDataPath { get; private set; }
///
/// Gets the path to the system folder
///
- public string ProgramSystemPath { get; private set; }
+ public string ProgramSystemPath { get; } = AppContext.BaseDirectory;
- ///
- /// The _data directory
- ///
- private string _dataDirectory;
///
/// Gets the folder path to the data directory
///
/// The data directory.
+ private string _dataPath;
public string DataPath
{
- get
- {
- if (_dataDirectory == null)
- {
- _dataDirectory = Path.Combine(ProgramDataPath, "data");
-
- Directory.CreateDirectory(_dataDirectory);
- }
-
- return _dataDirectory;
- }
+ get => _dataPath;
+ private set => _dataPath = Directory.CreateDirectory(value).FullName;
}
- private const string _virtualDataPath = "%AppDataPath%";
- public string VirtualDataPath => _virtualDataPath;
+ ///
+ /// Gets the magic strings used for virtual path manipulation.
+ ///
+ public string VirtualDataPath { get; } = "%AppDataPath%";
///
/// Gets the image cache path.
@@ -83,55 +78,17 @@ namespace Emby.Server.Implementations.AppBase
/// The plugin configurations path.
public string TempUpdatePath => Path.Combine(ProgramDataPath, "updates");
- ///
- /// The _log directory
- ///
- private string _logDirectoryPath;
-
///
/// Gets the path to the log directory
///
/// The log directory path.
- public string LogDirectoryPath
- {
- get
- {
- if (string.IsNullOrEmpty(_logDirectoryPath))
- {
- _logDirectoryPath = Path.Combine(ProgramDataPath, "logs");
-
- Directory.CreateDirectory(_logDirectoryPath);
- }
-
- return _logDirectoryPath;
- }
- set => _logDirectoryPath = value;
- }
-
- ///
- /// The _config directory
- ///
- private string _configurationDirectoryPath;
+ public string LogDirectoryPath { get; private set; }
///
/// Gets the path to the application configuration root directory
///
/// The configuration directory path.
- public string ConfigurationDirectoryPath
- {
- get
- {
- if (string.IsNullOrEmpty(_configurationDirectoryPath))
- {
- _configurationDirectoryPath = Path.Combine(ProgramDataPath, "config");
-
- Directory.CreateDirectory(_configurationDirectoryPath);
- }
-
- return _configurationDirectoryPath;
- }
- set => _configurationDirectoryPath = value;
- }
+ public string ConfigurationDirectoryPath { get; private set; }
///
/// Gets the path to the system configuration file
@@ -139,29 +96,11 @@ namespace Emby.Server.Implementations.AppBase
/// The system configuration file path.
public string SystemConfigurationFilePath => Path.Combine(ConfigurationDirectoryPath, "system.xml");
- ///
- /// The _cache directory
- ///
- private string _cachePath;
///
/// Gets the folder path to the cache directory
///
/// The cache directory.
- public string CachePath
- {
- get
- {
- if (string.IsNullOrEmpty(_cachePath))
- {
- _cachePath = Path.Combine(ProgramDataPath, "cache");
-
- Directory.CreateDirectory(_cachePath);
- }
-
- return _cachePath;
- }
- set => _cachePath = value;
- }
+ public string CachePath { get; set; }
///
/// Gets the folder path to the temp directory within the cache folder
--
cgit v1.2.3