104 lines
3.1 KiB
C#
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
|