From 23961a48b09f4437d9edc7e8b78442d8339e775b Mon Sep 17 00:00:00 2001 From: Andrei Tudor Date: Thu, 6 Jun 2024 15:37:33 +0300 Subject: [PATCH] Updated plugin command to enable branch switching. Updated Script runner --- DiscordBot/Bot/Actions/Extra/PluginMethods.cs | 21 ++++++++- DiscordBot/Bot/Actions/Plugin.cs | 37 +++++++++++++++- DiscordBotCore/Loaders/Loader.cs | 5 ++- DiscordBotCore/Online/PluginManager.cs | 43 ++++++++++++------- DiscordBotCore/Online/ServerCom.cs | 3 +- DiscordBotCore/Others/JsonManager.cs | 4 +- DiscordBotCore/Plugin/PluginOnlineInfo.cs | 5 +-- DiscordBotUI/WindowsForms/PluginListWindow.cs | 2 +- 8 files changed, 91 insertions(+), 29 deletions(-) diff --git a/DiscordBot/Bot/Actions/Extra/PluginMethods.cs b/DiscordBot/Bot/Actions/Extra/PluginMethods.cs index d2b8919..b8024a2 100644 --- a/DiscordBot/Bot/Actions/Extra/PluginMethods.cs +++ b/DiscordBot/Bot/Actions/Extra/PluginMethods.cs @@ -17,8 +17,11 @@ namespace DiscordBot.Bot.Actions.Extra; internal static class PluginMethods { + internal static async Task List(PluginManager manager) { + Console.WriteLine($"Fetching plugin list from branch {manager.Branch} ..."); + var data = await ConsoleUtilities.ExecuteWithProgressBar(manager.GetPluginsList(), "Reading remote database"); TableData tableData = new(["Name", "Description", "Version", "Is Installed"]); @@ -73,10 +76,17 @@ internal static class PluginMethods } ); - if (!pluginData.HasDependencies) + if (!pluginData.HasFileDependencies) { - await manager.AppendPluginToDatabase(new PluginInfo(pluginName, pluginData.Version, [])); + if (pluginData.HasScriptDependencies) + { + Console.WriteLine("Executing post install scripts ..."); + await manager.ExecutePluginInstallScripts(pluginData.ScriptDependencies); + } + + PluginInfo pluginInfo = new(pluginName, pluginData.Version, new List()); Console.WriteLine("Finished installing " + pluginName + " successfully"); + await manager.AppendPluginToDatabase(pluginInfo); await RefreshPlugins(false); return; } @@ -128,6 +138,13 @@ internal static class PluginMethods } ); + + if(pluginData.HasScriptDependencies) + { + Console.WriteLine("Executing post install scripts ..."); + await manager.ExecutePluginInstallScripts(pluginData.ScriptDependencies); + } + await manager.AppendPluginToDatabase(new PluginInfo(pluginName, pluginData.Version, pluginData.Dependencies.Select(sep => sep.DownloadLocation).ToList())); await RefreshPlugins(false); } diff --git a/DiscordBot/Bot/Actions/Plugin.cs b/DiscordBot/Bot/Actions/Plugin.cs index e397d42..6512fbe 100644 --- a/DiscordBot/Bot/Actions/Plugin.cs +++ b/DiscordBot/Bot/Actions/Plugin.cs @@ -23,7 +23,8 @@ public class Plugin: ICommandAction new InternalActionOption("load", "Loads all plugins"), new InternalActionOption("install", "Installs a plugin"), new InternalActionOption("refresh", "Refreshes the plugin list"), - new InternalActionOption("uninstall", "Uninstalls a plugin") + new InternalActionOption("uninstall", "Uninstalls a plugin"), + new InternalActionOption("branch", "Sets a plugin option") }; public InternalActionRunType RunType => InternalActionRunType.ON_CALL; @@ -44,6 +45,38 @@ public class Plugin: ICommandAction switch (args[0]) { + case "branch": + if (args.Length < 2) + { + Console.WriteLine("Usage : plugin branch