Exemple #1
0
        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);
 }
Exemple #5
0
        /// <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);
            }
        }