using System.Collections.Generic; using System.IO; using System.Xml; using UnityEngine; namespace Azerion.BlueStack.Editor.Android { public class AndroidDependencyParser : IDependencyParser { List IDependencyParser.ParseDependencies(string xmlFilePath) { var xmlDoc = new XmlDocument(); xmlDoc.Load(xmlFilePath); const string xmlPathPattern = "//dependencies/androidPackages"; var androidPackagesNode = xmlDoc.SelectSingleNode(xmlPathPattern); var dependencies = new List(); if (androidPackagesNode == null) return dependencies; foreach (XmlNode androidPackageNode in androidPackagesNode.ChildNodes) { var specAttribute = androidPackageNode.Attributes?["spec"]; if (specAttribute == null) continue; dependencies.Add(new AndroidDependency(specAttribute.Value, "", "")); } return dependencies; } List IDependencyParser.ParseBlueStackDependencies( string xmlFilePath, HashSet activeNames ) { if (!File.Exists(xmlFilePath)) { Debug.LogError("Dependencies file not found at: " + xmlFilePath); return new List(); } var xmlDoc = new XmlDocument(); xmlDoc.Load(xmlFilePath); const string xmlPathPattern = "//dependencies/androidPackages"; var androidPackagesNode = xmlDoc.SelectSingleNode(xmlPathPattern); var dependencies = new List(); if (androidPackagesNode == null) return dependencies; foreach (XmlNode androidPackageNode in androidPackagesNode.ChildNodes) { var aliasAttribute = androidPackageNode.Attributes?["alias"]; var specAttribute = androidPackageNode.Attributes?["spec"]; var versionAttribute = androidPackageNode.Attributes?["version"]; var alias = aliasAttribute != null ? aliasAttribute.Value : specAttribute?.Value; var name = specAttribute?.Value; var version = versionAttribute?.Value; if (name == null) continue; bool active = activeNames != null && activeNames.Contains(name); dependencies.Add( new BlueStackDependency(alias, name, version, androidPackageNode, active) ); } return dependencies; } } }