using System;
using System.IO;
using UnityEngine;
namespace SUnityEditorTools
{
///
/// 硬链接目录工具。。。支持win+mac, 需要win 7以上才有mklink命令
///
public class SUnityEditorTools
{
///
/// 删除硬链接目录
///
///
public static void DeleteLink(string linkPath)
{
var os = Environment.OSVersion;
if (os.ToString().Contains("Windows"))
{
SEditorUtils.ExecuteCommand(String.Format("rmdir \"{0}\"", linkPath));
}
else if (os.ToString().Contains("Unix"))
{
SEditorUtils.ExecuteCommand(String.Format("rm -Rf \"{0}\"", linkPath));
}
else
{
Debug.LogError(String.Format("[SymbolLinkFolder]Error on OS: {0}", os.ToString()));
}
}
public static void SymbolLinkFolder(string srcFolderPath, string targetPath)
{
var os = Environment.OSVersion;
if (os.ToString().Contains("Windows"))
{
SEditorUtils.ExecuteCommand(String.Format("mklink /J \"{0}\" \"{1}\"", targetPath, srcFolderPath));
}
else if (os.ToString().Contains("Unix"))
{
var fullPath = Path.GetFullPath(targetPath);
if (fullPath.EndsWith("/"))
{
fullPath = fullPath.Substring(0, fullPath.Length - 1);
fullPath = Path.GetDirectoryName(fullPath);
}
SEditorUtils.ExecuteCommand(String.Format("ln -s {0} {1}", Path.GetFullPath(srcFolderPath), fullPath));
}
else
{
Debug.LogError(String.Format("[SymbolLinkFolder]Error on OS: {0}", os.ToString()));
}
}
///
/// 删除指定目录所有硬链接
///
///
public static void DeleteAllLinks(string assetBundlesLinkPath)
{
if (Directory.Exists(assetBundlesLinkPath))
{
foreach (var dirPath in Directory.GetDirectories(assetBundlesLinkPath))
{
DeleteLink(dirPath);
}
}
}
}
}