26 lines
1.3 KiB
Bash
26 lines
1.3 KiB
Bash
#!/bin/sh
|
|
# Host entry point: only POSIX shell and Docker are required.
|
|
set -eu
|
|
cd "$(dirname "$0")/.."
|
|
case "${1:-}" in
|
|
build)
|
|
docker pull docker:cli
|
|
ref=$(docker image inspect docker:cli --format '{{index .RepoDigests 0}}')
|
|
case "$ref" in docker@sha256:*) ;; *) echo 'Cannot pin stable Docker CLI image' >&2; exit 1;; esac
|
|
docker build --pull --build-arg "DOCKER_IMAGE=$ref" -f dev/images/tools.Dockerfile -t sxchnge-local/tools:dev dev/images
|
|
exit
|
|
;;
|
|
esac
|
|
docker image inspect sxchnge-local/tools:dev >/dev/null 2>&1 || { echo 'Run make build first' >&2; exit 1; }
|
|
endpoint=${DOCKER_HOST:-$(docker context inspect --format '{{.Endpoints.docker.Host}}')}
|
|
case "$endpoint" in unix://*) socket=${endpoint#unix://};; *) echo 'Local tooling requires a local Unix Docker socket' >&2; exit 1;; esac
|
|
network_args=
|
|
if docker network inspect sxchnge-local_default >/dev/null 2>&1; then network_args='--network sxchnge-local_default'; fi
|
|
terminal_args=-i
|
|
if [ "${1:-}" = email ]; then terminal_args=-it; fi
|
|
# These two argument lists contain only fixed strings controlled above.
|
|
# shellcheck disable=SC2086
|
|
exec docker run --rm $terminal_args $network_args -e "LOCAL_UID=$(id -u)" -e "LOCAL_GID=$(id -g)" \
|
|
-v "$socket:/var/run/docker.sock" -v "$PWD:$PWD" -w "$PWD" \
|
|
sxchnge-local/tools:dev sh dev/dispatch.sh "$@"
|