Updated Logger. Local plugin database has now only executable dependencies stored in the database
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
using DiscordBot.Utilities;
|
||||
@@ -40,9 +41,15 @@ internal static class PluginMethods
|
||||
|
||||
internal static async Task RefreshPlugins(bool quiet)
|
||||
{
|
||||
try
|
||||
{
|
||||
await LoadPlugins(quiet ? ["-q"] : null);
|
||||
await Application.CurrentApplication.InternalActionManager.Initialize();
|
||||
}catch(Exception ex)
|
||||
{
|
||||
Application.CurrentApplication.Logger.LogException(ex, typeof(PluginMethods), false);
|
||||
}
|
||||
|
||||
await LoadPlugins(quiet ? ["-q"] : null);
|
||||
await Application.CurrentApplication.InternalActionManager.Initialize();
|
||||
}
|
||||
|
||||
internal static async Task DownloadPlugin(PluginManager manager, string pluginName)
|
||||
@@ -108,7 +115,7 @@ internal static class PluginMethods
|
||||
|
||||
foreach (var dependency in pluginData.Dependencies)
|
||||
{
|
||||
var task = ctx.AddTask($"Downloading {dependency.DownloadLocation}: ");
|
||||
var task = ctx.AddTask($"Downloading {dependency.DownloadLocation} -> Executable: {dependency.IsExecutable}: ");
|
||||
IProgress<float> progress = new Progress<float>(p =>
|
||||
{
|
||||
task.Value = p;
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Threading.Tasks;
|
||||
@@ -22,10 +21,10 @@ public class Program
|
||||
/// </summary>
|
||||
public static async Task Startup(string[] args)
|
||||
{
|
||||
|
||||
await LoadComponents(args);
|
||||
await PrepareConsole();
|
||||
await PluginMethods.LoadPlugins(null);
|
||||
await Application.CurrentApplication.InternalActionManager.Initialize();
|
||||
await PluginMethods.RefreshPlugins(false);
|
||||
await ConsoleInputHandler();
|
||||
}
|
||||
|
||||
@@ -54,7 +53,6 @@ public class Program
|
||||
/// <returns>Returns the bootloader for the Discord Bot</returns>
|
||||
private static async Task PrepareConsole()
|
||||
{
|
||||
|
||||
AnsiConsole.MarkupLine($"[yellow]Running on version: {Assembly.GetExecutingAssembly().GetName().Version}[/]");
|
||||
AnsiConsole.MarkupLine("[yellow]Git SethBot: https://github.com/andreitdr/SethDiscordBot [/]");
|
||||
AnsiConsole.MarkupLine("[yellow]Git Plugins: https://github.com/andreitdr/SethPlugins [/]");
|
||||
|
||||
@@ -1,14 +1,12 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Spectre.Console;
|
||||
|
||||
namespace DiscordBot.Utilities;
|
||||
|
||||
public static class ConsoleUtilities
|
||||
internal static class ConsoleUtilities
|
||||
{
|
||||
|
||||
public static async Task<T> ExecuteWithProgressBar<T>(Task<T> function, string message)
|
||||
{
|
||||
T result = default;
|
||||
@@ -28,4 +26,5 @@ public static class ConsoleUtilities
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -11,7 +11,7 @@ namespace DiscordBotCore.Interfaces.Logger
|
||||
public string LogMessageFormat { get; set; }
|
||||
|
||||
public void Log(ILogMessage message);
|
||||
public void LogException(Exception exception, object Sender);
|
||||
public void LogException(Exception exception, object Sender, bool logFullStack = false);
|
||||
|
||||
public event EventHandler<FormattedMessage> OnFormattedLog;
|
||||
public event EventHandler<ILogMessage> OnRawLog;
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
using System;
|
||||
using System.Collections.Frozen;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Threading.Tasks;
|
||||
using DiscordBotCore.Others;
|
||||
using DiscordBotCore.Plugin;
|
||||
@@ -165,6 +163,9 @@ public class PluginManager
|
||||
File.Delete(dependency.Value);
|
||||
|
||||
await RemovePluginFromDatabase(pluginInfo.PluginName);
|
||||
|
||||
if (Directory.Exists($"Libraries/{pluginInfo.PluginName}"))
|
||||
Directory.Delete($"Libraries/{pluginInfo.PluginName}", true);
|
||||
}
|
||||
|
||||
public async Task<string> GetDependencyLocation(string dependencyName)
|
||||
@@ -177,7 +178,7 @@ public class PluginManager
|
||||
return plugin.ListOfDependancies[dependencyName];
|
||||
}
|
||||
|
||||
throw new Exception("Dependency not found");
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
public string GenerateDependencyLocation(string pluginName, string dependencyName)
|
||||
|
||||
@@ -71,9 +71,9 @@ namespace DiscordBotCore.Others.Logger
|
||||
return this;
|
||||
}
|
||||
|
||||
public static LogMessage CreateFromException(Exception exception, object Sender)
|
||||
public static LogMessage CreateFromException(Exception exception, object Sender, bool logFullStack)
|
||||
{
|
||||
LogMessage message = new LogMessage(exception.ToString(), Sender, LogType.ERROR);
|
||||
LogMessage message = new LogMessage(logFullStack? exception.ToString() : exception.Message, Sender, LogType.ERROR);
|
||||
return message;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -85,5 +85,5 @@ public sealed class Logger : ILogger
|
||||
public void Log(string message, LogType logType) => Log(new LogMessage(message, logType));
|
||||
public void Log(string message, object Sender) => Log(new LogMessage(message, Sender));
|
||||
public void Log(string message, object Sender, LogType type) => Log(new LogMessage(message, Sender, type));
|
||||
public void LogException(Exception exception, object Sender) => Log(LogMessage.CreateFromException(exception, Sender));
|
||||
public void LogException(Exception exception, object Sender, bool logFullStack = false) => Log(LogMessage.CreateFromException(exception, Sender, logFullStack));
|
||||
}
|
||||
|
||||
@@ -8,12 +8,14 @@ public class OnlineDependencyInfo
|
||||
public string DependencyName { get; private set; }
|
||||
public string DownloadLink { get; private set; }
|
||||
public string DownloadLocation { get; private set; }
|
||||
public bool IsExecutable { get; private set; }
|
||||
|
||||
[JsonConstructor]
|
||||
public OnlineDependencyInfo(string dependencyName, string downloadLink, string downloadLocation)
|
||||
public OnlineDependencyInfo(string dependencyName, string downloadLink, string downloadLocation, bool isExecutable)
|
||||
{
|
||||
DependencyName = dependencyName;
|
||||
DownloadLink = downloadLink;
|
||||
DownloadLocation = downloadLocation;
|
||||
IsExecutable = isExecutable;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text.Json.Serialization;
|
||||
@@ -37,6 +36,11 @@ public class PluginInfo
|
||||
|
||||
public static PluginInfo FromOnlineInfo(PluginOnlineInfo onlineInfo)
|
||||
{
|
||||
return new PluginInfo(onlineInfo.Name, onlineInfo.Version, onlineInfo.Dependencies.Select(dep => new KeyValuePair<string, string>(dep.DependencyName, dep.DownloadLocation)).ToDictionary());
|
||||
return new PluginInfo(onlineInfo.Name,
|
||||
onlineInfo.Version,
|
||||
onlineInfo.Dependencies
|
||||
.Where(dep => dep.IsExecutable)
|
||||
.Select(dep => new KeyValuePair<string, string>(dep.DependencyName, dep.DownloadLocation))
|
||||
.ToDictionary());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -43,7 +43,7 @@ public class PluginUpdater
|
||||
await ServerCom.DownloadFileAsync(pluginInfo.DownLoadLink, $"{DiscordBotCore.Application.CurrentApplication.ApplicationEnvironmentVariables["PluginFolder"]}/{pluginName}.dll", progressMeter);
|
||||
|
||||
foreach(OnlineDependencyInfo dependency in pluginInfo.Dependencies)
|
||||
await ServerCom.DownloadFileAsync(dependency.DownloadLocation, dependency.DownloadLocation, progressMeter);
|
||||
await ServerCom.DownloadFileAsync(dependency.DownloadLink, dependency.DownloadLocation, progressMeter);
|
||||
|
||||
await _PluginsManager.RemovePluginFromDatabase(pluginName);
|
||||
await _PluginsManager.AppendPluginToDatabase(PluginInfo.FromOnlineInfo(pluginInfo));
|
||||
|
||||
Reference in New Issue
Block a user