Просмотр исходного кода

增加一个工具ET->RepairDependencies,依赖安装失败,可以点这个修复,或者有些包误删,也可以点这个修复

tanghai 1 год назад
Родитель
Сommit
14cd5ed900

+ 44 - 1
Packages/cn.etetet.init/Editor/GitDependencyResolver/DependencyResolver.cs

@@ -35,7 +35,6 @@ namespace Hibzz.DependencyResolver
         
         static AddAndRemoveRequest packageInstallationRequest;
 
-        // called by the attribute [InitializeOnLoad]
         static DependencyResolver()
         {
             Events.registeredPackages += OnPackagesRegistered;
@@ -188,5 +187,49 @@ namespace Hibzz.DependencyResolver
             EditorUtility.ClearProgressBar();
             EditorApplication.update -= DisplayProgress;
         }
+        
+        [MenuItem("ET/RepairDependencies")]
+        static void RepairDependencies()
+        {
+            Dictionary<string, string> dependencies = new();
+            List<PackageInfo> installedPackages = PackageInfo.GetAllRegisteredPackages().ToList();
+            
+            foreach (var package in installedPackages)
+            {
+                if (!GetDependencies(package, out PackageGitDependency packageDependencies))
+                {
+                    continue;
+                }
+                
+                foreach (var gitDependency in packageDependencies.gitDependencies)
+                {
+                    if (IsInCollection(gitDependency.Key, installedPackages))
+                    {
+                        continue;
+                    }
+                    Debug.Log($"Dependency not found: {gitDependency.Key}");
+                    dependencies.Add(gitDependency.Key, gitDependency.Value);
+                }
+            }
+
+            if (dependencies.Count == 0)
+            {
+                Debug.Log($"git Dependencies are all installed");
+                return;
+            }
+            
+            if (!Application.isBatchMode &&
+                !EditorUtility.DisplayDialog(
+                    $"Dependency Resolver",
+                    $"The following dependencies are required:\n{string.Join("\n", dependencies.Keys)}",
+                    "Install Dependencies",
+                    "Cancel"))
+            {
+                // user decided to cancel the installation of the dependencies...
+                return;
+            }
+            
+            InstallDependencies(dependencies);
+        }
     }
 }