diff --git a/plugins/apple/swift/v1.29.0/.dockerignore b/plugins/apple/swift/v1.29.0/.dockerignore new file mode 100644 index 000000000..ff0a69ef1 --- /dev/null +++ b/plugins/apple/swift/v1.29.0/.dockerignore @@ -0,0 +1,3 @@ +* +!Dockerfile +!extramoduleimports.patch diff --git a/plugins/apple/swift/v1.29.0/Dockerfile b/plugins/apple/swift/v1.29.0/Dockerfile new file mode 100644 index 000000000..67a3d0999 --- /dev/null +++ b/plugins/apple/swift/v1.29.0/Dockerfile @@ -0,0 +1,19 @@ +# syntax=docker/dockerfile:1.12 +FROM swift:6.0.3-bookworm AS build + +RUN apt-get update \ + && apt-get install -y libstdc++-12-dev +COPY --link extramoduleimports.patch /app/extramoduleimports.patch +WORKDIR /app +RUN git clone --depth 1 --branch 1.29.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-debian12:latest@sha256:b7550f0b15838de14c564337eef2b804ba593ae55d81ca855421bd52f19bb480 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" ] diff --git a/plugins/apple/swift/v1.29.0/buf.plugin.yaml b/plugins/apple/swift/v1.29.0/buf.plugin.yaml new file mode 100644 index 000000000..bab3f2bf4 --- /dev/null +++ b/plugins/apple/swift/v1.29.0/buf.plugin.yaml @@ -0,0 +1,21 @@ +version: v1 +name: buf.build/apple/swift +plugin_version: v1.29.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: [ ".v5", ".v6" ] + products: [ SwiftProtobuf ] + version: 1.29.0 + opts: + - Visibility=Public + - FileNaming=PathToUnderscores +spdx_license_id: Apache-2.0 +license_url: https://github.com/apple/swift-protobuf/blob/1.29.0/LICENSE.txt diff --git a/plugins/apple/swift/v1.29.0/extramoduleimports.patch b/plugins/apple/swift/v1.29.0/extramoduleimports.patch new file mode 100644 index 000000000..91b7a3495 --- /dev/null +++ b/plugins/apple/swift/v1.29.0/extramoduleimports.patch @@ -0,0 +1,63 @@ +diff --git a/Sources/protoc-gen-swift/FileGenerator.swift b/Sources/protoc-gen-swift/FileGenerator.swift +index f0cddb24..e5864211 100644 +--- a/Sources/protoc-gen-swift/FileGenerator.swift ++++ b/Sources/protoc-gen-swift/FileGenerator.swift +@@ -149,6 +149,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 3224e138..8bfc1ce5 100644 +--- a/Sources/protoc-gen-swift/GeneratorOptions.swift ++++ b/Sources/protoc-gen-swift/GeneratorOptions.swift +@@ -64,6 +64,7 @@ class GeneratorOptions { + } + } + ++ let extraModuleImports: [String] + let outputNaming: OutputNaming + let protoToModuleMappings: ProtoFileToModuleMappings + let visibility: Visibility +@@ -74,6 +75,7 @@ class GeneratorOptions { + let visibilitySourceSnippet: String + + init(parameter: any CodeGeneratorParameter) throws { ++ var externalModuleImports: [String] = [] + var outputNaming: OutputNaming = .fullPath + var moduleMapPath: String? + var visibility: Visibility = .internal +@@ -146,6 +148,15 @@ 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) + } +@@ -179,6 +190,7 @@ class GeneratorOptions { + visibilitySourceSnippet = "package " + } + ++ self.extraModuleImports = externalModuleImports + self.experimentalStripNonfunctionalCodegen = experimentalStripNonfunctionalCodegen + + switch (implementationOnlyImports, useAccessLevelOnImports) { diff --git a/plugins/community/mercari-grpc-federation/v1.9.5/.dockerignore b/plugins/community/mercari-grpc-federation/v1.9.5/.dockerignore new file mode 100644 index 000000000..5d0f124ff --- /dev/null +++ b/plugins/community/mercari-grpc-federation/v1.9.5/.dockerignore @@ -0,0 +1,2 @@ +* +!Dockerfile diff --git a/plugins/community/mercari-grpc-federation/v1.9.5/Dockerfile b/plugins/community/mercari-grpc-federation/v1.9.5/Dockerfile new file mode 100644 index 000000000..7e1d57e1c --- /dev/null +++ b/plugins/community/mercari-grpc-federation/v1.9.5/Dockerfile @@ -0,0 +1,16 @@ +# syntax=docker/dockerfile:1.12 +FROM --platform=$BUILDPLATFORM golang:1.24.0-bookworm AS build + +ARG TARGETOS TARGETARCH +ENV CGO_ENABLED=0 GOOS=$TARGETOS GOARCH=$TARGETARCH + +RUN --mount=type=cache,target=/go/pkg/mod \ + go install -ldflags="-s -w" -trimpath github.com/mercari/grpc-federation/cmd/protoc-gen-grpc-federation@v1.9.5 \ + && mv /go/bin/${GOOS}_${GOARCH}/protoc-gen-grpc-federation /go/bin/protoc-gen-grpc-federation || true + +FROM scratch +COPY --from=build --link --chown=root:root /etc/passwd /etc/passwd +COPY --from=build --link --chown=root:root /go/bin/protoc-gen-grpc-federation . +ENV GOROOT / +USER nobody +ENTRYPOINT [ "/protoc-gen-grpc-federation" ] diff --git a/plugins/community/mercari-grpc-federation/v1.9.5/buf.plugin.yaml b/plugins/community/mercari-grpc-federation/v1.9.5/buf.plugin.yaml new file mode 100644 index 000000000..e8efb3916 --- /dev/null +++ b/plugins/community/mercari-grpc-federation/v1.9.5/buf.plugin.yaml @@ -0,0 +1,10 @@ +version: v1 +name: buf.build/community/mercari-grpc-federation +plugin_version: v1.9.5 +source_url: https://github.com/mercari/grpc-federation +integration_guide_url: https://github.com/mercari/grpc-federation/blob/main/docs/getting_started.md +description: Generates a gRPC server by writing a custom option in Protocol Buffers +output_languages: + - go +spdx_license_id: MIT +license_url: https://github.com/mercari/grpc-federation/blob/v1.9.5/LICENSE diff --git a/tests/testdata/buf.build/apple/swift/v1.29.0/eliza/plugin.sum b/tests/testdata/buf.build/apple/swift/v1.29.0/eliza/plugin.sum new file mode 100644 index 000000000..c0074b95c --- /dev/null +++ b/tests/testdata/buf.build/apple/swift/v1.29.0/eliza/plugin.sum @@ -0,0 +1 @@ +h1:2V79rqozuiAEUtD1M8yNEC0x99wWa/swFpqQzak3InA= diff --git a/tests/testdata/buf.build/apple/swift/v1.29.0/petapis/plugin.sum b/tests/testdata/buf.build/apple/swift/v1.29.0/petapis/plugin.sum new file mode 100644 index 000000000..2608eeb7a --- /dev/null +++ b/tests/testdata/buf.build/apple/swift/v1.29.0/petapis/plugin.sum @@ -0,0 +1 @@ +h1:uoHRiWUJ7qWsF25fxHZTCCk/O+1mLNB1KbObPI6K/pw= diff --git a/tests/testdata/buf.build/community/mercari-grpc-federation/v1.9.5/eliza/plugin.sum b/tests/testdata/buf.build/community/mercari-grpc-federation/v1.9.5/eliza/plugin.sum new file mode 100644 index 000000000..7d9c0f31d --- /dev/null +++ b/tests/testdata/buf.build/community/mercari-grpc-federation/v1.9.5/eliza/plugin.sum @@ -0,0 +1 @@ +h1:47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU= diff --git a/tests/testdata/buf.build/community/mercari-grpc-federation/v1.9.5/grpc-federation-v1.4.1/plugin.sum b/tests/testdata/buf.build/community/mercari-grpc-federation/v1.9.5/grpc-federation-v1.4.1/plugin.sum new file mode 100644 index 000000000..e9882c4a5 --- /dev/null +++ b/tests/testdata/buf.build/community/mercari-grpc-federation/v1.9.5/grpc-federation-v1.4.1/plugin.sum @@ -0,0 +1 @@ +h1:VcHhJ1OSgDvvWd6zzYHBKOwGIL+LhnxVYYH4z88kGSc= diff --git a/tests/testdata/buf.build/community/mercari-grpc-federation/v1.9.5/petapis/plugin.sum b/tests/testdata/buf.build/community/mercari-grpc-federation/v1.9.5/petapis/plugin.sum new file mode 100644 index 000000000..7d9c0f31d --- /dev/null +++ b/tests/testdata/buf.build/community/mercari-grpc-federation/v1.9.5/petapis/plugin.sum @@ -0,0 +1 @@ +h1:47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=