diff --git a/Package.resolved b/Package.resolved index eb0fd47..901fa35 100644 --- a/Package.resolved +++ b/Package.resolved @@ -24,8 +24,8 @@ "repositoryURL": "https://github.com/nerdishbynature/RequestKit.git", "state": { "branch": null, - "revision": "e266fd8ac7d71caf4422ffc56ad98ff368329fde", - "version": "3.1.0" + "revision": "8b0258ea2a4345cbcac90509b764faacea12efb0", + "version": "3.2.1" } }, { diff --git a/Sources/GitBuddyCore/GitHub/IssuesFetcher.swift b/Sources/GitBuddyCore/GitHub/IssuesFetcher.swift index e09fb9b..a53319e 100644 --- a/Sources/GitBuddyCore/GitHub/IssuesFetcher.swift +++ b/Sources/GitBuddyCore/GitHub/IssuesFetcher.swift @@ -24,7 +24,7 @@ struct IssuesFetcher { case .success(let issues): result = .success(issues) case .failure(let error): - result = .failure(error) + result = .failure(OctoKitError(error: error)) } group.leave() } diff --git a/Sources/GitBuddyCore/GitHub/PullRequestFetcher.swift b/Sources/GitBuddyCore/GitHub/PullRequestFetcher.swift index 2b017ba..dedb27a 100644 --- a/Sources/GitBuddyCore/GitHub/PullRequestFetcher.swift +++ b/Sources/GitBuddyCore/GitHub/PullRequestFetcher.swift @@ -35,7 +35,7 @@ struct PullRequestFetcher { case .success(let pullRequests): result = .success(pullRequests) case .failure(let error): - result = .failure(error) + result = .failure(OctoKitError(error: error)) } group.leave() } diff --git a/Sources/GitBuddyCore/Helpers/OctoKitError.swift b/Sources/GitBuddyCore/Helpers/OctoKitError.swift new file mode 100644 index 0000000..9d08df5 --- /dev/null +++ b/Sources/GitBuddyCore/Helpers/OctoKitError.swift @@ -0,0 +1,28 @@ +// +// Created by Antoine van der Lee on 20/10/2022. +// Copyright © 2022 WeTransfer. All rights reserved. +// + +import Foundation + +/// Ensures rich details become available when GitBuddy fails due to a failing GitHub API request. +struct OctoKitError: LocalizedError { + + let statusCode: Int + let underlyingError: Error + let errorDetails: String + + var errorDescription: String? { + """ + GitHub API Request failed (StatusCode: \(statusCode)): \(errorDetails) + Underlying error: + \(underlyingError) + """ + } + + init(error: Error) { + underlyingError = error + statusCode = error._code + errorDetails = (error as NSError).userInfo.debugDescription + } +} diff --git a/Sources/GitBuddyCore/Release/ReleaseProducer.swift b/Sources/GitBuddyCore/Release/ReleaseProducer.swift index e735060..ea1c166 100644 --- a/Sources/GitBuddyCore/Release/ReleaseProducer.swift +++ b/Sources/GitBuddyCore/Release/ReleaseProducer.swift @@ -207,7 +207,7 @@ final class ReleaseProducer: URLSessionInjectable, ShellInjectable { case .success(let release): result = .success(release.htmlURL) case .failure(let error): - result = .failure(error) + result = .failure(OctoKitError(error: error)) } group.leave() } diff --git a/Submodules/WeTransfer-iOS-CI b/Submodules/WeTransfer-iOS-CI index 86c9e6e..d7e2444 160000 --- a/Submodules/WeTransfer-iOS-CI +++ b/Submodules/WeTransfer-iOS-CI @@ -1 +1 @@ -Subproject commit 86c9e6e0d723288ead32a0af9eb0367f5388f3b1 +Subproject commit d7e2444b24f8ebf1d76733e8f863e3c1dde73973 diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 182ce43..e77c272 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -1,8 +1,8 @@ # Fastlane requirements fastlane_version "1.109.0" -import "./../Submodules/WeTransfer-iOS-CI/Fastlane/Fastfile" -import "./../Submodules/wetransfer-iOS-CI/Fastlane/shared_lanes.rb" +import "./../Submodules/WeTransfer-iOS-CI/Fastlane/testing_lanes.rb" +import "./../Submodules/WeTransfer-iOS-CI/Fastlane/shared_lanes.rb" desc "Run the tests and prepare for Danger" lane :test do |options|