public int CompareTo(Semver other)
        {
            var difference = Major.CompareTo(other.Major);

            if (difference != 0)
            {
                return(difference);
            }

            difference = Minor.CompareTo(other.Minor);
            if (difference != 0)
            {
                return(difference);
            }

            difference = Patch.CompareTo(other.Patch);
            if (difference != 0)
            {
                return(difference);
            }

            difference = Prerelease.CompareTo(other.Prerelease);
            if (difference != 0)
            {
                return(difference);
            }

            return(Trailer.CompareTo(other.Trailer));
        }
Beispiel #2
0
 /// <summary>
 /// Compares this object with another SemanticVersion according to Semver 2.0.0 precedence rules.
 /// </summary>
 /// <param name="other">another SemanticVersion</param>
 /// <returns>0 if equal, -1 if the current object has lower precedence, or 1 if the current object has higher precedence</returns>
 public int ComparePrecedence(SemanticVersion other)
 {
     if (Major != other.Major)
     {
         return(Major.CompareTo(other.Major));
     }
     if (Minor != other.Minor)
     {
         return(Minor.CompareTo(other.Minor));
     }
     if (Patch != other.Patch)
     {
         return(Patch.CompareTo(other.Patch));
     }
     if (String.IsNullOrEmpty(Prerelease) && String.IsNullOrEmpty(other.Prerelease))
     {
         return(0); // build component is ignored in precedence comparison
     }
     // *no* prerelease component always has higher precedence than *any* prerelease component
     if (String.IsNullOrEmpty(Prerelease))
     {
         return(1);
     }
     if (String.IsNullOrEmpty(other.Prerelease))
     {
         return(-1);
     }
     return(CompareIdentifiers(Prerelease.Split('.'), other.Prerelease.Split('.')));
 }
Beispiel #3
0
        protected override NameValueCollection GetQueryString()
        {
            var queryString = HttpUtility.ParseQueryString(string.Empty);

            queryString["q"]          = Query;
            queryString["prerelease"] = Prerelease.ToString();

            if (Skip.HasValue)
            {
                queryString["skip"] = Skip.ToString();
            }

            if (Take.HasValue)
            {
                queryString["take"] = Take.ToString();
            }

            if (IncludeSemVer2)
            {
                queryString["semVerLevel"] = "2.0.0";
            }

            if (PackageType != null)
            {
                queryString["packageType"] = PackageType;
            }

            return(queryString);
        }
Beispiel #4
0
 /// <summary>
 /// Returns a hash code that ignores the <see cref="BuildMetaData"/>.
 /// </summary>
 /// <returns></returns>
 public override int GetHashCode()
 {
     unchecked
     {
         return(((Major * 31 + Minor) * 31 + Patch) * 31 + Prerelease.GetHashCode());
     }
 }
        protected override NameValueCollection GetQueryString()
        {
            var queryString = System.Web.HttpUtility.ParseQueryString(string.Empty);

            queryString["q"]            = Query;
            queryString["prerelease"]   = Prerelease.ToString();
            queryString["ignoreFilter"] = IgnoreFilter.ToString();
            return(queryString);
        }
 public override int GetHashCode()
 {
     unchecked
     {
         int result = Major.GetHashCode();
         result = result * 31 + Minor.GetHashCode();
         result = result * 31 + Patch.GetHashCode();
         result = result * 31 + Prerelease.GetHashCode();
         result = result * 31 + Build.GetHashCode();
         return(result);
     }
 }
Beispiel #7
0
 public override int GetHashCode()
 {
     unchecked
     {
         var result = Major.GetHashCode();
         result = result * 31 + Minor.GetHashCode();
         result = result * 31 + Patch.GetHashCode();
         result = result * 31 + (Prerelease?.GetHashCode() ?? string.Empty.GetHashCode());
         result = result * 31 + (Build?.GetHashCode() ?? string.Empty.GetHashCode());
         return(result);
     }
 }
Beispiel #8
0
 public override int GetHashCode()
 {
     unchecked
     {
         var hashCode = (int)Major;
         hashCode = (hashCode * 397) ^ (int)Minor;
         hashCode = (hashCode * 397) ^ (int)Patch;
         hashCode = (hashCode * 397) ^ (Prerelease != null ? Prerelease.GetHashCode() : 0);
         hashCode = (hashCode * 397) ^ (Build != null ? Build.GetHashCode() : 0);
         return(hashCode);
     }
 }
Beispiel #9
0
 /// <summary>
 /// Returns a hash code for this instance.
 /// </summary>
 /// <returns>
 /// A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
 /// </returns>
 public override int GetHashCode()
 {
     unchecked
     {
         // verify this. Some versions start result = 17. Some use 37 instead of 31
         int result = Major.GetHashCode();
         result = result * 31 + Minor.GetHashCode();
         result = result * 31 + Patch.GetHashCode();
         result = result * 31 + Prerelease.GetHashCode();
         result = result * 31 + Build.GetHashCode();
         return(result);
     }
 }
