using System.Threading.Tasks; using UnityEditor; using UnityEditor.PackageManager; using UnityEngine; using UnityEngine.Assertions; using System.Linq; namespace SubPackage { static class SubPackageCleanup { const string k_Name = "com.unity.cloud.ktx.webgl-2023"; const string k_DisplayName = "KTX for Unity WebGL 2023"; static readonly string[] k_MainPackageNames = { "com.unity.cloud.ktx", "com.atteneder.ktx" }; #if !DISABLE_SUB_PACKAGE_CHECK [InitializeOnLoadMethod] #endif static async void InitializeOnLoad() { var request = Client.List(offlineMode: true, includeIndirectDependencies: true); while (!request.IsCompleted) await Task.Yield(); Assert.AreEqual(StatusCode.Success, request.Status); var mainPackageInManifest = request.Result.Select(package => package.name).Intersect(k_MainPackageNames).Any(); if (!mainPackageInManifest) { Debug.LogWarning($"Package {k_DisplayName} ({k_Name}) is missing its main package KTX for Unity and should get removed."); } } } }