#!/bin/bash

PYTHON_VERSION=`python -V 2>&1 | sed -e 's/Python //' -e 's/\.[0-9]*$//' -e 's/\.//'`

WARPDRIVE_BUILDER_IMAGE=${WARPDRIVE_BUILDER_IMAGE:-grahamdumpleton/warp0-debian8-python$PYTHON_VERSION}

if [ -f $WARPDRIVE_SRC_ROOT/.warpdrive/builder_image ]; then
    WARPDRIVE_BUILDER_IMAGE=`cat $WARPDRIVE_SRC_ROOT/.warpdrive/builder_image`
fi

WARPDRIVE_IMAGE_NAME=
WARPDRIVE_BUILD_TARGET=application
WARPDRIVE_WHEELHOUSE=
WARPDRIVE_PIP_NO_INDEX=

while [ "$#" != "0" ]; do
    case "$1" in
        --builder-image=*)
            WARPDRIVE_BUILDER_IMAGE=`echo $1 | sed -e 's/--builder=//'`
            ;;
        --builder-image)
            WARPDRIVE_BUILDER_IMAGE=$2
            shift
            ;;
        --build-target=*)
            WARPDRIVE_BUILD_TARGET=`echo $1 | sed -e 's/--build-target=//'`
            ;;
        --build-target)
            WARPDRIVE_BUILD_TARGET=$2
            shift
            ;;
        --wheelhouse=*)
            WARPDRIVE_WHEELHOUSE=`echo $1 | sed -e 's/--wheelhouse=//'`
            ;;
        --wheelhouse)
            WARPDRIVE_WHEELHOUSE=$2
            shift
            ;;
        --no-index)
            WARPDRIVE_PIP_NO_INDEX=1
            ;;
        *)
            WARPDRIVE_IMAGE_NAME=$1
            ;;
    esac

    shift
done

WARPDRIVE_TMP_FILES=/tmp/warpdrive-image.$$

mkdir -p /tmp/warpdrive-image.$$

function cleanup() {
    rm -rf $WARPDRIVE_TMP_FILES
    docker rm warpdrive-image-$$
}

trap "cleanup; exit" SIGHUP SIGINT SIGTERM

tar --exclude .git -c -C $WARPDRIVE_SRC_ROOT -f - . | \
    tar xCf $WARPDRIVE_TMP_FILES -

if [ "$WARPDRIVE_WHEELHOUSE" != "" ]; then
    docker run --name warpdrive-image-$$ $WARPDRIVE_WHEELHOUSE true

    docker cp warpdrive-image-$$:/opt/app-root/src/.warpdrive - | \
        tar xCf $WARPDRIVE_TMP_FILES -

    docker rm warpdrive-image-$$
fi

WARPDRIVE_S2I_LOGLEVEL=${WARPDRIVE_S2I_LOGLEVEL:-0}

if [ "$WARPDRIVE_BUILD_TARGET" = "wheelhouse" ]; then
    if [ "$WARPDRIVE_IMAGE_NAME" = "" ]; then
        WARPDRIVE_IMAGE_NAME=warpdrive-$WARPDRIVE_ENV_NAME-wheelhouse
    fi

    s2i build $WARPDRIVE_TMP_FILES $WARPDRIVE_BUILDER_IMAGE $WARPDRIVE_IMAGE_NAME \
        --env WARPDRIVE_DEBUG=$WARPDRIVE_DEBUG,WARPDRIVE_BUILD_TARGET=wheelhouse,WARPDRIVE_PIP_NO_INDEX=$WARPDRIVE_PIP_NO_INDEX \
        --incremental --loglevel=$WARPDRIVE_S2I_LOGLEVEL

    STATUS=$?
else
    if [ "$WARPDRIVE_IMAGE_NAME" = "" ]; then
        WARPDRIVE_IMAGE_NAME=warpdrive-$WARPDRIVE_ENV_NAME-application
    fi

    s2i build $WARPDRIVE_TMP_FILES $WARPDRIVE_BUILDER_IMAGE \
        $WARPDRIVE_IMAGE_NAME --env WARPDRIVE_DEBUG=$WARPDRIVE_DEBUG \
        --loglevel=$WARPDRIVE_S2I_LOGLEVEL

    STATUS=$?
fi

rm -rf $WARPDRIVE_TMP_FILES

exit $STATUS
