#!/usr/bin/env bash

#   Copyright The containerd Authors.

#   Licensed under the Apache License, Version 2.0 (the "License");
#   you may not use this file except in compliance with the License.
#   You may obtain a copy of the License at

#       http://www.apache.org/licenses/LICENSE-2.0

#   Unless required by applicable law or agreed to in writing, software
#   distributed under the License is distributed on an "AS IS" BASIS,
#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#   See the License for the specific language governing permissions and
#   limitations under the License.


#
# Downloads and installs protobuf
#
set -eu -o pipefail

PROTOBUF_VERSION=3.20.1
PROTOBUF_DIR=$(mktemp -d)

# Use `go tool dist list` for the full list of targets
TARGET="$(go env GOOS)-$(go env GOARCH)"
TARGET_ORIG=$TARGET

# Fix up OS/ARCH to get proper download link for https://github.com/protocolbuffers/protobuf/releases

# Darwin
TARGET=${TARGET/darwin-amd64/osx-x86_64}
TARGET=${TARGET/darwin-arm64/osx-aarch_64}

# Windows
TARGET=${TARGET/windows-amd64/win64}
TARGET=${TARGET/windows-386/win32}

# Linux
TARGET=${TARGET/linux-386/linux-x86_32}
TARGET=${TARGET/linux-amd64/linux-x86_64}
TARGET=${TARGET/linux-arm64/linux-aarch_64}
TARGET=${TARGET/linux-ppc64le/linux-ppcle_64}

if [[ $TARGET != $TARGET_ORIG ]]
then
  wget -O "$PROTOBUF_DIR/protobuf" "https://github.com/protocolbuffers/protobuf/releases/download/v$PROTOBUF_VERSION/protoc-$PROTOBUF_VERSION-$TARGET.zip"
  unzip "$PROTOBUF_DIR/protobuf" -d /usr/local
else
  # Build from source
  wget -O "$PROTOBUF_DIR/protobuf" "https://github.com/protocolbuffers/protobuf/releases/download/v$PROTOBUF_VERSION/protobuf-cpp-$PROTOBUF_VERSION.zip"
  unzip "$PROTOBUF_DIR/protobuf" -d /usr/src/protobuf
  cd "/usr/src/protobuf/protobuf-$PROTOBUF_VERSION"
  ./autogen.sh
  ./configure --disable-shared
  make
  make check
  make install
  ldconfig
fi

rm -rf "$PROTOBUF_DIR"

# Download status.proto. grpc repos' one seems copied from
# https://github.com/googleapis/googleapis/blob/master/google/rpc/status.proto,
# but we use grpc's since the repos has tags/releases.
mkdir -p /usr/local/include/google/rpc
curl \
	-L https://raw.githubusercontent.com/grpc/grpc/v1.45.2/src/proto/grpc/status/status.proto \
	-o /usr/local/include/google/rpc/status.proto
