#!/bin/bash set -eu -o pipefail quote() { local arg for arg in "$@"; do printf "'" printf "%s" "$arg" | sed -e "s/'/'\\\\''/g" printf "' " done } readonly docker_image=$1; shift readonly grpc_java_dir="$(dirname "$(readlink -f "$0")")/.." if [[ -t 0 ]]; then DOCKER_ARGS="-it" else # The input device on kokoro is not a TTY, so -it does not work. DOCKER_ARGS= fi # Use a trap function to fix file permissions upon exit, without affecting # the original exit code. $DOCKER_ARGS can not be quoted, otherwise it becomes a '' which confuses # docker. exec docker run $DOCKER_ARGS --rm=true -v "${grpc_java_dir}":/grpc-java -w /grpc-java \ $docker_image \ bash -c "function fixFiles() { chown -R $(id -u):$(id -g) /grpc-java; }; trap fixFiles EXIT; $(quote "$@")"