#!/bin/sh

set -eu


basedir="$(readlink -f "$(dirname $0)")"
tmpdir="$basedir"/tmp
datadir="$tmpdir"/data
mkdir -p "$datadir"

has_input=
TTY="-i"
if [ -t 1 ];
then
  TTY="-it"
  has_input=yes
fi

user=squad
if [ ! -z "${USER-}" ]
then
  user=${USER}
fi

dockerfile="$datadir"/../Dockerfile.dev
(
  sed -e '1,/# Prepare the environment/!d' "$basedir"/Dockerfile
  echo 'COPY requirements-dev.txt /app/requirements-dev.txt'
  echo 'RUN sed -i "1d" /app/requirements-dev.txt && \
            pip install -r /app/requirements-dev.txt && \
            apt-get install -q2 \
                tmux \
                rabbitmq-server \
                chromium \
                nodejs \
                ruby-foreman \
                procps'

  if [ ! -z "${has_input}" ]
  then
    echo "RUN groupadd -g $(id -g) $(id -gn) && \\"
    echo "    useradd -m -u $(id -u) -g $(id -g) -s /bin/bash ${user}"
    echo "USER ${user}"
  fi

  echo "WORKDIR /app"
  echo 'CMD ["bash"]'
) > "$dockerfile"

no_cache=${DOCKER_NO_CACHE-}

docker build $no_cache -t squad/dev -f "$dockerfile" .

extra_volumes=''
for v in $HOME/.gitconfig $HOME/.config/git; do
  if [ -e "$v" ]; then
    extra_volumes="$extra_volumes --volume=$v:$v"
  fi
done

PORT=${PORT:-8000}

exec docker run \
  --env=XDG_DATA_HOME=/app/tmp/data \
  --env=SQUAD_EXCLUDE_TEST_TAGS=skip_sqlite \
  --env=PORT=${PORT} \
  --publish=${PORT}:${PORT} \
  --volume="$basedir":/app \
  --name=squad-dev-docker \
  --hostname=squad-dev-docker \
  $extra_volumes \
  --rm \
  $TTY squad/dev "$@"
