aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Common/Plugins/BasePlugin.cs
diff options
context:
space:
mode:
authorGreenback <jimcartlidge@yahoo.co.uk>2020-12-15 00:42:59 +0000
committerGreenback <jimcartlidge@yahoo.co.uk>2020-12-15 00:42:59 +0000
commitfbb20ebef6dee03de27e20d7e110e709ba2f20e9 (patch)
tree4eeaf08c92cfb714c45e7a6a1c320bfde0cfc1a7 /MediaBrowser.Common/Plugins/BasePlugin.cs
parent494ace7984edab77df7f9da30e411d8d3d617036 (diff)
Plugin setting migration to folders.
Diffstat (limited to 'MediaBrowser.Common/Plugins/BasePlugin.cs')
-rw-r--r--MediaBrowser.Common/Plugins/BasePlugin.cs42
1 files changed, 40 insertions, 2 deletions
diff --git a/MediaBrowser.Common/Plugins/BasePlugin.cs b/MediaBrowser.Common/Plugins/BasePlugin.cs
index b918fc4f6..a0d6b8f83 100644
--- a/MediaBrowser.Common/Plugins/BasePlugin.cs
+++ b/MediaBrowser.Common/Plugins/BasePlugin.cs
@@ -134,7 +134,26 @@ namespace MediaBrowser.Common.Plugins
var assemblyName = assembly.GetName();
var assemblyFilePath = assembly.Location;
- var dataFolderPath = Path.Combine(ApplicationPaths.PluginsPath, Path.GetFileNameWithoutExtension(assemblyFilePath));
+ // Find out the plugin folder.
+ bool inPluginFolder = assemblyFilePath.StartsWith(ApplicationPaths.PluginsPath, StringComparison.OrdinalIgnoreCase);
+ string path, dataFolderPath;
+
+ var configurationFileName = Path.ChangeExtension(Path.GetFileName(assemblyFilePath), ".xml");
+ if (inPluginFolder)
+ {
+ // Normal plugin.
+ path = assemblyFilePath.Substring(ApplicationPaths.PluginsPath.Length).Split('\\', StringSplitOptions.RemoveEmptyEntries)[0];
+ dataFolderPath = Path.Combine(
+ Path.Combine(ApplicationPaths.PluginsPath, path),
+ configurationFileName);
+ ConfigurationFilePath = dataFolderPath;
+ }
+ else
+ {
+ // Provider
+ dataFolderPath = Path.Combine(ApplicationPaths.PluginsPath, Path.GetFileNameWithoutExtension(assemblyFilePath));
+ ConfigurationFilePath = Path.Combine(ApplicationPaths.PluginConfigurationsPath, configurationFileName);
+ }
assemblyPlugin.SetAttributes(assemblyFilePath, dataFolderPath, assemblyName.Version);
@@ -146,6 +165,25 @@ namespace MediaBrowser.Common.Plugins
assemblyPlugin.SetId(assemblyId);
}
+
+ // TODO : Simplify this, once migration support is ceased.
+ if (inPluginFolder)
+ {
+ var oldConfigFilePath = Path.Combine(ApplicationPaths.PluginConfigurationsPath, ConfigurationFileName);
+
+ if (!File.Exists(ConfigurationFilePath) && File.Exists(oldConfigFilePath))
+ {
+ // Migrate settings, as different plugin versions may have different settings.
+ try
+ {
+ File.Copy(oldConfigFilePath, ConfigurationFilePath);
+ }
+ catch
+ {
+ // Unable to migrate settings.
+ }
+ }
+ }
}
if (this is IHasPluginConfiguration hasPluginConfiguration)
@@ -219,7 +257,7 @@ namespace MediaBrowser.Common.Plugins
/// Gets the full path to the configuration file.
/// </summary>
/// <value>The configuration file path.</value>
- public string ConfigurationFilePath => Path.Combine(ApplicationPaths.PluginConfigurationsPath, ConfigurationFileName);
+ public string ConfigurationFilePath { get; }
/// <summary>
/// Gets the plugin configuration.