Example #1
0
        /// <summary>
        /// Determines if a given version is better suited to the range than a current version.
        /// </summary>
        public bool IsBetter(NuGet.Versioning.NuGetVersion current, NuGet.Versioning.NuGetVersion considering)
        {
            if (ReferenceEquals(current, considering))
            {
                return(false);
            }

            if (ReferenceEquals(considering, null))
            {
                return(false);
            }

            if (!Satisfies(considering))
            {
                return(false);
            }

            if (ReferenceEquals(current, null))
            {
                return(true);
            }

            if (!HasReleaseLabel)
            {
                return(VersionComparer.Compare(current, considering, VersionComparison.VersionRelease) == -1);
            }

            // We don't want to compare the revision number as ReleaseLabel versions do not use it as main version
            if (!considering.IsPrerelease && current.IsPrerelease)
            {
                considering = considering.Append("-").RevisionToLabel();
            }

            return(VersionComparer.Compare(current.Prepend(ReleaseLabel), considering.Prepend(ReleaseLabel), VersionComparison.PunditVersion) == -1);
        }