add F# as an allowed plugin language

* rename PluginsLoader.CSharpPlugins to the more generic DotNetPlugins
* add AllowedLanguage.IsDotNet which checks for either C# or F#
This commit is contained in:
Ioannis G 2020-04-30 10:22:28 +03:00
parent eb26329e01
commit 032a203224
No known key found for this signature in database
GPG key ID: EAC0E4E5E36AC49E
2 changed files with 21 additions and 10 deletions

View file

@ -20,21 +20,21 @@ namespace Flow.Launcher.Core.Plugin
public static List<PluginPair> Plugins(List<PluginMetadata> metadatas, PluginsSettings settings)
{
var csharpPlugins = CSharpPlugins(metadatas).ToList();
var dotnetPlugins = DotNetPlugins(metadatas).ToList();
var pythonPlugins = PythonPlugins(metadatas, settings.PythonDirectory);
var executablePlugins = ExecutablePlugins(metadatas);
var plugins = csharpPlugins.Concat(pythonPlugins).Concat(executablePlugins).ToList();
var plugins = dotnetPlugins.Concat(pythonPlugins).Concat(executablePlugins).ToList();
return plugins;
}
public static IEnumerable<PluginPair> CSharpPlugins(List<PluginMetadata> source)
public static IEnumerable<PluginPair> DotNetPlugins(List<PluginMetadata> source)
{
var plugins = new List<PluginPair>();
var metadatas = source.Where(o => o.Language.ToUpper() == AllowedLanguage.CSharp);
var metadatas = source.Where(o => AllowedLanguage.IsDotNet(o.Language));
foreach (var metadata in metadatas)
{
var milliseconds = Stopwatch.Debug($"|PluginsLoader.CSharpPlugins|Constructor init cost for {metadata.Name}", () =>
var milliseconds = Stopwatch.Debug($"|PluginsLoader.DotNetPlugins|Constructor init cost for {metadata.Name}", () =>
{
#if DEBUG
@ -50,7 +50,7 @@ namespace Flow.Launcher.Core.Plugin
}
catch (Exception e)
{
Log.Exception($"|PluginsLoader.CSharpPlugins|Couldn't load assembly for {metadata.Name}", e);
Log.Exception($"|PluginsLoader.DotNetPlugins|Couldn't load assembly for {metadata.Name}", e);
return;
}
var types = assembly.GetTypes();
@ -61,7 +61,7 @@ namespace Flow.Launcher.Core.Plugin
}
catch (InvalidOperationException e)
{
Log.Exception($"|PluginsLoader.CSharpPlugins|Can't find class implement IPlugin for <{metadata.Name}>", e);
Log.Exception($"|PluginsLoader.DotNetPlugins|Can't find class implement IPlugin for <{metadata.Name}>", e);
return;
}
IPlugin plugin;
@ -71,7 +71,7 @@ namespace Flow.Launcher.Core.Plugin
}
catch (Exception e)
{
Log.Exception($"|PluginsLoader.CSharpPlugins|Can't create instance for <{metadata.Name}>", e);
Log.Exception($"|PluginsLoader.DotNetPlugins|Can't create instance for <{metadata.Name}>", e);
return;
}
#endif

View file

@ -12,15 +12,26 @@
get { return "CSHARP"; }
}
public static string FSharp
{
get { return "FSHARP"; }
}
public static string Executable
{
get { return "EXECUTABLE"; }
}
public static bool IsDotNet(string language)
{
return language.ToUpper() == CSharp
|| language.ToUpper() == FSharp;
}
public static bool IsAllowed(string language)
{
return language.ToUpper() == Python.ToUpper()
|| language.ToUpper() == CSharp.ToUpper()
return IsDotNet(language)
|| language.ToUpper() == Python.ToUpper()
|| language.ToUpper() == Executable.ToUpper();
}
}