Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@ jobs:
with:
linux_5_9_enabled: false
linux_5_10_enabled: false
linux_6_0_arguments_override: "--explicit-target-dependency-import-check error -Xswiftc -warnings-as-errors"
linux_6_1_arguments_override: "--explicit-target-dependency-import-check error -Xswiftc -warnings-as-errors"
linux_nightly_next_arguments_override: "--explicit-target-dependency-import-check error"
linux_nightly_main_arguments_override: "--explicit-target-dependency-import-check error"
linux_6_0_arguments_override: "--explicit-target-dependency-import-check error -Xswiftc -warnings-as-errors -Xswiftc -require-explicit-availability"
linux_6_1_arguments_override: "--explicit-target-dependency-import-check error -Xswiftc -warnings-as-errors -Xswiftc -require-explicit-availability"
linux_nightly_next_arguments_override: "--explicit-target-dependency-import-check error -Xswiftc -require-explicit-availability"
linux_nightly_main_arguments_override: "--explicit-target-dependency-import-check error -Xswiftc -require-explicit-availability"

construct-plugin-tests-matrix:
name: Construct plugin tests matrix
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/pull_request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,10 @@ jobs:
with:
linux_5_9_enabled: false
linux_5_10_enabled: false
linux_6_0_arguments_override: "--explicit-target-dependency-import-check error -Xswiftc -warnings-as-errors"
linux_6_1_arguments_override: "--explicit-target-dependency-import-check error -Xswiftc -warnings-as-errors"
linux_nightly_next_arguments_override: "--explicit-target-dependency-import-check error"
linux_nightly_main_arguments_override: "--explicit-target-dependency-import-check error"
linux_6_0_arguments_override: "--explicit-target-dependency-import-check error -Xswiftc -warnings-as-errors -Xswiftc -require-explicit-availability"
linux_6_1_arguments_override: "--explicit-target-dependency-import-check error -Xswiftc -warnings-as-errors -Xswiftc -require-explicit-availability"
linux_nightly_next_arguments_override: "--explicit-target-dependency-import-check error -Xswiftc -require-explicit-availability"
linux_nightly_main_arguments_override: "--explicit-target-dependency-import-check error -Xswiftc -require-explicit-availability"

