41 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System.IO;
 | |
| 
 | |
| #if UNITY_2020_1_OR_NEWER
 | |
| using UnityEditor.PackageManager;
 | |
| #endif
 | |
| 
 | |
| namespace Packages.Rider.Editor.ProjectGeneration
 | |
| {
 | |
|   internal static class PackageManagerTracker
 | |
|   {
 | |
|     private static bool HasManifestJsonLastWriteTimeChanged()
 | |
|     {
 | |
|       if (!LastWriteTracker.IsUnityCompatible()) return false;
 | |
|       var directoryInfo = new DirectoryInfo(Directory.GetCurrentDirectory());
 | |
|       var manifestFile = new FileInfo(Path.Combine(directoryInfo.FullName, "Packages/manifest.json"));
 | |
|       if (manifestFile.Exists)
 | |
|       {
 | |
|         // for the manifest.json, we store the LastWriteTime here
 | |
|         var res = manifestFile.LastWriteTime > RiderScriptEditorPersistedState.instance.ManifestJsonLastWrite;
 | |
|         if (res) RiderScriptEditorPersistedState.instance.ManifestJsonLastWrite = manifestFile.LastWriteTime;
 | |
|         return res;
 | |
|       }
 | |
| 
 | |
|       return false;
 | |
|     }
 | |
| 
 | |
|     /// <summary>
 | |
|     /// If the manifest.json was changed outside Unity and Rider calls Unity to Refresh, we should call PM to Refresh its state also
 | |
|     /// </summary>
 | |
|     /// <param name="checkProjectFiles"></param>
 | |
|     internal static void SyncIfNeeded(bool checkProjectFiles)
 | |
|     {
 | |
| #if UNITY_2020_1_OR_NEWER
 | |
|       if (checkProjectFiles && HasManifestJsonLastWriteTimeChanged())
 | |
|       {
 | |
|         Client.Resolve();
 | |
|       }
 | |
| #endif
 | |
|     }
 | |
|   }
 | |
| } |