mirror of
				https://github.com/falk-werner/webfuse
				synced 2025-06-13 12:54:15 +00:00 
			
		
		
		
	
		
			
	
	
		
			96 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			96 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|  | #!/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 "$@" |