using System.Collections.Generic; using System.Linq; using System.Text.Json.Serialization; using DiscordBotCore.Online.Helpers; namespace DiscordBotCore.Plugin; public class PluginInfo { public string PluginName { get; private set; } public PluginVersion PluginVersion { get; private set; } public string FilePath { get; private set; } public Dictionary ListOfDependancies {get; private set;} public bool IsMarkedToUninstall {get; internal set;} public bool IsOfflineAdded { get; internal set; } public bool IsDisabled { get; internal set; } [JsonConstructor] public PluginInfo(string pluginName, PluginVersion pluginVersion, Dictionary listOfDependancies, bool isMarkedToUninstall, bool isOfflineAdded, bool isDisabled) { PluginName = pluginName; PluginVersion = pluginVersion; ListOfDependancies = listOfDependancies; IsMarkedToUninstall = isMarkedToUninstall; FilePath = $"{Application.CurrentApplication.ApplicationEnvironmentVariables["PluginFolder"]}/{pluginName}.dll"; IsOfflineAdded = isOfflineAdded; IsDisabled = isDisabled; } public PluginInfo(string pluginName, PluginVersion pluginVersion, Dictionary listOfDependancies) { PluginName = pluginName; PluginVersion = pluginVersion; ListOfDependancies = listOfDependancies; IsMarkedToUninstall = false; FilePath = $"{Application.CurrentApplication.ApplicationEnvironmentVariables["PluginFolder"]}/{pluginName}.dll"; IsOfflineAdded = false; IsDisabled = false; } public static PluginInfo FromOnlineInfo(PluginOnlineInfo onlineInfo) { return new PluginInfo(onlineInfo.Name, onlineInfo.Version, onlineInfo.Dependencies .Where(dep => dep.IsExecutable) .Select(dep => new KeyValuePair(dep.DependencyName, dep.DownloadLocation)) .ToDictionary()); } }