1*e07d83d3SAndroid Build Coastguard Worker#!/bin/bash 2*e07d83d3SAndroid Build Coastguard Workerset -eu -o pipefail 3*e07d83d3SAndroid Build Coastguard Worker 4*e07d83d3SAndroid Build Coastguard Workerquote() { 5*e07d83d3SAndroid Build Coastguard Worker local arg 6*e07d83d3SAndroid Build Coastguard Worker for arg in "$@"; do 7*e07d83d3SAndroid Build Coastguard Worker printf "'" 8*e07d83d3SAndroid Build Coastguard Worker printf "%s" "$arg" | sed -e "s/'/'\\\\''/g" 9*e07d83d3SAndroid Build Coastguard Worker printf "' " 10*e07d83d3SAndroid Build Coastguard Worker done 11*e07d83d3SAndroid Build Coastguard Worker} 12*e07d83d3SAndroid Build Coastguard Worker 13*e07d83d3SAndroid Build Coastguard Workerreadonly docker_image=$1; shift 14*e07d83d3SAndroid Build Coastguard Worker 15*e07d83d3SAndroid Build Coastguard Workerreadonly grpc_java_dir="$(dirname "$(readlink -f "$0")")/.." 16*e07d83d3SAndroid Build Coastguard Workerif [[ -t 0 ]]; then 17*e07d83d3SAndroid Build Coastguard Worker DOCKER_ARGS="-it" 18*e07d83d3SAndroid Build Coastguard Workerelse 19*e07d83d3SAndroid Build Coastguard Worker # The input device on kokoro is not a TTY, so -it does not work. 20*e07d83d3SAndroid Build Coastguard Worker DOCKER_ARGS= 21*e07d83d3SAndroid Build Coastguard Workerfi 22*e07d83d3SAndroid Build Coastguard Worker# Use a trap function to fix file permissions upon exit, without affecting 23*e07d83d3SAndroid Build Coastguard Worker# the original exit code. $DOCKER_ARGS can not be quoted, otherwise it becomes a '' which confuses 24*e07d83d3SAndroid Build Coastguard Worker# docker. 25*e07d83d3SAndroid Build Coastguard Workerexec docker run $DOCKER_ARGS --rm=true -v "${grpc_java_dir}":/grpc-java -w /grpc-java \ 26*e07d83d3SAndroid Build Coastguard Worker $docker_image \ 27*e07d83d3SAndroid Build Coastguard Worker bash -c "function fixFiles() { chown -R $(id -u):$(id -g) /grpc-java; }; trap fixFiles EXIT; $(quote "$@")" 28