From e43fa68065e03acfe6f66060e0255cee6e2df988 Mon Sep 17 00:00:00 2001 From: nosamad Date: Sat, 6 Apr 2019 01:55:06 +0200 Subject: [PATCH] fixes handling for positional arguments --- build/docker_compose.sh | 50 +++++++++++++---------------- build/run_image.sh.template | 63 +++++++++++++++++++------------------ 2 files changed, 55 insertions(+), 58 deletions(-) diff --git a/build/docker_compose.sh b/build/docker_compose.sh index 9cc0da7..ff644f7 100755 --- a/build/docker_compose.sh +++ b/build/docker_compose.sh @@ -9,49 +9,43 @@ NETWORK="${NETWORK:-host}" USERID="${USERID:-$(id -u)}" SCRIPT_ROOT="${SCRIPT_ROOT:-"$(dirname "$(readlink -f "$0")")"}" ENTRYPOINT="${ENTRYPOINT:-docker-compose}" -HOST_CONTAINER="${HOST_CONTAINER:-"$("$SCRIPT_ROOT/get_container_id.sh")"}" || true HOST_ENVFILTER="${HOST_ENVFILTER:-^DOCKER_\|^COMPOSE_}" -RUNFLAGS='--rm' +set -- --entrypoint "$ENTRYPOINT" "$IMAGE" "$@" +set -- --user "$USERID:$USERID" --network "$NETWORK" --workdir "$PWD" "$@" + +ENVFLAGS="$(printenv | grep -e "$HOST_ENVFILTER" | sed -n -e 's/\([^=]*\)=.*/-e \1/p')" || true +#shellcheck disable=SC2086 +set -- $ENVFLAGS "$@" + +if [ -n "$CONTAINER_CGROUP_PARENT" ]; then + set -- --cgroup-parent "$CONTAINER_CGROUP_PARENT" "$@" +fi + +HOST_CONTAINER="${HOST_CONTAINER:-"$("$SCRIPT_ROOT/get_container_id.sh")"}" || true +if [ -n "$HOST_CONTAINER" ]; then + set -- --volumes-from "$HOST_CONTAINER" "$@" +fi # setup options for connection to docker host if [ -S "$DOCKER_HOST" ]; then DOCKER_SOCK_GROUP="$(stat -c '%g' "$DOCKER_HOST")" - RUNFLAGS="$RUNFLAGS -e DOCKER_SOCK_GROUP=$DOCKER_SOCK_GROUP --group-add $DOCKER_SOCK_GROUP" - RUNFLAGS="$RUNFLAGS -v $DOCKER_HOST:$DOCKER_HOST -e DOCKER_HOST" + set -- -e DOCKER_SOCK_GROUP="$DOCKER_SOCK_GROUP" --group-add "$DOCKER_SOCK_GROUP" "$@" else - RUNFLAGS="$RUNFLAGS -e DOCKER_HOST -e DOCKER_TLS_VERIFY -e DOCKER_CERT_PATH" + set -- -e DOCKER_HOST -e DOCKER_TLS_VERIFY -e DOCKER_CERT_PATH "$@" fi -if [ -n "$HOST_CONTAINER" ]; then - RUNFLAGS="$RUNFLAGS --volumes-from $HOST_CONTAINER" +if [ -t 0 ] && ! "$SCRIPT_ROOT/is_running_in_bg.sh" $$; then + set -- --interactive "$@" fi -RUNFLAGS="$RUNFLAGS --network $NETWORK" - -if [ -n "$CONTAINER_CGROUP_PARENT" ]; then - RUNFLAGS="$RUNFLAGS --cgroup-parent $CONTAINER_CGROUP_PARENT" -fi - -RUNFLAGS="$RUNFLAGS --workdir $PWD" - # if STDIN piped or redirected if [ -p /dev/stdin ] || { [ ! -t 0 ] && [ ! -p /dev/stdin ]; }; then - RUNFLAGS="$RUNFLAGS --interactive" + set -- --interactive "$@" elif [ -t 1 ]; then - RUNFLAGS="$RUNFLAGS --tty" -fi - -if [ -t 0 ] && ! "$SCRIPT_ROOT/is_running_in_bg.sh" $$; then - RUNFLAGS="$RUNFLAGS --interactive" + set -- --tty "$@" fi -RUNFLAGS="$RUNFLAGS --user $USERID:$USERID" - -ENVVARS="$(printenv | grep -e "$HOST_ENVFILTER" | sed -n -e 's/\([^=]*\)=.*/-e \1/p')" || true -RUNFLAGS="$RUNFLAGS $ENVVARS" - -# shellcheck disable=SC2086 -set -- $RUNFLAGS --entrypoint "$ENTRYPOINT" "$IMAGE" "$@" +set -- --rm "$@" exec "$DOCKER" run "$@" diff --git a/build/run_image.sh.template b/build/run_image.sh.template index 336f570..7c6f0c7 100644 --- a/build/run_image.sh.template +++ b/build/run_image.sh.template @@ -14,42 +14,45 @@ if [ ! -d "$SCRIPT_ROOT" ]; then exit 1 fi -HOST_CONTAINER="${HOST_CONTAINER:-"$("$SCRIPT_ROOT/get_container_id.sh")"}" || true - -RUNFLAGS='%RUNFLAGS%' - -if [ -n "$HOST_CONTAINER" ]; then - RUNFLAGS="$RUNFLAGS --volumes-from $HOST_CONTAINER" -fi - -RUNFLAGS="$RUNFLAGS --network $NETWORK" - -if [ -n "$CONTAINER_CGROUP_PARENT" ]; then - RUNFLAGS="$RUNFLAGS --cgroup-parent $CONTAINER_CGROUP_PARENT" -fi - -RUNFLAGS="$RUNFLAGS --workdir $PWD" - -# if STDIN piped or redirected -if [ -p /dev/stdin ] || { [ ! -t 0 ] && [ ! -p /dev/stdin ]; }; then - RUNFLAGS="$RUNFLAGS --interactive" -elif [ -t 1 ]; then - RUNFLAGS="$RUNFLAGS --tty" -fi - -if [ -t 0 ] && ! "$SCRIPT_ROOT/is_running_in_bg.sh" $$; then - RUNFLAGS="$RUNFLAGS --interactive" -fi +set -- --entrypoint "$ENTRYPOINT" "$IMAGE" "$@" +set -- --network "$NETWORK" --workdir "$PWD" "$@" if [ -n "$USERID" ]; then - RUNFLAGS="$RUNFLAGS --user $USERID:$USERID" + set -- --user "$USERID:$USERID" "$@" fi if [ -n "$PID" ]; then - RUNFLAGS="$RUNFLAGS --pid $PID" + set -- --pid "$PID" "$@" fi -# shellcheck disable=SC2086 -set -- $RUNFLAGS --entrypoint "$ENTRYPOINT" "$IMAGE" "$@" +if [ -n "$CONTAINER_CGROUP_PARENT" ]; then + set -- --cgroup-parent "$CONTAINER_CGROUP_PARENT" "$@" +fi + +HOST_CONTAINER="${HOST_CONTAINER:-"$("$SCRIPT_ROOT/get_container_id.sh")"}" || true +if [ -n "$HOST_CONTAINER" ]; then + set -- --volumes-from "$HOST_CONTAINER" "$@" +fi + +# setup options for connection to docker host +if [ -S "$DOCKER_HOST" ]; then + DOCKER_SOCK_GROUP="$(stat -c '%g' "$DOCKER_HOST")" + set -- -e DOCKER_SOCK_GROUP="$DOCKER_SOCK_GROUP" --group-add "$DOCKER_SOCK_GROUP" "$@" +else + set -- -e DOCKER_HOST -e DOCKER_TLS_VERIFY -e DOCKER_CERT_PATH "$@" +fi + +if [ -t 0 ] && ! "$SCRIPT_ROOT/is_running_in_bg.sh" $$; then + set -- --interactive "$@" +fi + +# if STDIN piped or redirected +if [ -p /dev/stdin ] || { [ ! -t 0 ] && [ ! -p /dev/stdin ]; }; then + set -- --interactive "$@" +elif [ -t 1 ]; then + set -- --tty "$@" +fi + +set -- %RUNFLAGS% "$@" exec "$DOCKER" run "$@"