Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
ai.fluctio.fluctio-sim / EditorUtils / EditorGeneral / PackageManagerExtensions.cs
Size: Mime:
using System;
using System.Threading.Tasks;
using UnityEditor.PackageManager;
using UnityEditor.PackageManager.Requests;

namespace Fluctio.FluctioSim.EditorUtils.EditorGeneral
{
	public static class PackageManagerExtensions
	{

		public static Task<T> WaitAsync<T>(this Request<T> request)
		{
			var completionSource = new TaskCompletionSource<T>();
			EditorUpdateEvents.UpdateUntil += () =>
			{
				switch (request.Status)
				{
					case StatusCode.InProgress:
						return false;
					case StatusCode.Success:
						completionSource.SetResult(request.Result);
						break;
					case StatusCode.Failure:
						completionSource.SetException(new PackageManagerException(request.Error));
						break;
					default:
						throw new ArgumentOutOfRangeException();
				}
				return true;
			};
			return completionSource.Task;
		}
		
	}

	[Serializable]
	public class PackageManagerException : Exception
	{
		internal PackageManagerException (Error error) : base(error.message) {}
	}
}