Singularity/Assets/Plugins/ImaginationOverflow/UniversalDeepLinking/Editor/Xcode/PBXPath.cs
2024-05-06 11:45:45 -07:00

104 lines
3.1 KiB
C#

using System;
using System.IO;
namespace ImaginationOverflow.UniversalDeepLinking.Editor.Xcode
{
internal class PBXPath
{
/// Replaces '\' with '/'. We need to apply this function to all paths that come from the user
/// of the API because we store paths to pbxproj and on windows we may get path with '\' slashes
/// instead of '/' slashes
public static string FixSlashes(string path)
{
if (path == null)
return null;
return path.Replace('\\', '/');
}
public static void Combine(string path1, PBXSourceTree tree1, string path2, PBXSourceTree tree2,
out string resPath, out PBXSourceTree resTree)
{
if (tree2 == PBXSourceTree.Group)
{
resPath = Combine(path1, path2);
resTree = tree1;
return;
}
resPath = path2;
resTree = tree2;
}
// Combines two paths
public static string Combine(string path1, string path2)
{
if (path2.StartsWith("/"))
return path2;
if (path1.EndsWith("/"))
return path1 + path2;
if (path1 == "")
return path2;
if (path2 == "")
return path1;
return path1 + "/" + path2;
}
public static string GetDirectory(string path)
{
path = path.TrimEnd('/');
int pos = path.LastIndexOf('/');
if (pos == -1)
return "";
else
return path.Substring(0, pos);
}
public static string GetCurrentDirectory()
{
if (Environment.OSVersion.Platform != PlatformID.MacOSX &&
Environment.OSVersion.Platform != PlatformID.Unix)
{
throw new Exception("PBX project compatible current directory can only obtained on OSX");
}
string path = Directory.GetCurrentDirectory();
path = FixSlashes(path);
if (!IsPathRooted(path))
return "/" + path;
return path;
}
public static string GetFilename(string path)
{
int pos = path.LastIndexOf('/');
if (pos == -1)
return path;
else
return path.Substring(pos + 1);
}
public static bool IsPathRooted(string path)
{
if (path == null || path.Length == 0)
return false;
return path[0] == '/';
}
public static string GetFullPath(string path)
{
if (IsPathRooted(path))
return path;
else
return Combine(GetCurrentDirectory(), path);
}
public static string[] Split(string path)
{
if (string.IsNullOrEmpty(path))
return new string[]{};
return path.Split(new[]{'/'}, StringSplitOptions.RemoveEmptyEntries);
}
}
} // UnityEditor.iOS.Xcode