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)); }
/// <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('.'))); }
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); }
/// <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); } }
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); } }
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); } }
/// <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); } }
/// <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); }
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); }
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); }
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"); } }