mirror of https://github.com/grpc/grpc-java.git
41 lines
1.1 KiB
Bash
Executable File
41 lines
1.1 KiB
Bash
Executable File
#!/bin/bash
|
|
set -eu -o pipefail
|
|
|
|
quote() {
|
|
local arg
|
|
for arg in "$@"; do
|
|
printf "'"
|
|
printf "%s" "$arg" | sed -e "s/'/'\\\\''/g"
|
|
printf "' "
|
|
done
|
|
}
|
|
|
|
if [[ "${1:-}" != "in-docker" ]]; then
|
|
readonly grpc_java_dir="$(dirname $(readlink -f "$0"))/.."
|
|
exec docker run -it --rm=true -v "${grpc_java_dir}:/grpc-java" -w /grpc-java \
|
|
grpc-java-releasing \
|
|
./buildscripts/run_in_docker.sh in-docker "$(id -u)" "$(id -g)" "$@"
|
|
fi
|
|
|
|
## In Docker
|
|
|
|
shift
|
|
|
|
readonly swap_uid="$1"
|
|
readonly swap_gid="$2"
|
|
shift 2
|
|
|
|
# Java uses NSS to determine the user's home. If that fails it uses '?' in the
|
|
# current directory. So we need to set up the user's home in /etc/passwd.
|
|
# If this wasn't the case, we could have passed -u to docker run and avoided
|
|
# this script inside the container. JAVA_TOOL_OPTIONS is okay, but is noisy.
|
|
groupadd thegroup -g "$swap_gid"
|
|
useradd theuser -u "$swap_uid" -g "$swap_gid" -m
|
|
if [[ "$#" -eq 0 ]]; then
|
|
exec su theuser
|
|
else
|
|
# runuser is too old in the container to support the -u flag; if it did, we'd
|
|
# be able to remove the 'quote' function.
|
|
exec su theuser -c "$(quote "$@")"
|
|
fi
|