#!/bin/bash

# see test-integration-cli for example usage of this script

export PATH="$DEST/../binary:$DEST/../dynbinary:$DEST/../gccgo:$DEST/../dyngccgo:$PATH"

if ! command -v docker &> /dev/null; then
	echo >&2 'error: binary or dynbinary must be run before .integration-daemon-start'
	false
fi

# intentionally open a couple bogus file descriptors to help test that they get scrubbed in containers
exec 41>&1 42>&2

export DOCKER_GRAPHDRIVER=${DOCKER_GRAPHDRIVER:-vfs}
export DOCKER_EXECDRIVER=${DOCKER_EXECDRIVER:-native}

if [ -z "$DOCKER_TEST_HOST" ]; then
	export DOCKER_HOST="unix://$(cd "$DEST" && pwd)/docker.sock" # "pwd" tricks to make sure $DEST is an absolute path, not a relative one
	( set -x; exec \
		docker --daemon --debug \
		--host "$DOCKER_HOST" \
		--storage-driver "$DOCKER_GRAPHDRIVER" \
		--exec-driver "$DOCKER_EXECDRIVER" \
		--pidfile "$DEST/docker.pid" \
			&> "$DEST/docker.log"
	) &
else
	export DOCKER_HOST="$DOCKER_TEST_HOST"
fi

# give it a second to come up so it's "ready"
tries=10
while ! docker version &> /dev/null; do
	(( tries-- ))
	if [ $tries -le 0 ]; then
		if [ -z "$DOCKER_HOST" ]; then
			echo >&2 "error: daemon failed to start"
			echo >&2 "  check $DEST/docker.log for details"
		else
			echo >&2 "error: daemon at $DOCKER_HOST fails to 'docker version':"
			docker version >&2 || true
		fi
		false
	fi
	sleep 2
done
