mirror of
				https://github.com/falk-werner/webfuse
				synced 2025-06-13 12:54:15 +00:00 
			
		
		
		
	git-subtree-dir: build/dobuild git-subtree-split: b017db7c22e7c0ca6cee3f0f5ac1dd50f3b68eb9
		
			
				
	
	
		
			96 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			96 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/sh
 | |
| #
 | |
| # This Source Code Form is subject to the terms of the Mozilla Public
 | |
| # License, v. 2.0. If a copy of the MPL was not distributed with this
 | |
| # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 | |
| #
 | |
| # This file is part of dobuild.
 | |
| # Copyright (c) 2019 Contributors as noted in the AUTHORS file.
 | |
| #
 | |
| # SPDX-License-Identifier: MPL-2.0
 | |
| 
 | |
| set -e
 | |
| 
 | |
| enabled() {
 | |
|   { [ "$1" -ne 0 ] || [ "$1" = 'true' ]; } 2>/dev/null
 | |
| }
 | |
| 
 | |
| physical_pwd() {
 | |
|   pwd -P 2>/dev/null || pwd
 | |
| }
 | |
| 
 | |
| try_canonicalize() {
 | |
|   readlink -f "$@" 2>/dev/null || realpath "$@"
 | |
| }
 | |
| 
 | |
| canonicalize() {
 | |
|   if ! try_canonicalize "$1" 2>/dev/null; then
 | |
|     echo "$(cd "$(dirname "$1")" && physical_pwd)/$(basename "$1")"
 | |
|   fi
 | |
| }
 | |
| 
 | |
| scriptdir() {
 | |
|   dirname "$(canonicalize "${BASH_SOURCE:-$1}")"
 | |
| }
 | |
| 
 | |
| DOBUILDDIR="${DOBUILDDIR:-"$(dirname "$(scriptdir "$0")")"}"
 | |
| PATH="$DOBUILDDIR/bin:$PATH"
 | |
| 
 | |
| DOCKER="${DOCKER:-docker}"
 | |
| USERID="${DOBUILD_USERID:-$(id -u)}"
 | |
| HOSTENVFILTER="^DOCKER_\|_proxy=\|^SOURCE_DATE_EPOCH=${DOBUILD_HOSTENVFILTER:+\|$DOBUILD_HOSTENVFILTER}"
 | |
| 
 | |
| ENVFLAGS="$(printenv | grep -e "$HOSTENVFILTER" | sed -n -e 's/\([^=]*\)=.*/-e \1/p')" || true
 | |
| #shellcheck disable=SC2086
 | |
| set -- $ENVFLAGS "$@"
 | |
| 
 | |
| set -- --user "$USERID:$USERID" "$@"
 | |
| 
 | |
| if [ -n "$DOBUILD_CGROUPPARENT" ]; then
 | |
|   set -- --cgroup-parent "$DOBUILD_CGROUPPARENT" "$@"
 | |
| fi
 | |
| 
 | |
| HOST_TZ="${DOBUILD_HOSTTZ:-1}"
 | |
| if enabled "$HOST_TZ"; then
 | |
|   set -- -v "/etc/timezone:/etc/timezone:ro" "$@"
 | |
|   set -- -v "/etc/localtime:/etc/localtime:ro" "$@"
 | |
| fi
 | |
| 
 | |
| HOST_CONTAINER="${DOBUILD_HOSTCONTAINER:-"$(get_container_id.sh)"}" || true
 | |
| if [ -n "$HOST_CONTAINER" ]; then
 | |
|   set -- --volumes-from "$HOST_CONTAINER" "$@"
 | |
| elif [ -n "$DOBUILD_PROJECTDIR" ]; then
 | |
|   PROJECTDIR="$(canonicalize "$DOBUILD_PROJECTDIR")"
 | |
|   set -- --volume "$PROJECTDIR:$PROJECTDIR:cached" "$@"
 | |
| fi
 | |
| 
 | |
| # setup options for connection to docker host
 | |
| DOCKERSOCK="$(echo "$DOCKER_HOST" | sed -ne 's/^unix:\/\/\(.*\)/\1/p')"
 | |
| if [ -S "$DOCKERSOCK" ]; then
 | |
|   DOCKERSOCK_GROUP="$(stat -c '%g' "$DOCKERSOCK")"
 | |
|   set -- -e DOCKERSOCK_GROUP="$DOCKERSOCK_GROUP" --group-add "$DOCKERSOCK_GROUP" --volume "$DOCKERSOCK:$DOCKERSOCK" "$@"
 | |
| elif [ -n "$DOCKER_HOST" ]; then
 | |
|   # select the network to reach the daemon
 | |
|   if [ -n "$HOST_CONTAINER" ] && [ -z "${DOBUILD_NETWORK+x}" ]; then
 | |
|     set -- --network "$("$DOCKER" inspect --format='{{.HostConfig.NetworkMode}}' "$HOST_CONTAINER")" "$@"
 | |
|   else
 | |
|     DOBUILD_NETWORK="${DOBUILD_NETWORK:-host}"
 | |
|     set -- --network "$DOBUILD_NETWORK" "$@"
 | |
|   fi
 | |
| fi
 | |
| 
 | |
| if [ -t 0 ] && ! 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 -- "$DOCKER" run --rm "$@"
 | |
| 
 | |
| exec "$@"
 |