sdk-csharp/generate_protos.sh

77 lines
1.9 KiB
Bash

#!/bin/bash
# Copyright 2021 Cloud Native Foundation.
# Licensed under the Apache 2.0 license.
# See LICENSE file in the project root for full license information.
set -e
PROTOBUF_VERSION=22.0
# Generates the classes for the protobuf event format
case "$OSTYPE" in
linux*)
PROTOBUF_PLATFORM=linux-x86_64
PROTOC=tmp/bin/protoc
;;
win* | msys* | cygwin*)
PROTOBUF_PLATFORM=win64
PROTOC=tmp/bin/protoc.exe
;;
darwin*)
PROTOBUF_PLATFORM=osx-x86_64
PROTOC=tmp/bin/protoc
;;
*)
echo "Unknown OSTYPE: $OSTYPE"
exit 1
esac
# Clean up previous generation results
rm -f src/CloudNative.CloudEvents.Protobuf/*.g.cs
rm -f test/CloudNative.CloudEvents.UnitTests/Protobuf/*.g.cs
rm -rf tmp
mkdir tmp
cd tmp
echo "- Downloading protobuf@$PROTOBUF_VERSION"
curl -sSL \
https://github.com/protocolbuffers/protobuf/releases/download/v$PROTOBUF_VERSION/protoc-$PROTOBUF_VERSION-$PROTOBUF_PLATFORM.zip \
--output protobuf.zip
unzip -q protobuf.zip
echo "- Downloading schema"
# TODO: Use the 1.0.2 branch when it exists.
mkdir cloudevents
curl -sSL https://raw.githubusercontent.com/cloudevents/spec/main/cloudevents/formats/cloudevents.proto -o cloudevents/cloudevents.proto
cd ..
# Schema proto
$PROTOC \
-I tmp/include \
-I tmp/cloudevents \
--csharp_out=src/CloudNative.CloudEvents.Protobuf \
--csharp_opt=file_extension=.g.cs \
tmp/cloudevents/cloudevents.proto
# Test protos
$PROTOC \
-I tmp/include \
-I test/CloudNative.CloudEvents.UnitTests/Protobuf \
--csharp_out=test/CloudNative.CloudEvents.UnitTests/Protobuf \
--csharp_opt=file_extension=.g.cs \
test/CloudNative.CloudEvents.UnitTests/Protobuf/*.proto
# Conformance test protos
$PROTOC \
-I tmp/include \
-I tmp/cloudevents \
-I conformance/format/protobuf \
--csharp_out=test/CloudNative.CloudEvents.UnitTests/Protobuf \
--csharp_opt=file_extension=.g.cs \
conformance/format/protobuf/*.proto
echo "Generated code."
rm -rf tmp