| # This is intended to be imported using the "source" function | |
| # from any script that wants to invoke the C#-based generator. | |
| declare -r GAPIC_GENERATOR_VERSION=1.4.29 | |
| TMP_CSHARP_GENERATOR_DIR=tmp-gapic-generator-csharp | |
| if [[ $CSHARP_GENERATOR_DIR == "" ]] | |
| then | |
| CSHARP_GENERATOR_DIR=$TMP_CSHARP_GENERATOR_DIR | |
| fi | |
| # Installs the C# generator in a tmp-gapic-generator-csharp directory, | |
| # unless an existing generator directory is specified via the | |
| # CSHARP_GENERATOR_DIR environment variable. | |
| # When installing, if the directory already exists, it is deleted first. | |
| # The tag for GAPIC_GENERATOR_VERSION (declared at the top of this file) | |
| # is checked out. | |
| install_csharp_generator() { | |
| if [[ $CSHARP_GENERATOR_DIR == $TMP_CSHARP_GENERATOR_DIR ]] | |
| then | |
| echo "Installing C# generator in $CSHARP_GENERATOR_DIR" | |
| rm -rf $CSHARP_GENERATOR_DIR | |
| git clone --quiet --recursive \ | |
| https://github.com/googleapis/gapic-generator-csharp.git \ | |
| $CSHARP_GENERATOR_DIR | |
| git -C $CSHARP_GENERATOR_DIR checkout -q v$GAPIC_GENERATOR_VERSION | |
| else | |
| echo "Using C# generator in $CSHARP_GENERATOR_DIR" | |
| fi | |
| echo 'Building C# generator' | |
| (cd $CSHARP_GENERATOR_DIR && \ | |
| dotnet build -c Release -nologo -clp:NoSummary -v quiet Google.Api.Generator.Rest) | |
| echo 'Generator build complete' | |
| } | |
| # Runs the C# generator, which is expected to be installed in | |
| # tmp-gapic-generator-csharp as per install_csharp_generator() | |
| # Expected arguments: | |
| # - Discovery doc | |
| # - Output directory (a subdirectory will be created under this) | |
| # - Features file | |
| # - Enum storage file | |
| run_csharp_generator() { | |
| # We call the generator frequently; dotnet run takes a while to start it, | |
| # even with --no-build and --no-restore. | |
| # Using "dotnet" with the DLL is more portable than executing the .exe file directly. | |
| # TODO: Rather than hard-coding this, we could build into a new directory (once) | |
| # where we'd always have a fresh copy. | |
| dotnet \ | |
| $CSHARP_GENERATOR_DIR/Google.Api.Generator.Rest/bin/Release/net6.0/Google.Api.Generator.Rest.dll \ | |
| "$1" "$2" "$3" "$4" | |
| } | |