using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Xml; using System.Xml.Linq; using System.Xml.XPath; #if UNITY_XCODE_API_BUILD namespace UnityEditor.iOS.Xcode #else namespace UnityEditor.iOS.Xcode.Custom #endif { internal class XcScheme { XDocument m_Doc; // Returns the current build configuration. Returns null if it is not set. public string GetBuildConfiguration() { var el = m_Doc.Root.XPathSelectElement("./LaunchAction"); if (el == null) throw new Exception("The xcscheme document does not contain build configuration setting"); var attr = el.Attribute("buildConfiguration"); if (attr == null) return null; return attr.Value; } public void SetBuildConfiguration(string buildConfigName) { var el = m_Doc.Root.XPathSelectElement("./LaunchAction"); if (el == null) throw new Exception("The xcscheme document does not contain build configuration setting"); el.SetAttributeValue("buildConfiguration", buildConfigName); } public void ReadFromFile(string path) { ReadFromString(File.ReadAllText(path)); } public void ReadFromStream(TextReader tr) { ReadFromString(tr.ReadToEnd()); } public void ReadFromString(string text) { m_Doc = PlistDocument.ParseXmlNoDtd(text); } public void WriteToFile(string path) { System.Text.Encoding utf8WithoutBom = new System.Text.UTF8Encoding(false); File.WriteAllText(path, WriteToString(), utf8WithoutBom); } public void WriteToStream(TextWriter tw) { tw.Write(WriteToString()); } public string WriteToString() { return PlistDocument.CleanDtdToString(m_Doc, null).Replace("\r\n", "\n"); } } } // namespace UnityEditor.iOS.XCode