using System.Collections.Generic; using System.IO; using System.Xml; using UnityEngine; namespace Azerion.BlueStack.Editor.iOS { public class IOSDependencyParser : IDependencyParser { List IDependencyParser.ParseDependencies(string xmlFilePath) { XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(xmlFilePath); string xmlPathPattern = "//dependencies/iosPods"; XmlNodeList nodeList = xmlDoc.SelectNodes(xmlPathPattern); List dependencies = new List(); if (nodeList != null) { foreach (XmlNode node in nodeList) { XmlNode iosPod = node.FirstChild; if (iosPod.Attributes == null) continue; var nameAttribute = iosPod.Attributes["name"]; var versionAttribute = iosPod.Attributes["version"]; if (nameAttribute == null || versionAttribute == null) continue; var name = nameAttribute.Value; var version = versionAttribute.Value; dependencies.Add(new Dependency(name, version)); } } return dependencies; } List IDependencyParser.ParseBlueStackDependencies( string xmlFilePath, HashSet activeNames ) { if (!File.Exists(xmlFilePath)) { Debug.LogError("Dependencies file not found at: " + xmlFilePath); return new List(); } XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(xmlFilePath); string xmlPathPattern = "//dependencies/iosPods/iosPod"; XmlNodeList podNodes = xmlDoc.SelectNodes(xmlPathPattern); List dependencies = new List(); if (podNodes != null && podNodes.Count > 0) { foreach (XmlNode pod in podNodes) { if (pod.Attributes == null) continue; var aliasAttribute = pod.Attributes["alias"]; var nameAttribute = pod.Attributes["name"]; var versionAttribute = pod.Attributes["version"]; var alias = aliasAttribute != null ? aliasAttribute.Value : nameAttribute?.Value; var name = nameAttribute?.Value; var version = versionAttribute?.Value; if (name == null) continue; bool active = activeNames != null && activeNames.Contains(name); dependencies.Add(new BlueStackDependency(alias, name, version, pod, active)); } } return dependencies; } } }