#!/bin/bash

set -ex

# Change to repo root.
cd $(dirname $0)/../..

# Initialize any submodules.
git submodule update --init --recursive

# The directory with all resulting artifacts
mkdir -p artifacts

# Artifacts from all predecessor jobs get copied to this directory by kokoro
INPUT_ARTIFACTS_DIR="${KOKORO_GFILE_DIR}/github/protobuf"

# TODO(jtattermusch): remove listing the files, but for now it make it easier
# to iterate on the script.
ls -R ${INPUT_ARTIFACTS_DIR}

# ====================================
# Copy to expose all the artifacts from the predecessor jobs to the output
# TODO(jtattermusch): the directory layout of the artifact builds is pretty messy,
# so will be the output artifacts of this job.
cp -r ${INPUT_ARTIFACTS_DIR}/* artifacts

# ====================================
# Build Google.Protobuf.Tools C# nuget
# The reason it's being done in this script is that we need access to protoc binaries
# built on multiple platform (the build is performed by the "build artifact" step)
# and adding and extra chained build just for building the Google.Protobuf.Tools
# nuget seems like an overkill.
cd csharp
mkdir -p protoc/windows_x86
mkdir -p protoc/windows_x64
cp ${INPUT_ARTIFACTS_DIR}/build32/Release/protoc.exe protoc/windows_x86/protoc.exe
cp ${INPUT_ARTIFACTS_DIR}/build64/Release/protoc.exe protoc/windows_x64/protoc.exe

mkdir -p protoc/linux_x86
mkdir -p protoc/linux_x64
# Because of maven unrelated reasonse the linux protoc binaries have a dummy .exe extension.
# For the Google.Protobuf.Tools nuget, we don't want that exception, so we just remove it.
cp ${INPUT_ARTIFACTS_DIR}/kokoro/release/protoc/target/linux/x86_32/protoc.exe protoc/linux_x86/protoc
cp ${INPUT_ARTIFACTS_DIR}/kokoro/release/protoc/target/linux/x86_64/protoc.exe protoc/linux_x64/protoc

mkdir -p protoc/macosx_x64
cp ${INPUT_ARTIFACTS_DIR}/build64/src/protoc protoc/macosx_x64/protoc

# Install nuget (will also install  mono)
# TODO(jtattermusch): use "mono:5.14" docker image instead so we don't have to apt-get install
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb https://download.mono-project.com/repo/ubuntu stable-xenial main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list
# NVidia has stopped publishing Cuda packages for Ubuntu 16.04, so we need to
# delete this file to allow the apt update to run successfully.
sudo rm -f /etc/apt/sources.list.d/cuda.list
sudo apt update
sudo apt-get install -y nuget

nuget pack Google.Protobuf.Tools.nuspec

# Copy the nupkg to the output artifacts
cp Google.Protobuf.Tools.*.nupkg ../artifacts
