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
|