Ejemplo n.º 1
0
 private static bool IsPreviewInstalled(PackageInfo packageInfo)
 {
     return(packageInfo != null && packageInfo.isDirectDependency &&
            packageInfo.source == PackageSource.Registry && !SemVersion.Parse(packageInfo.version).IsRelease());
 }
Ejemplo n.º 2
0
 private void OnInstalledPreviewPackagesChanged()
 {
     if (!PackageManagerPrefs.instance.hasShowPreviewPackagesKey)
     {
         PackageManagerPrefs.instance.showPreviewPackagesFromInstalled = m_InstalledPackageInfos.Values.Any(p => !SemVersion.Parse(p.version).IsRelease());
     }
 }
Ejemplo n.º 3
0
        protected static IEnumerable <PackageInfo> FromUpmPackageInfo(PackageManager.PackageInfo info, bool isCurrent = true)
        {
            var packages    = new List <PackageInfo>();
            var displayName = info.displayName;

            if (string.IsNullOrEmpty(displayName))
            {
                displayName = info.name.Replace(PackageInfo.ModulePrefix, "");
                displayName = displayName.Replace(PackageInfo.UnityPrefix, "");
                displayName = new CultureInfo("en-US").TextInfo.ToTitleCase(displayName);
            }

            string author = info.author.name;

            if (string.IsNullOrEmpty(info.author.name) && info.name.StartsWith(PackageInfo.UnityPrefix))
            {
                author = "Unity Technologies Inc.";
            }

            var lastCompatible = info.versions.latestCompatible;
            var versions       = new List <string>();

            versions.AddRange(info.versions.compatible);
            if (versions.FindIndex(version => version == info.version) == -1)
            {
                versions.Add(info.version);

                versions.Sort((left, right) =>
                {
                    if (left == null || right == null)
                    {
                        return(0);
                    }

                    SemVersion leftVersion = left;
                    SemVersion righVersion = right;
                    return(leftVersion.CompareByPrecedence(righVersion));
                });

                SemVersion packageVersion = info.version;
                if (!string.IsNullOrEmpty(lastCompatible))
                {
                    SemVersion lastCompatibleVersion =
                        string.IsNullOrEmpty(lastCompatible) ? (SemVersion)null : lastCompatible;
                    if (packageVersion != null && string.IsNullOrEmpty(packageVersion.Prerelease) &&
                        packageVersion.CompareByPrecedence(lastCompatibleVersion) > 0)
                    {
                        lastCompatible = info.version;
                    }
                }
                else
                {
                    if (packageVersion != null && string.IsNullOrEmpty(packageVersion.Prerelease))
                    {
                        lastCompatible = info.version;
                    }
                }
            }

            foreach (var version in versions)
            {
                var isVersionCurrent = version == info.version && isCurrent;
                var isBuiltIn        = info.source == PackageSource.BuiltIn;
                var isVerified       = string.IsNullOrEmpty(SemVersion.Parse(version).Prerelease) && version == info.versions.recommended;
                var state            = (isBuiltIn || info.version == lastCompatible ||   !isCurrent) ? PackageState.UpToDate : PackageState.Outdated;

                // Happens mostly when using a package that hasn't been in production yet.
                if (info.versions.all.Length <= 0)
                {
                    state = PackageState.UpToDate;
                }

                if (info.errors.Length > 0)
                {
                    state = PackageState.Error;
                }

                var packageInfo = new PackageInfo
                {
                    Name         = info.name,
                    DisplayName  = displayName,
                    PackageId    = version == info.version ? info.packageId : null,
                    Version      = version,
                    Description  = info.description,
                    Category     = info.category,
                    IsInstalled  = isVersionCurrent,
                    IsLatest     = version == lastCompatible,
                    IsVerified   = isVerified,
                    Errors       = info.errors.ToList(),
                    Group        = GroupName(info.source, info.type),
                    Type         = info.type,
                    State        = state,
                    Origin       = isBuiltIn || isVersionCurrent ? info.source : PackageSource.Registry,
                    Author       = author,
                    Info         = info,
                    HasFullFetch = version == info.version
                };

                if (version == info.version && !string.IsNullOrEmpty(info.resolvedPath))
                {
                    var loadedSamples = SampleJsonHelper.LoadSamplesFromPackageJson(info.resolvedPath);
                    packageInfo.Samples = new List <Sample>();
                    foreach (var sample in loadedSamples)
                    {
                        sample.resolvedPath = Path.Combine(info.resolvedPath, sample.path);
                        sample.importPath   = IOUtils.CombinePaths
                                              (
                            Application.dataPath,
                            "Samples",
                            IOUtils.SanitizeFileName(packageInfo.DisplayName),
                            packageInfo.Version.ToString(),
                            IOUtils.SanitizeFileName(sample.displayName)
                                              );
                        packageInfo.Samples.Add(new Sample(sample));
                    }
                }
                packages.Add(packageInfo);
            }

            return(packages);
        }
