private async Task DownloadConfigForPlugin(AvailablePlugin plugin, string configPath) { if (!plugin.GitConfigURL.Contains("https://") && !plugin.GitConfigURL.Contains("$")) { LogMessage("Wrong config url: " + plugin.GitConfigURL, 10); return; } if (plugin.GitConfigURL.Contains("https://")) { using (var webClient = new WebClient()) { await webClient.DownloadFileTaskAsync(plugin.GitConfigURL, configPath); } } else { File.WriteAllLines(configPath, plugin.GitConfigURL.Split('$')); } var result = CheckAddPluginsByConfig(); if (result != null) { plugin.InstalledPlugin = result; await CheckPluginUpdate(result); result.UpdatePlugin(); plugin.bInstaled = true; } }
private async Task DownloadConfigForPlugin(AvailablePlugin plugin, string configPath, string pluginDir) { if (!plugin.GitConfigURL.Contains("https://") && !plugin.GitConfigURL.Contains("$")) { LogMessage("Wrong config url: " + plugin.GitConfigURL, 10); return; } if (plugin.GitConfigURL.Contains("https://")) { using (var webClient = new WebClient()) { await webClient.DownloadFileTaskAsync(plugin.GitConfigURL, configPath); } } else { Directory.CreateDirectory(Path.GetDirectoryName(configPath)); File.WriteAllLines(configPath, plugin.GitConfigURL.Split('$')); } var result = CheckAddPluginsByConfig(); if (result != null) { plugin.InstalledPlugin = result; await CheckPluginUpdate(result); result.UpdatePlugin(); plugin.bInstaled = true; PoeHUD.Hud.PluginExtension.PluginExtensionPlugin.LoadPluginFromDirectory(pluginDir); } }
public static List <AvailablePlugin> Parse(string pluginDirectory) { List <AvailablePlugin> AllAvailablePlugins = null; var allPluginsConfig = Path.Combine(pluginDirectory, AvailablePluginsConfigFile); if (!File.Exists(allPluginsConfig)) { return(AllAvailablePlugins); } AllAvailablePlugins = new List <AvailablePlugin>(); var cfgLines = File.ReadAllLines(allPluginsConfig); AvailablePlugin currentPlugin = null; for (int i = 0; i < cfgLines.Length; i++) { var line = cfgLines[i]; if (line.Replace(" ", "").Length == 0 || line.StartsWith("//") || line.StartsWith("#")) { continue; } line = line.Trim(); int pluginNameIndex = line.IndexOf(KEYWORD_PLUGINNAME); if (pluginNameIndex != -1) { CheckAddPlugin(AllAvailablePlugins, currentPlugin, i); currentPlugin = new AvailablePlugin(); currentPlugin.PluginName = line.Substring(pluginNameIndex + KEYWORD_PLUGINNAME.Length).Trim(); continue; } int gitNameIndex = line.IndexOf(KEYWORD_GITNAME); if (gitNameIndex != -1) { currentPlugin.GitName = line.Substring(gitNameIndex + KEYWORD_GITNAME.Length).Trim(); continue; } int gitOwnerIndex = line.IndexOf(KEYWORD_GITOWNER); if (gitOwnerIndex != -1) { currentPlugin.GitOwner = line.Substring(gitOwnerIndex + KEYWORD_GITOWNER.Length).Trim(); continue; } int gitConfigUrlIndex = line.IndexOf(KEYWORD_GITURL); if (gitConfigUrlIndex != -1) { currentPlugin.GitConfigURL = line.Substring(gitConfigUrlIndex + KEYWORD_GITURL.Length).Trim(); continue; } int descriptionlIndex = line.IndexOf(KEYWORD_DESCRIPTION); if (descriptionlIndex != -1) { currentPlugin.Description = line.Substring(descriptionlIndex + KEYWORD_DESCRIPTION.Length).Trim(); continue; } } CheckAddPlugin(AllAvailablePlugins, currentPlugin, cfgLines.Length - 1); var pluginsDir = @"plugins\"; var pluginDirs = (new DirectoryInfo(pluginsDir)).GetDirectories().Select(x => x.FullName).ToList(); AllAvailablePlugins.ForEach(x => x.bOwned = pluginDirs.Any(y => y.Contains(pluginsDir + x.PluginName))); return(AllAvailablePlugins); }
private static void CheckAddPlugin(List <AvailablePlugin> AllAvailablePlugins, AvailablePlugin currentPlugin, int i) { if (currentPlugin != null) { if (string.IsNullOrEmpty(currentPlugin.PluginName)) { BasePlugin.LogError($"AvailablePluginsConfigParser: Empty plugin name! (Under line: {i - 1})", 10); } else if (string.IsNullOrEmpty(currentPlugin.GitName)) { BasePlugin.LogError($"AvailablePluginsConfigParser: No parameter GitName in plugin: {currentPlugin.PluginName}", 10); } else if (string.IsNullOrEmpty(currentPlugin.GitOwner)) { BasePlugin.LogError($"AvailablePluginsConfigParser: No parameter GitOwner in plugin: {currentPlugin.PluginName}", 10); } else if (string.IsNullOrEmpty(currentPlugin.GitConfigURL)) { BasePlugin.LogError($"AvailablePluginsConfigParser: No parameter GitConfigURL in plugin: {currentPlugin.PluginName}", 10); } else { AllAvailablePlugins.Add(currentPlugin); } } }