예제 #1
0
        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;
            }
        }
예제 #2
0
        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);
            }
        }
예제 #3
0
        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);
        }
예제 #4
0
 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);
         }
     }
 }