Skip to content

Commit

Permalink
Fix bug with comparison (#55)
Browse files Browse the repository at this point in the history
* Fix issues with comparison usage

* Make

* Update snapshot because of the order change
  • Loading branch information
tahirmt authored Sep 29, 2022
1 parent 53639f1 commit ef36e0a
Show file tree
Hide file tree
Showing 15 changed files with 153 additions and 31 deletions.
11 changes: 8 additions & 3 deletions Sources/ChangeLogGenerator/Fetcher/Fetcher.swift
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
//
// Fetcher.swift
//
//
//
// Created by Mahmood Tahir on 2021-01-19.
//
Expand Down Expand Up @@ -94,12 +94,17 @@ struct Fetcher<Data: Decodable> {
}

Logger.log(level: .verbose, "received")
Logger.log(level: .verbose, String(data: data, encoding: .utf8) ?? "")

let decoder = JSONDecoder()
decoder.dateDecodingStrategy = .formatted(.formatter)
decoder.keyDecodingStrategy = .convertFromSnakeCase

return try decoder.decode(Data.self, from: data)
let decodedValue = try decoder.decode(Data.self, from: data)

if let readableValue = decodedValue as? UserReadable {
Logger.log(level: .verbose, readableValue.userReadableString)
}

return decodedValue
}
}
14 changes: 13 additions & 1 deletion Sources/ChangeLogGenerator/Generator/Generator.swift
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@ public struct Generator {
guard let tag = tags.first(where: { $0.name == tag }) else {
return ""
}
Logger.log(level: .verbose, "Found tag \(tag)")
var allTags = tags
var filteredTags = [Tag]()
while allTags.isEmpty == false && allTags[0] != tag {
Expand All @@ -95,11 +96,20 @@ public struct Generator {
pulls.contains { $0.mergeCommitSha == tag.commit.sha } == false
}
.filter { $0.mergedAt != nil }
.sorted {
$0.mergedAt! > $1.mergedAt! // we have already filtered out all the ones that have `mergedAt` as nil
}

var allPulls = pullRequests
Logger.log(level: .verbose, "All pulls \(allPulls.userReadableString)")
var filteredPulls = [PullRequest]()
while allPulls.isEmpty == false && allPulls[0].mergeCommitSha != tag.commit.sha {
while allPulls.isEmpty == false {
filteredPulls.append(allPulls.removeFirst())

if allPulls[0].mergeCommitSha == tag.commit.sha {
// we have reached the merge commit. We no longer need to append more pull requests
break
}
}

if let branch = branch {
Expand All @@ -109,6 +119,8 @@ public struct Generator {
to: branch,
maximumNumberOfPages: maximumNumberOfPages)

Logger.log(level: .verbose, "comparison commits \(comparison.commits.userReadableString)")
Logger.log(level: .verbose, "Filtered pulls \(filteredPulls.userReadableString)")

filteredPulls = filteredPulls.filter { pull in
comparison.commits.contains { $0.sha == pull.mergeCommitSha }
Expand Down
12 changes: 12 additions & 0 deletions Sources/ChangeLogGenerator/Models/Commit.swift
Original file line number Diff line number Diff line change
Expand Up @@ -28,3 +28,15 @@ struct FullCommit: Decodable {
let sha: String
let commit: Details
}

extension FullCommit: UserReadable {
var userReadableString: String {
"FullCommit: \(sha) \(commit.message)"
}
}

extension Commit: UserReadable {
var userReadableString: String {
"Commit: \(sha)"
}
}
6 changes: 6 additions & 0 deletions Sources/ChangeLogGenerator/Models/Comparison.swift
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,9 @@ struct Comparison: Decodable {
let baseCommit: FullCommit
let mergeBaseCommit: FullCommit
}

extension Comparison: UserReadable {
var userReadableString: String {
"Comparison: \(url)"
}
}
6 changes: 6 additions & 0 deletions Sources/ChangeLogGenerator/Models/Issue.swift
Original file line number Diff line number Diff line change
Expand Up @@ -30,3 +30,9 @@ extension Issue: ChangelogConvertible {
// this information is not exposed through issues
var mergeCommitSha: String? { nil }
}

extension Issue: UserReadable {
var userReadableString: String {
"Issue#\(id), (\(url))"
}
}
6 changes: 6 additions & 0 deletions Sources/ChangeLogGenerator/Models/Label.swift
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,9 @@ struct Label: Decodable {
let name: String
let color: String
}

extension Label: UserReadable {
var userReadableString: String {
"Label: \(name)"
}
}
6 changes: 6 additions & 0 deletions Sources/ChangeLogGenerator/Models/Milestone.swift
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,9 @@ struct Milestone: Decodable {
let closedIssues: UInt
let state: State
}

extension Milestone: UserReadable {
var userReadableString: String {
"Milestone: \(title)"
}
}
6 changes: 6 additions & 0 deletions Sources/ChangeLogGenerator/Models/PullRequest.swift
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,9 @@ struct PullRequest: Decodable {
}

extension PullRequest: ChangelogConvertible {}

extension PullRequest: UserReadable {
var userReadableString: String {
"Pull: \(title) (\(url)) \(mergeCommitSha ?? "")"
}
}
6 changes: 6 additions & 0 deletions Sources/ChangeLogGenerator/Models/Release.swift
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,9 @@ struct Release: Decodable {
let publishedAt: Date?
let draft: Bool
}

extension Release: UserReadable {
var userReadableString: String {
"Release: \(name)"
}
}
10 changes: 10 additions & 0 deletions Sources/ChangeLogGenerator/Models/SearchResult.swift
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,13 @@ struct SearchResult<T: Decodable>: Decodable {
let incompleteResults: Bool
let items: [T]
}

extension SearchResult: UserReadable where T: UserReadable {
var userReadableString: String {
[
"Search Result: \(totalCount)",
items.userReadableString
]
.joined()
}
}
6 changes: 6 additions & 0 deletions Sources/ChangeLogGenerator/Models/Tag.swift
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,9 @@ struct Tag: Decodable, Equatable {
let name: String
let commit: Commit
}

extension Tag: UserReadable {
var userReadableString: String {
"Tag: \(name) \(commit.sha)"
}
}
6 changes: 6 additions & 0 deletions Sources/ChangeLogGenerator/Models/User.swift
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,9 @@ struct User: Decodable {
let login: String
let htmlUrl: URL
}

extension User: UserReadable {
var userReadableString: String {
"User: \(htmlUrl)"
}
}
23 changes: 23 additions & 0 deletions Sources/ChangeLogGenerator/Models/UserReadable.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
//
// UserReadable.swift
//
//
// Created by Mahmood Tahir on 2022-09-29.
//

import Foundation

protocol UserReadable {
var userReadableString: String { get }
}

extension Array: UserReadable where Element: UserReadable {
var userReadableString: String {
[
"[\n",
reduce(into: "") { $0 += $1.userReadableString + ",\n"},
"]",
]
.joined()
}
}
Loading

0 comments on commit ef36e0a

Please sign in to comment.