Beispiel #10
0
        /// <summary>
        /// Serves as a hash function for the objects of <see cref="SemanticVersion"/> and its derived types.
        /// </summary>
        /// <returns>A hash code for the current <see cref="SemanticVersion"/> instance.</returns>
        public override int GetHashCode()
        {
            var hashCode = Constants.HashInitializer;

            unchecked
            {
                hashCode = Constants.HashMultiplier * hashCode + Major.GetHashCode();
                hashCode = Constants.HashMultiplier * hashCode + Minor.GetHashCode();
                hashCode = Constants.HashMultiplier * hashCode + Patch.GetHashCode();
                hashCode = Constants.HashMultiplier * hashCode + (Prerelease?.GetHashCode() ?? 0);
            }

            return(hashCode);
        }
Beispiel #11
0
        protected virtual NameValueCollection GetQueryString()
        {
            var queryString = System.Web.HttpUtility.ParseQueryString(string.Empty);

            queryString["q"]          = Query;
            queryString["prerelease"] = Prerelease.ToString();

            if (IncludeTestData)
            {
                queryString["testData"] = "true";
            }

            return(queryString);
        }
Beispiel #12
0
        public override bool Equals(object obj)
        {
            if (ReferenceEquals(obj, null))
            {
                return(false);
            }

            if (ReferenceEquals(this, obj))
            {
                return(true);
            }

            var other = obj as SemVer;

            return((Major == other?.Major) &&
                   (Minor == other.Minor) &&
                   (Patch == other.Patch) &&
                   Prerelease.SafeOrdinalEquals(other.Prerelease) &&
                   Build.SafeOrdinalEquals(other.Build));
        }
        protected override NameValueCollection GetQueryString()
        {
            var queryString = HttpUtility.ParseQueryString(string.Empty);

            queryString["q"]            = Query;
            queryString["prerelease"]   = Prerelease.ToString();
            queryString["ignoreFilter"] = IgnoreFilter.ToString();
            queryString["CountOnly"]    = CountOnly.ToString();

            if (Skip.HasValue)
            {
                queryString["Skip"] = Skip.ToString();
            }

            if (Take.HasValue)
            {
                queryString["Take"] = Take.ToString();
            }

            if (IncludeSemVer2)
            {
                queryString["semVerLevel"] = "2.0.0";
            }

            if (!string.IsNullOrWhiteSpace(SortBy))
            {
                queryString["sortBy"] = SortBy;
            }

            if (LuceneQuery.HasValue)
            {
                queryString["luceneQuery"] = LuceneQuery.ToString();
            }

            return(queryString);
        }
Beispiel #14
0
 public override string ToString()
 => $"{Major}.{Minor}.{Patch}{Prerelease.SafeInvariantFormat("-{0}")}{Build.SafeInvariantFormat("+{0}")}";
 /// <summary>
 /// The default hash function.
 /// </summary>
 /// <returns>A hash code for the current object.</returns>
 public override int GetHashCode()
 {
     return(Major ^ Minor ^ Patch ^ (!string.IsNullOrEmpty(Prerelease) ? Prerelease.GetHashCode() : 0) ^
            (!string.IsNullOrEmpty(BuildMetadata) ? BuildMetadata.GetHashCode() : 0));
 }
        protected override async Task ProcessRecordAsync()
        {
            var repositoriesClient = GitHubClient.Repository;
            var repository         = await repositoriesClient.GetForOrg(Organization, Repository);

            var release = await repositoriesClient.Release.GetAll(repository.Id).ToObservable().SelectMany(list => list).Where(_ => _.Name == ReleaseName)
                          .IgnoreException <Release, NotFoundException>(this, ReleaseName).DefaultIfEmpty();

            if (release == null)
            {
                WriteVerbose("Creating new release");
                var newRelease = new NewRelease(ReleaseName)
                {
                    Draft = Draft.ToBool(), Body = ReleaseNotes, Name = ReleaseName, Prerelease = Prerelease.ToBool()
                };
                release = await repositoriesClient.Release.Create(repository.Id, newRelease);

                WriteVerbose("Uploading assets");

                if (Files != null)
                {
                    await Files.ToObservable(ImmediateScheduler.Instance)
                    .Do(file => WriteVerbose($"Uploading {file}"))
                    .Select(file => Observable.Using(() => File.OpenRead(file), stream => {
                        var fileName           = Path.GetFileName(file);
                        var releaseAssetUpload = new ReleaseAssetUpload()
                        {
                            FileName = fileName, ContentType = MimeSharp.Mime.Lookup(fileName), RawData = stream
                        };
                        return(Observable.FromAsync(() => repositoriesClient.Release.UploadAsset(release, releaseAssetUpload)));
                    })).Concat();
                }
                WriteObject(release);
            }
            else
            {
                throw new NotSupportedException($"Release {ReleaseName} exists");
            }
        }