public AssetStorePackage(FetchedInfo fetchedInfo, UpmPackage package) { m_Errors = new List <Error>(); m_Progress = PackageProgress.None; m_Type = PackageType.AssetStore; m_Name = package?.name ?? string.Empty; m_ProductId = fetchedInfo?.id.ToString(); m_Images = fetchedInfo?.images ?? new List <PackageImage>(); m_Links = fetchedInfo?.links ?? new List <PackageLink>(); m_VersionList = new AssetStoreVersionList(); m_UpmVersionList = package?.versionList as UpmVersionList ?? new UpmVersionList(); foreach (var version in m_UpmVersionList.all.Cast <UpmPackageVersion>()) { version.UpdateFetchedInfo(fetchedInfo); } if (string.IsNullOrEmpty(fetchedInfo?.id) || string.IsNullOrEmpty(fetchedInfo?.versionId)) { AddError(new Error(NativeErrorCode.Unknown, "Invalid product details.")); } else if (string.IsNullOrEmpty(package?.name)) { AddError(new Error(NativeErrorCode.Unknown, "Invalid package info.")); } }
internal static int GetVersionCount(this UpmPackage self) { return(self.versionList.all.Count()); }
internal static string GetName(this UpmPackage self) { return(self.name); }
internal static UpmPackageVersion GetInstalledVersion(this UpmPackage self) { return(self.installedVersion as UpmPackageVersion); }
/// <summary> /// Update package info. /// </summary> #if UNITY_2019_3_OR_NEWER void UpdatePackageVersions(UpmPackage package, IEnumerable <string> versions) { var pInfo = package.installedVersion as UpmPackageVersion; var json = JsonUtility.ToJson(pInfo.packageInfo); string packageName, repoUrl, installedRefName; PackageUtils.SplitPackageId(pInfo.uniqueId, out packageName, out repoUrl, out installedRefName); Debug.LogFormat("[UpdatePackageVersions] packageName = {0}, count = {1}, current = {2}", package.name, versions.Count(), pInfo.version); var versionInfos = versions .Select(ver => { Debug.LogFormat("[UpdatePackageVersions] version = {0}", ver); var splited = ver.Split(','); var refName = splited[0]; var version = splited[1]; var semver = SemVersion.Parse(version == refName ? version : version + "-" + refName); var info = JsonUtility.FromJson <PackageInfo>(json); Expose.FromObject(info).Set("m_Version", version); Expose.FromObject(info).Set("m_Git", new GitInfo("", refName)); var p = new UpmPackageVersion(info, false, semver, pInfo.displayName); // Update tag. PackageTag tag = PackageTag.Git | PackageTag.Installable | PackageTag.Removable; if ((semver.Major == 0 && string.IsNullOrEmpty(semver.Prerelease)) || PackageTag.Preview.ToString().Equals(semver.Prerelease.Split('.')[0], StringComparison.InvariantCultureIgnoreCase)) { tag |= PackageTag.Preview; } if (semver.IsRelease()) { tag |= PackageTag.Release; } else { if ((semver.Major == 0 && string.IsNullOrEmpty(semver.Prerelease)) || PackageTag.Preview.ToString().Equals(semver.Prerelease.Split('.')[0], StringComparison.InvariantCultureIgnoreCase)) { tag |= PackageTag.Preview; } } Expose.FromObject(p).Set("m_Tag", tag); Expose.FromObject(p).Set("m_IsFullyFetched", true); Expose.FromObject(p).Set("m_PackageId", string.Format("{0}@{1}#{2}", packageName, repoUrl, semver)); return(p); }) .Concat(new[] { pInfo }) .Where(p => p == pInfo || p.version != pInfo.version) .OrderBy(x => x.version) .ToArray(); if (0 < versionInfos.Length) { // Add verify tag on latest version. var latest = versionInfos .Where(x => x.version.IsRelease()) .LastOrDefault(); if (latest != null) { var tag = Expose.FromObject(latest).Get("m_Tag").As <PackageTag>(); tag |= PackageTag.Verified; Expose.FromObject(latest).Set("m_Tag", tag); } // Unlock version tag. var t = Expose.FromObject(pInfo).Get("m_Tag").As <PackageTag>(); Expose.FromObject(pInfo).Set("m_Tag", t & ~PackageTag.VersionLocked); Debug.LogFormat("[UpdatePackageVersions] package source changing"); package.UpdateVersions(versionInfos); } }