construct-plugin-tests-matrix:
name: Construct plugin tests matrix
Expand Down
37 changes: 23 additions & 14 deletions Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -39,20 +39,36 @@ let products: [Product] = [
let dependencies: [Package.Dependency] = [
.package(
url: "https://github.com/grpc/grpc-swift.git",
from: "2.2.0"
from: "2.2.1"
),
.package(
url: "https://github.com/apple/swift-protobuf.git",
from: "1.28.1"
),
]

let defaultSwiftSettings: [SwiftSetting] = [
.swiftLanguageMode(.v6),
.enableUpcomingFeature("ExistentialAny"),
.enableUpcomingFeature("InternalImportsByDefault"),
.enableUpcomingFeature("MemberImportVisibility"),
]
// -------------------------------------------------------------------------------------------------

// This adds some build settings which allow us to map "@available(gRPCSwiftProtobuf 1.x, *)" to
// the appropriate OS platforms.
let nextMinorVersion = 3
let availabilitySettings: [SwiftSetting] = (0 ... nextMinorVersion).map { minor in
let name = "gRPCSwiftProtobuf"
let version = "1.\(minor)"
let platforms = "macOS 15.0, iOS 18.0, watchOS 11.0, tvOS 18.0, visionOS 2.0"
let setting = "AvailabilityMacro=\(name) \(version):\(platforms)"
return .enableExperimentalFeature(setting)
}

let defaultSwiftSettings: [SwiftSetting] =
availabilitySettings + [
.swiftLanguageMode(.v6),
.enableUpcomingFeature("ExistentialAny"),
.enableUpcomingFeature("InternalImportsByDefault"),
.enableUpcomingFeature("MemberImportVisibility"),
]

// -------------------------------------------------------------------------------------------------

var targets: [Target] = [
// protoc plugin for grpc-swift
Expand Down Expand Up @@ -190,13 +206,6 @@ if Context.buildCGRPCProtobuf {

let package = Package(
name: "grpc-swift-protobuf",
platforms: [
.macOS(.v15),
.iOS(.v18),
.tvOS(.v18),
.watchOS(.v11),
.visionOS(.v2),
],
products: products,
dependencies: dependencies,
targets: targets
Expand Down
2 changes: 2 additions & 0 deletions Sources/GRPCProtobuf/Coding.swift
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ public import GRPCCore
public import SwiftProtobuf

/// Serializes a Protobuf message into a sequence of bytes.
@available(gRPCSwiftProtobuf 1.0, *)
public struct ProtobufSerializer<Message: SwiftProtobuf.Message>: GRPCCore.MessageSerializer {
public init() {}

Expand All @@ -41,6 +42,7 @@ public struct ProtobufSerializer<Message: SwiftProtobuf.Message>: GRPCCore.Messa
}

/// Deserializes a sequence of bytes into a Protobuf message.
@available(gRPCSwiftProtobuf 1.0, *)
public struct ProtobufDeserializer<Message: SwiftProtobuf.Message>: GRPCCore.MessageDeserializer {
public init() {}

Expand Down
1 change: 1 addition & 0 deletions Sources/GRPCProtobuf/ContiguousBytesAdapter.swift
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ public import SwiftProtobuf // internal but @usableFromInline
/// it'd require a dependency on Protobuf in the core package), and `GRPCContiguousBytes` can't
/// refine `SwiftProtobufContiguousBytes` for the same reason.
@usableFromInline
@available(gRPCSwiftProtobuf 1.0, *)
struct ContiguousBytesAdapter<
Bytes: GRPCContiguousBytes
>: GRPCContiguousBytes, SwiftProtobufContiguousBytes {
Expand Down
1 change: 1 addition & 0 deletions Sources/GRPCProtobuf/Errors/ErrorDetails+AnyPacking.swift
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ extension Google_Protobuf_Any {
}
}

@available(gRPCSwiftProtobuf 1.0, *)
extension ErrorDetails {
// Note: this type isn't packable into an 'Any' protobuf so doesn't conform
// to 'GoogleProtobufAnyPackable' despite holding types which are packable.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
* limitations under the License.
*/

@available(gRPCSwiftProtobuf 1.0, *)
extension ErrorDetails: CustomStringConvertible {
public var description: String {
switch self.wrapped {
Expand Down Expand Up @@ -46,54 +47,63 @@ extension ErrorDetails: CustomStringConvertible {
// Some errors use protobuf messages as their storage so the default description isn't
// representative

@available(gRPCSwiftProtobuf 1.0, *)
extension ErrorDetails.ErrorInfo: CustomStringConvertible {
public var description: String {
"\(Self.self)(reason: \"\(self.reason)\", domain: \"\(self.domain)\", metadata: \(self.metadata))"
}
}

@available(gRPCSwiftProtobuf 1.0, *)
extension ErrorDetails.DebugInfo: CustomStringConvertible {
public var description: String {
"\(Self.self)(stack: \(self.stack), detail: \"\(self.detail)\")"
}
}

@available(gRPCSwiftProtobuf 1.0, *)
extension ErrorDetails.QuotaFailure.Violation: CustomStringConvertible {
public var description: String {
"\(Self.self)(subject: \"\(self.subject)\", violationDescription: \"\(self.violationDescription)\")"
}
}

@available(gRPCSwiftProtobuf 1.0, *)
extension ErrorDetails.PreconditionFailure.Violation: CustomStringConvertible {
public var description: String {
"\(Self.self)(subject: \"\(self.subject)\", type: \"\(self.type)\", violationDescription: \"\(self.violationDescription)\")"
}
}

@available(gRPCSwiftProtobuf 1.0, *)
extension ErrorDetails.BadRequest.FieldViolation: CustomStringConvertible {
public var description: String {
"\(Self.self)(field: \"\(self.field)\", violationDescription: \"\(self.violationDescription)\")"
}
}

@available(gRPCSwiftProtobuf 1.0, *)
extension ErrorDetails.RequestInfo: CustomStringConvertible {
public var description: String {
"\(Self.self)(requestID: \"\(self.requestID)\", servingData: \"\(self.servingData)\")"
}
}

@available(gRPCSwiftProtobuf 1.0, *)
extension ErrorDetails.ResourceInfo: CustomStringConvertible {
public var description: String {
"\(Self.self)(name: \"\(self.name)\", owner: \"\(self.owner)\", type: \"\(self.type)\", errorDescription: \"\(self.errorDescription)\")"
}
}

@available(gRPCSwiftProtobuf 1.0, *)
extension ErrorDetails.Help.Link: CustomStringConvertible {
public var description: String {
"\(Self.self)(url: \"\(self.url)\", linkDescription: \"\(self.linkDescription)\")"
}
}

@available(gRPCSwiftProtobuf 1.0, *)
extension ErrorDetails.LocalizedMessage: CustomStringConvertible {
public var description: String {
"\(Self.self)(locale: \"\(self.locale)\", message: \"\(self.message)\")"
Expand Down
1 change: 1 addition & 0 deletions Sources/GRPCProtobuf/Errors/ErrorDetails+Types.swift
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

internal import SwiftProtobuf

@available(gRPCSwiftProtobuf 1.0, *)
extension ErrorDetails {
/// Describes the cause of the error with structured details.
///
Expand Down
2 changes: 2 additions & 0 deletions Sources/GRPCProtobuf/Errors/ErrorDetails.swift
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ public import SwiftProtobuf
///
/// This type also allows you to provide wrap your own error details up as an "Any"
/// protobuf (`Google_Protobuf_Any`).
@available(gRPCSwiftProtobuf 1.0, *)
public struct ErrorDetails: Sendable, Hashable {
enum Wrapped: Sendable, Hashable {
case errorInfo(ErrorInfo)
Expand Down Expand Up @@ -198,6 +199,7 @@ public struct ErrorDetails: Sendable, Hashable {
}
}

@available(gRPCSwiftProtobuf 1.0, *)
extension ErrorDetails {
/// Returns error info if set.
public var errorInfo: ErrorInfo? {
Expand Down
3 changes: 3 additions & 0 deletions Sources/GRPCProtobuf/Errors/GoogleRPCStatus.swift
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ public import SwiftProtobuf
/// > inserted into the metadata keyed by "grpc-status-details-bin". The value of the metadata is
/// > the serialized bytes of a "google.rpc.Status" protocol buffers message containing the status
/// > code, message, and details.
@available(gRPCSwiftProtobuf 1.0, *)
public struct GoogleRPCStatus: Error, Hashable {
/// A code representing the high-level domain of the error.
public var code: RPCError.Code
Expand Down Expand Up @@ -73,6 +74,7 @@ public struct GoogleRPCStatus: Error, Hashable {
}
}

@available(gRPCSwiftProtobuf 1.0, *)
extension GoogleRPCStatus {
/// Creates a new message by decoding the given `SwiftProtobufContiguousBytes` value
/// containing a serialized message in Protocol Buffer binary format.
Expand Down Expand Up @@ -133,6 +135,7 @@ extension GoogleRPCStatus {
}
}

@available(gRPCSwiftProtobuf 1.0, *)
extension GoogleRPCStatus: RPCErrorConvertible {
public var rpcErrorCode: RPCError.Code { self.code }
public var rpcErrorMessage: String { self.message }
Expand Down
2 changes: 2 additions & 0 deletions Sources/GRPCProtobuf/Errors/RPCError+GoogleRPCStatus.swift
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,12 @@
public import GRPCCore
internal import SwiftProtobuf

@available(gRPCSwiftProtobuf 1.0, *)
extension Metadata {
static let statusDetailsBinKey = "grpc-status-details-bin"
}

@available(gRPCSwiftProtobuf 1.0, *)
extension RPCError {
/// Unpack a ``GoogleRPCStatus`` error from the error metadata.
///
Expand Down
4 changes: 4 additions & 0 deletions Sources/GRPCProtobufCodeGen/ProtobufCodeGenParser.swift
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ internal import struct Foundation.IndexPath
#endif

/// Parses a ``FileDescriptor`` object into a ``CodeGenerationRequest`` object.
@available(gRPCSwiftProtobuf 1.0, *)
package struct ProtobufCodeGenParser {
let extraModuleImports: [String]
let protoToModuleMappings: ProtoFileToModuleMappings
Expand Down Expand Up @@ -99,6 +100,7 @@ package struct ProtobufCodeGenParser {
}
}

@available(gRPCSwiftProtobuf 1.0, *)
extension ProtobufCodeGenParser {
fileprivate func codeDependencies(file: FileDescriptor) -> [Dependency] {
guard file.services.count > 0 else {
Expand Down Expand Up @@ -141,6 +143,7 @@ extension ProtobufCodeGenParser {
}
}

@available(gRPCSwiftProtobuf 1.0, *)
extension GRPCCodeGen.ServiceDescriptor {
fileprivate init(
descriptor: SwiftProtobufPluginLibrary.ServiceDescriptor,
Expand Down Expand Up @@ -168,6 +171,7 @@ extension GRPCCodeGen.ServiceDescriptor {
}
}

@available(gRPCSwiftProtobuf 1.0, *)
extension GRPCCodeGen.MethodDescriptor {
fileprivate init(
descriptor: SwiftProtobufPluginLibrary.MethodDescriptor,
Expand Down
2 changes: 2 additions & 0 deletions Sources/GRPCProtobufCodeGen/ProtobufCodeGenerator.swift
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
package import GRPCCodeGen
package import SwiftProtobufPluginLibrary

@available(gRPCSwiftProtobuf 1.0, *)
package struct ProtobufCodeGenerator {
internal var config: ProtobufCodeGenerator.Config

Expand Down Expand Up @@ -66,6 +67,7 @@ package struct ProtobufCodeGenerator {
}
}

@available(gRPCSwiftProtobuf 1.0, *)
extension ProtobufCodeGenerator {
package struct Config {
package var accessLevel: GRPCCodeGen.CodeGenerator.Config.AccessLevel
Expand Down
2 changes: 2 additions & 0 deletions Sources/protoc-gen-grpc-swift/GenerateGRPC.swift
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import Foundation
#endif

@main
@available(gRPCSwiftProtobuf 1.0, *)
final class GenerateGRPC: SwiftProtobufPluginLibrary.CodeGenerator {
var version: String? {
Version.versionString
Expand Down Expand Up @@ -81,6 +82,7 @@ final class GenerateGRPC: SwiftProtobufPluginLibrary.CodeGenerator {
}
}

@available(gRPCSwiftProtobuf 1.0, *)
extension GenerateGRPC {
private func uniqueOutputFileName(
fileDescriptor: FileDescriptor,
Expand Down
3 changes: 3 additions & 0 deletions Sources/protoc-gen-grpc-swift/Options.swift
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ enum FileNaming: String {
case dropPath = "DropPath"
}

@available(gRPCSwiftProtobuf 1.0, *)
struct GeneratorOptions {
private(set) var protoToModuleMappings = ProtoFileToModuleMappings()
private(set) var fileNaming = FileNaming.fullPath
Expand Down Expand Up @@ -191,6 +192,7 @@ struct GeneratorOptions {
}
}

@available(gRPCSwiftProtobuf 1.0, *)
extension String.SubSequence {
func trimmingWhitespaceAndNewlines() -> String {
let trimmedSuffix = self.drop(while: { $0.isNewline || $0.isWhitespace })
Expand All @@ -199,6 +201,7 @@ extension String.SubSequence {
}
}

@available(gRPCSwiftProtobuf 1.0, *)
extension GRPCCodeGen.CodeGenerator.Config.AccessLevel {
fileprivate init?(protocOption value: String) {
switch value {
Expand Down
Loading
Loading