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
3 changes: 3 additions & 0 deletions plugins/apple/swift/v1.38.0/.dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
*
!Dockerfile
!extramoduleimports.patch
19 changes: 19 additions & 0 deletions plugins/apple/swift/v1.38.0/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# syntax=docker/dockerfile:1.23
FROM swift:6.3.2-bookworm@sha256:40918972df286d15aa47f4686c98a211f0a6152ca1d48b3dbccd6f56a3c34815 AS build

RUN apt-get update \
&& apt-get install -y libstdc++-12-dev unzip
COPY --link extramoduleimports.patch /app/extramoduleimports.patch
WORKDIR /app
RUN git clone --depth 1 --branch 1.38.0 https://github.com/apple/swift-protobuf --recursive
WORKDIR /app/swift-protobuf
RUN git apply /app/extramoduleimports.patch
RUN swift build -c release --static-swift-stdlib -Xlinker -s

FROM gcr.io/distroless/cc-debian13:latest@sha256:56aaf20ab2523a346a67c8e8f8e8dabe447447d0788b82284d14ad79cd5f93cc AS base

FROM scratch
COPY --link --from=base / /
COPY --link --from=build /app/swift-protobuf/.build/release/protoc-gen-swift .
USER nobody
ENTRYPOINT [ "/protoc-gen-swift" ]
21 changes: 21 additions & 0 deletions plugins/apple/swift/v1.38.0/buf.plugin.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
version: v1
name: buf.build/apple/swift
plugin_version: v1.38.0
source_url: https://github.com/apple/swift-protobuf
integration_guide_url: https://github.com/apple/swift-protobuf#getting-started
description: Base types for Swift. Generates message and enum types.
output_languages:
- swift
registry:
swift:
deps:
- source: https://github.com/apple/swift-protobuf.git
package: swift-protobuf
swift_versions: [ ".v6" ]
products: [ SwiftProtobuf ]
version: 1.38.0
opts:
- Visibility=Public
- FileNaming=PathToUnderscores
spdx_license_id: Apache-2.0
license_url: https://github.com/apple/swift-protobuf/blob/1.38.0/LICENSE.txt
63 changes: 63 additions & 0 deletions plugins/apple/swift/v1.38.0/extramoduleimports.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
diff --git a/Sources/protoc-gen-swift/FileGenerator.swift b/Sources/protoc-gen-swift/FileGenerator.swift
Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Had to regenerate this as the previous patch failed to apply cleanly to the new version.

index d370e25..cea7bd2 100644
--- a/Sources/protoc-gen-swift/FileGenerator.swift
+++ b/Sources/protoc-gen-swift/FileGenerator.swift
@@ -161,6 +161,14 @@ class FileGenerator {
return
}

+ let neededCustomImports = generatorOptions.extraModuleImports
+ if !neededCustomImports.isEmpty {
+ p.print()
+ for i in neededCustomImports {
+ p.print("import \(i)\n")
+ }
+ }
+
p.print()
generateVersionCheck(printer: &p)

diff --git a/Sources/protoc-gen-swift/GeneratorOptions.swift b/Sources/protoc-gen-swift/GeneratorOptions.swift
index 159e621..a8f631e 100644
--- a/Sources/protoc-gen-swift/GeneratorOptions.swift
+++ b/Sources/protoc-gen-swift/GeneratorOptions.swift
@@ -115,6 +115,7 @@ package class GeneratorOptions {
}
}

+ let extraModuleImports: [String]
let outputNaming: OutputNaming
let enumGeneration: EnumGeneration
let protoToModuleMappings: ProtoFileToModuleMappings
@@ -146,6 +147,7 @@ package class GeneratorOptions {
}

package init(parameter: any CodeGeneratorParameter) throws {
+ var externalModuleImports: [String] = []
var outputNaming: OutputNaming = .fullPath
var enumGeneration: EnumGeneration = .none
var moduleMapPath: String?
@@ -238,6 +240,15 @@ package class GeneratorOptions {
value: pair.value
)
}
+ case "ExtraModuleImports":
+ if !pair.value.isEmpty {
+ externalModuleImports.append(pair.value)
+ } else {
+ throw GenerationError.invalidParameterValue(
+ name: pair.key,
+ value: pair.value
+ )
+ }
default:
throw GenerationError.unknownParameter(name: pair.key)
}
@@ -272,6 +283,7 @@ package class GeneratorOptions {
visibilitySourceSnippet = "package "
}

+ self.extraModuleImports = externalModuleImports
self.experimentalStripNonfunctionalCodegen = experimentalStripNonfunctionalCodegen
self.experimentalHiddenNames = experimentalHiddenNames

Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
h1:qeyF/DAfv+fz8bCazdKuLL5Bjrrp1/xTp7aS3oCwqeI=
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
h1:3NaCKHGNbSrmK831WmWSaoWMEVq5dt45Fok8MEgOcgU=
Loading