| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- using System;
- using System.IO;
- using UnityEngine;
- namespace SUnityEditorTools
- {
- /// <summary>
- /// 硬链接目录工具。。。支持win+mac, 需要win 7以上才有mklink命令
- /// </summary>
- public class SUnityEditorTools
- {
- /// <summary>
- /// 删除硬链接目录
- /// </summary>
- /// <param name="linkPath"></param>
- 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()));
- }
- }
- /// <summary>
- /// 删除指定目录所有硬链接
- /// </summary>
- /// <param name="assetBundlesLinkPath"></param>
- public static void DeleteAllLinks(string assetBundlesLinkPath)
- {
- if (Directory.Exists(assetBundlesLinkPath))
- {
- foreach (var dirPath in Directory.GetDirectories(assetBundlesLinkPath))
- {
- DeleteLink(dirPath);
- }
- }
- }
- }
- }
|