1*e7b1675dSTing-Kang Chang#!/bin/bash 2*e7b1675dSTing-Kang Chang# Copyright 2022 Google LLC 3*e7b1675dSTing-Kang Chang# 4*e7b1675dSTing-Kang Chang# Licensed under the Apache License, Version 2.0 (the "License"); 5*e7b1675dSTing-Kang Chang# you may not use this file except in compliance with the License. 6*e7b1675dSTing-Kang Chang# You may obtain a copy of the License at 7*e7b1675dSTing-Kang Chang# 8*e7b1675dSTing-Kang Chang# http://www.apache.org/licenses/LICENSE-2.0 9*e7b1675dSTing-Kang Chang# 10*e7b1675dSTing-Kang Chang# Unless required by applicable law or agreed to in writing, software 11*e7b1675dSTing-Kang Chang# distributed under the License is distributed on an "AS IS" BASIS, 12*e7b1675dSTing-Kang Chang# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*e7b1675dSTing-Kang Chang# See the License for the specific language governing permissions and 14*e7b1675dSTing-Kang Chang# limitations under the License. 15*e7b1675dSTing-Kang Chang################################################################################ 16*e7b1675dSTing-Kang Chang 17*e7b1675dSTing-Kang Chang# This scripts installs the protocol buffer compiler at a given version. 18*e7b1675dSTing-Kang Chang# 19*e7b1675dSTing-Kang Chang# NOTEs: 20*e7b1675dSTing-Kang Chang# * If not running on Kokoro, this script will do nothing. 21*e7b1675dSTing-Kang Chang# * This script MUST be sourced to update the environment of the calling 22*e7b1675dSTing-Kang Chang# script. 23*e7b1675dSTing-Kang Chang# 24*e7b1675dSTing-Kang Chang# Usage: 25*e7b1675dSTing-Kang Chang# source ./kokoro/testutils/install_protoc.sh [version] 26*e7b1675dSTing-Kang Chang 27*e7b1675dSTing-Kang Chang## Per default, use X.21.9. 28*e7b1675dSTing-Kang Changreadonly DEFAULT_PROTOC_VERSION="21.9" 29*e7b1675dSTing-Kang Chang 30*e7b1675dSTing-Kang Changinstall_temp_protoc() { 31*e7b1675dSTing-Kang Chang local protoc_version="${1:-${DEFAULT_PROTOC_VERSION}}" 32*e7b1675dSTing-Kang Chang local platform="$(uname | tr '[:upper:]' '[:lower:]')" 33*e7b1675dSTing-Kang Chang local protoc_zip="protoc-${protoc_version}-linux-x86_64.zip" 34*e7b1675dSTing-Kang Chang if [[ "${platform}" == 'darwin' ]]; then 35*e7b1675dSTing-Kang Chang protoc_zip="protoc-${protoc_version}-osx-x86_64.zip" 36*e7b1675dSTing-Kang Chang fi 37*e7b1675dSTing-Kang Chang local protoc_url="https://github.com/protocolbuffers/protobuf/releases/download/v${protoc_version}/${protoc_zip}" 38*e7b1675dSTing-Kang Chang local -r protoc_tmpdir="$(mktemp -dt tink-protoc.XXXXXX)" 39*e7b1675dSTing-Kang Chang ( 40*e7b1675dSTing-Kang Chang cd "${protoc_tmpdir}" 41*e7b1675dSTing-Kang Chang curl -OLsS "${protoc_url}" 42*e7b1675dSTing-Kang Chang unzip "${protoc_zip}" bin/protoc 43*e7b1675dSTing-Kang Chang ) 44*e7b1675dSTing-Kang Chang export PATH="${protoc_tmpdir}/bin:${PATH}" 45*e7b1675dSTing-Kang Chang} 46*e7b1675dSTing-Kang Chang 47*e7b1675dSTing-Kang Changif [[ -n "${KOKORO_ROOT:-}" ]]; then 48*e7b1675dSTing-Kang Chang install_temp_protoc "$@" 49*e7b1675dSTing-Kang Changfi 50