Ejemplo n.º 4
0
        private string GetButtonText(PackageAction action, bool inProgress = false, SemVersion version = null)
        {
            var actionText = inProgress ? k_PackageActionInProgressVerbs[(int)action] : k_PackageActionVerbs[(int)action];

            return(version == null ? $"{actionText}" : $"{actionText} {version}");
        }
Ejemplo n.º 5
0
        protected static IEnumerable <PackageInfo> FromUpmPackageInfo(PackageManager.PackageInfo info, bool isCurrent = true)
        {
            var packages    = new List <PackageInfo>();
            var displayName = info.displayName;

            if (string.IsNullOrEmpty(displayName))
            {
                displayName = info.name.Replace("com.unity.modules.", "");
                displayName = displayName.Replace("com.unity.", "");
                displayName = new CultureInfo("en-US").TextInfo.ToTitleCase(displayName);
            }

            var lastCompatible = info.versions.latestCompatible;
            var versions       = new List <string>();

            versions.AddRange(info.versions.compatible);
            if (versions.FindIndex(version => version == info.version) == -1)
            {
                versions.Add(info.version);

                versions.Sort((left, right) =>
                {
                    if (left == null || right == null)
                    {
                        return(0);
                    }

                    SemVersion leftVersion = left;
                    SemVersion righVersion = right;
                    return(leftVersion.CompareByPrecedence(righVersion));
                });

                SemVersion packageVersion = info.version;
                if (!string.IsNullOrEmpty(lastCompatible))
                {
                    SemVersion lastCompatibleVersion =
                        string.IsNullOrEmpty(lastCompatible) ? (SemVersion)null : lastCompatible;
                    if (packageVersion != null && string.IsNullOrEmpty(packageVersion.Prerelease) &&
                        packageVersion.CompareByPrecedence(lastCompatibleVersion) > 0)
                    {
                        lastCompatible = info.version;
                    }
                }
                else
                {
                    if (packageVersion != null && string.IsNullOrEmpty(packageVersion.Prerelease))
                    {
                        lastCompatible = info.version;
                    }
                }
            }

            foreach (var version in versions)
            {
                var isVersionCurrent = version == info.version && isCurrent;
                var isBuiltIn        = info.source == PackageSource.BuiltIn;
                var state            = (isBuiltIn || info.version == lastCompatible) ? PackageState.UpToDate : PackageState.Outdated;

                // Happens mostly when using a package that hasn't been in production yet.
                if (info.versions.all.Length <= 0)
                {
                    state = PackageState.UpToDate;
                }

                if (info.errors.Length > 0)
                {
                    state = PackageState.Error;
                }

                var packageInfo = new PackageInfo
                {
                    Name        = info.name,
                    DisplayName = displayName,
                    PackageId   = version == info.version ? info.packageId : null,
                    Version     = version,
                    Description = info.description,
                    Category    = info.category,
                    IsCurrent   = isVersionCurrent,
                    IsLatest    = version == lastCompatible,
                    IsVerified  = version == info.versions.recommended,
                    Errors      = info.errors.ToList(),
                    Group       = GroupName(info.source),
                    State       = state,
                    Origin      = isBuiltIn || isVersionCurrent ? info.source : PackageSource.Registry,
                    Author      = null,
                    Info        = info
                };

                packages.Add(packageInfo);
            }

            return(packages);
        }