Skip to content

Commit

Permalink
use generic tasks
Browse files Browse the repository at this point in the history
  • Loading branch information
Jack251970 committed Sep 17, 2024
1 parent 97688ef commit 0871a0b
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 28 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,10 @@ internal AbstractPluginEnvironment(List<PluginMetadata> pluginMetadataList, Plug
PluginSettings = pluginSettings;
}

internal IEnumerable<Task> Setup()
internal IEnumerable<Task<PluginPair>> Setup()
{
if (!PluginMetadataList.Any(o => o.Language.Equals(Language, StringComparison.OrdinalIgnoreCase)))
return new List<Task>();
return new List<Task<PluginPair>>();

if (!string.IsNullOrEmpty(PluginsSettingsFilePath) && FilesFolders.FileExists(PluginsSettingsFilePath))
{
Expand Down Expand Up @@ -88,7 +88,7 @@ internal IEnumerable<Task> Setup()
$"Not able to successfully set {EnvName} path, setting's plugin executable path variable is still an empty string.",
$"{Language}Environment");

return new List<Task>();
return new List<Task<PluginPair>>();
}
}

Expand All @@ -107,9 +107,9 @@ private void EnsureLatestInstalled(string expectedPath, string currentPath, stri

internal abstract PluginPair CreatePluginPair(string filePath, PluginMetadata metadata);

private IEnumerable<Task> SetPathForPluginPairs(string filePath, string languageToSet)
private IEnumerable<Task<PluginPair>> SetPathForPluginPairs(string filePath, string languageToSet)
{
var tasks = new List<Task>();
var tasks = new List<Task<PluginPair>>();

foreach (var metadata in PluginMetadataList)
{
Expand Down
47 changes: 24 additions & 23 deletions Flow.Launcher.Core/Plugin/PluginsLoader.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,25 @@ public static async Task<List<PluginPair>> PluginsAsync(List<PluginMetadata> met
{
var dotnetPlugins = DotNetPlugins(metadatas);

await Task.WhenAll(dotnetPlugins);

if (!ErroredPlugins.IsEmpty)
{
var errorPluginString = String.Join(Environment.NewLine, ErroredPlugins);

var errorMessage = "The following "
+ (ErroredPlugins.Count > 1 ? "plugins have " : "plugin has ")
+ "errored and cannot be loaded:";

_ = Task.Run(() =>
{
MessageBox.Show($"{errorMessage}{Environment.NewLine}{Environment.NewLine}" +
$"{errorPluginString}{Environment.NewLine}{Environment.NewLine}" +
$"Please refer to the logs for more information", "",
MessageBoxButtons.OK, MessageBoxIcon.Warning);
});
}

var pythonEnv = new PythonEnvironment(metadatas, settings);
var pythonV2Env = new PythonV2Environment(metadatas, settings);
var tsEnv = new TypeScriptEnvironment(metadatas, settings);
Expand All @@ -41,8 +60,7 @@ public static async Task<List<PluginPair>> PluginsAsync(List<PluginMetadata> met
var executablePlugins = ExecutablePlugins(metadatas);
var executableV2Plugins = ExecutableV2Plugins(metadatas);

var plugins = dotnetPlugins
.Concat(pythonPlugins)
var plugins = pythonPlugins
.Concat(pythonV2Plugins)
.Concat(tsPlugins)
.Concat(jsPlugins)
Expand All @@ -52,26 +70,9 @@ public static async Task<List<PluginPair>> PluginsAsync(List<PluginMetadata> met
.Concat(executableV2Plugins)
.ToList();

await Task.WhenAll(plugins);

if (!ErroredPlugins.IsEmpty)
{
var errorPluginString = String.Join(Environment.NewLine, ErroredPlugins);

var errorMessage = "The following "
+ (ErroredPlugins.Count > 1 ? "plugins have " : "plugin has ")
+ "errored and cannot be loaded:";

_ = Task.Run(() =>
{
MessageBox.Show($"{errorMessage}{Environment.NewLine}{Environment.NewLine}" +
$"{errorPluginString}{Environment.NewLine}{Environment.NewLine}" +
$"Please refer to the logs for more information", "",
MessageBoxButtons.OK, MessageBoxIcon.Warning);
});
}
var pluginPairs = await Task.WhenAll(plugins);

return Plugins.ToList();
return Plugins.Concat(pluginPairs).ToList();
}

public static IEnumerable<Task> DotNetPlugins(List<PluginMetadata> source)
Expand Down Expand Up @@ -132,7 +133,7 @@ public static IEnumerable<Task> DotNetPlugins(List<PluginMetadata> source)
}));
}

public static IEnumerable<Task> ExecutablePlugins(IEnumerable<PluginMetadata> source)
public static IEnumerable<Task<PluginPair>> ExecutablePlugins(IEnumerable<PluginMetadata> source)
{
return source
.Where(o => o.Language.Equals(AllowedLanguage.Executable, StringComparison.OrdinalIgnoreCase))
Expand All @@ -146,7 +147,7 @@ public static IEnumerable<Task> ExecutablePlugins(IEnumerable<PluginMetadata> so
}));
}

public static IEnumerable<Task> ExecutableV2Plugins(IEnumerable<PluginMetadata> source)
public static IEnumerable<Task<PluginPair>> ExecutableV2Plugins(IEnumerable<PluginMetadata> source)
{
return source
.Where(o => o.Language.Equals(AllowedLanguage.ExecutableV2, StringComparison.OrdinalIgnoreCase))
Expand Down

0 comments on commit 0871a0b

Please sign in to comment.