#!/bin/bash


set -e

## config
: "${ICINGA_DOCKER_REGISTRY:="registry.icinga.com"}"
: "${ICINGA_DOCKER_ORG:="build-docker"}"
: "${ICINGA_DOCKER_PULL:=1}"
: "${ICINGA_SCRIPT_DEVEL:=0}"

SCRIPT_HOME="$(dirname "$(readlink -f "$0")")"

## functions
usage() {
  echo "$0 <target>"
  echo
  echo "This starts a Container specified by the first argument. Example:"
  echo "icinga-build-docker centos/7:x86_64"
  echo
  echo "The Container will then run icinga-build-package as CMD"
  echo "Important: This script needs to run in the directory that contains the build information for the package"
}

if [[ "$1" = "--help" ]]; then
    usage
    exit 0
fi

if [ -n "$1" ]; then
  TARGET="$1"
  shift
else
  echo "Target is missing!" >&2
  usage
  exit 1
fi

DOCKER_IMAGE="${ICINGA_DOCKER_ORG}/${TARGET}"
if [ -n "${ICINGA_DOCKER_REGISTRY}" ]; then
  DOCKER_IMAGE="${ICINGA_DOCKER_REGISTRY}/${DOCKER_IMAGE}"
fi

if [ "$ICINGA_DOCKER_PULL" = 1 ]; then
  echo "[ Pulling Docker image ]"
  ( set -ex; docker pull "${DOCKER_IMAGE}" )
fi

dockeropt=()
[ ! -t 0 ] || [ ! -t 1 ] || dockeropt+=('-t')

if [ "${ICINGA_SCRIPT_DEVEL}" -eq 1 ]; then
  echo "Running in ICINGA_SCRIPT_DEVEL mode, mounting scripts into container"
  dockeropt+=(-v "${SCRIPT_HOME}":/usr/local/bin:ro)
fi

env_file="$(mktemp)"
trap 'rm -f ${env_file}' EXIT INT

env | grep -e ^ICINGA > "${env_file}" || true
env | grep -e ^APTLY >> "${env_file}" || true
env | grep -e ^CI_ >> "${env_file}" || true
env | grep -e ^USCAN_ >> "${env_file}" || true

echo "[ Running build in Docker ]"
set -ex
docker run -i --rm "${dockeropt[@]}" \
  --env-file "${env_file}" \
  -v "$(pwd)":/tmp/build \
  --workdir /tmp/build \
  "${DOCKER_IMAGE}" \
  "$@"

# vi: ts=2 sw=2 expandtab