Support plugin directory update & validate

This commit is contained in:
Jack251970 2025-02-24 13:46:58 +08:00
parent 126153bf20
commit 3106b025e3
4 changed files with 25 additions and 17 deletions

View file

@ -116,9 +116,6 @@ namespace Flow.Launcher.Core.ExternalPlugins.Environments
if (metadata.Language.Equals(languageToSet, StringComparison.OrdinalIgnoreCase))
{
metadata.AssemblyName = string.Empty;
metadata.PluginSettingsDirectoryPath = Path.Combine(DataLocation.PluginSettingsDirectory, metadata.Name);
metadata.PluginCacheDirectoryPath = Path.Combine(DataLocation.PluginCacheDirectory, metadata.Name);
pluginPairs.Add(CreatePluginPair(filePath, metadata));
}
}

View file

@ -32,7 +32,7 @@ namespace Flow.Launcher.Core.Plugin
private static PluginsSettings Settings;
private static List<PluginMetadata> _metadatas;
private static List<string> _modifiedPlugins = new List<string>();
private static List<string> _modifiedPlugins = new();
/// <summary>
/// Directories that will hold Flow Launcher plugin directory
@ -152,6 +152,27 @@ namespace Flow.Launcher.Core.Plugin
Settings = settings;
Settings.UpdatePluginSettings(_metadatas);
AllPlugins = PluginsLoader.Plugins(_metadatas, Settings);
UpdateAndValidatePluginDirectory(_metadatas);
}
private static void UpdateAndValidatePluginDirectory(List<PluginMetadata> metadatas)
{
foreach (var metadata in metadatas)
{
if (AllowedLanguage.IsDotNet(metadata.Language))
{
metadata.PluginSettingsDirectoryPath = Path.Combine(DataLocation.PluginSettingsDirectory, metadata.AssemblyName);
metadata.PluginCacheDirectoryPath = Path.Combine(DataLocation.PluginCacheDirectory, metadata.AssemblyName);
}
else
{
metadata.PluginSettingsDirectoryPath = Path.Combine(DataLocation.PluginSettingsDirectory, metadata.Name);
metadata.PluginCacheDirectoryPath = Path.Combine(DataLocation.PluginCacheDirectory, metadata.Name);
}
Helper.ValidateDirectory(metadata.PluginSettingsDirectoryPath);
Helper.ValidateDirectory(metadata.PluginCacheDirectoryPath);
}
}
/// <summary>
@ -226,11 +247,9 @@ namespace Flow.Launcher.Core.Plugin
if (query is null)
return Array.Empty<PluginPair>();
if (!NonGlobalPlugins.ContainsKey(query.ActionKeyword))
if (!NonGlobalPlugins.TryGetValue(query.ActionKeyword, out var plugin))
return GlobalPlugins;
var plugin = NonGlobalPlugins[query.ActionKeyword];
return new List<PluginPair>
{
plugin

View file

@ -75,11 +75,7 @@ namespace Flow.Launcher.Core.Plugin
plugin = Activator.CreateInstance(type) as IAsyncPlugin;
// Same as PluginJsonStorage.cs constructor
var assemblyName = assembly.GetName().Name;
metadata.AssemblyName = assemblyName;
metadata.PluginSettingsDirectoryPath = Path.Combine(DataLocation.PluginSettingsDirectory, assemblyName);
metadata.PluginCacheDirectoryPath = Path.Combine(DataLocation.PluginCacheDirectory, assemblyName);
metadata.AssemblyName = assembly.GetName().Name;
}
#if DEBUG
catch (Exception)
@ -149,8 +145,6 @@ namespace Flow.Launcher.Core.Plugin
};
plugin.Metadata.AssemblyName = string.Empty;
plugin.Metadata.PluginSettingsDirectoryPath = Path.Combine(DataLocation.PluginSettingsDirectory, plugin.Metadata.Name);
plugin.Metadata.PluginCacheDirectoryPath = Path.Combine(DataLocation.PluginCacheDirectory, plugin.Metadata.Name);
return plugin;
});
@ -169,8 +163,6 @@ namespace Flow.Launcher.Core.Plugin
};
plugin.Metadata.AssemblyName = string.Empty;
plugin.Metadata.PluginSettingsDirectoryPath = Path.Combine(DataLocation.PluginSettingsDirectory, plugin.Metadata.Name);
plugin.Metadata.PluginCacheDirectoryPath = Path.Combine(DataLocation.PluginCacheDirectory, plugin.Metadata.Name);
return plugin;
});

View file

@ -18,7 +18,7 @@ namespace Flow.Launcher.Infrastructure.Logger
static Log()
{
CurrentLogDirectory = Path.Combine(DataLocation.DataDirectory(), DirectoryName, Constant.Version);
CurrentLogDirectory = DataLocation.VersionLogDirectory;
if (!Directory.Exists(CurrentLogDirectory))
{
Directory.CreateDirectory(CurrentLogDirectory);