| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- using System;
- using System.Collections.Generic;
- using System.Diagnostics;
- using System.IO;
- using System.Linq;
- using ET;
- using MongoDB.Bson.Serialization;
- using MongoDB.Bson.Serialization.Attributes;
- using UnityEditor;
- using UnityEditor.PackageManager;
- using PackageInfo = UnityEditor.PackageManager.PackageInfo;
- using UnityEditor.PackageManager.Requests;
- using Debug = UnityEngine.Debug;
- namespace Hibzz.DependencyResolver
- {
- [InitializeOnLoad]
- public class DependencyResolver
- {
- //[MenuItem("ET/MoveToPackage")]
- static void MoveToPackage(string package, string version)
- {
- string packageName = default;
- string moveFileName = default;
- #if UNITY_6000_0_OR_NEWER
- packageName = package;
- moveFileName = "MoveToPackages_6";
- #else
- packageName =$"{package}@{version}";
- moveFileName = "MoveToPackages";
- #endif
- string dir = Path.Combine("Library/PackageCache", packageName);
- if (!Directory.Exists(dir))
- {
- return;
- }
-
- Debug.Log($"move package: {packageName}");
- Process process = ProcessHelper.PowerShell($"-NoExit -ExecutionPolicy Bypass -File ./Packages/com.etetet.init/{moveFileName}.ps1 {package} {version}", waitExit: true);
- Debug.Log(process.StandardOutput.ReadToEnd());
- }
-
- static DependencyResolver()
- {
- Events.registeredPackages += OnPackagesRegistered;
- }
- // Invoked when the package manager completes registering new packages
- static void OnPackagesRegistered(PackageRegistrationEventArgs packageRegistrationInfo)
- {
- if (packageRegistrationInfo.added.Count == 0 && packageRegistrationInfo.changedFrom.Count == 0)
- {
- return;
- }
-
- Debug.Log($"Packages Registered: {string.Join(" ", packageRegistrationInfo.added.Select(x=>x.name))}");
-
- // loop through all of the added packages and get their git
- // dependencies and add it to the list that contains all the
- // dependencies that need to be installed
- foreach (var package in packageRegistrationInfo.added)
- {
- if (!package.name.StartsWith("cn.etetet."))
- {
- continue;
- }
- MoveToPackage(package.name, package.version);
- }
-
- foreach (var package in packageRegistrationInfo.changedFrom)
- {
- if (!package.name.StartsWith("cn.etetet."))
- {
- continue;
- }
- MoveToPackage(package.name, package.version);
- }
-
- AssetDatabase.Refresh();
- }
-
- [MenuItem("ET/Init/RepairDependencies")]
- static void RepairDependencies()
- {
- foreach (var directory in Directory.GetDirectories("Library/PackageCache", "cn.etetet.*"))
- {
- string baseName = Path.GetFileName(directory);
- if (!baseName.StartsWith("cn.etetet."))
- {
- continue;
- }
-
- string[] ss = baseName.Split("@");
- string packageName = ss[0];
- #if UNITY_6000_0_OR_NEWER
- string version = "";
- #else
- string version = ss[1];
- #endif
- MoveToPackage(packageName, version);
- }
-
- AssetDatabase.Refresh();
-
- Debug.Log($"repaire package finish");
- }
- }
- }
|