#!/bin/bash
# This deploy hook gets executed after dependencies are resolved and the
# build hook has been run but before the application has been started back
# up again.  This script gets executed directly, so it could be python, php,
# ruby, etc.

if [ ! -f ${OPENSHIFT_DATA_DIR}/virtenv/bin/python ]
then
    echo "Setting up virtualenv"
    virtualenv --no-site-packages ${OPENSHIFT_DATA_DIR}/virtenv
fi

echo -e "#\041/bin/sh\n/usr/bin/ssh -o \"UserKnownHostsFile=$OPENSHIFT_DATA_DIR/known_hosts\" \"\$@\"" > ${OPENSHIFT_DATA_DIR}/ssh_wrapper
chmod +x ${OPENSHIFT_DATA_DIR}/ssh_wrapper

export GIT_SSH=$OPENSHIFT_DATA_DIR/ssh_wrapper  

if [ ! -f ${OPENSHIFT_REPO_DIR}/bin/buildout ]
then
    pushd ${OPENSHIFT_REPO_DIR}

    # create some dirs
    if [ ! -d ${OPENSHIFT_TMP_DIR}/${OPENSHIFT_APP_UUID}-cache/ ]
    then 
        mkdir ${OPENSHIFT_TMP_DIR}/${OPENSHIFT_APP_UUID}-cache/
    fi

    if [ ! -d ${OPENSHIFT_DATA_DIR}/eggs/ ]
    then
        mkdir ${OPENSHIFT_DATA_DIR}/eggs/ 
    fi 

    if [ ! -d ${OPENSHIFT_DATA_DIR}/egg-cache/ ]
    then 
        mkdir ${OPENSHIFT_DATA_DIR}/egg-cache/
    fi

    if [ "x${OPENSHIFT_LOG_DIR}" == "x" ]
    then
        export OPENSHIFT_LOG_DIR=${OPENSHIFT_DIY_LOG_DIR}
    fi

    # initialize a buildout.cfg using the environment
    cat >> openshift-buildout.cfg << EOF
[buildout]
extends = 
    buildout.cfg
    releaseversions.cfg
eggs-directory = ${OPENSHIFT_DATA_DIR}/eggs/
download-cache = ${OPENSHIFT_TMP_DIR}/${OPENSHIFT_APP_UUID}-cache/
extends-cache = ${OPENSHIFT_TMP_DIR}/${OPENSHIFT_APP_UUID}-cache/
effective-user = ${OPENSHIFT_APP_UUID}
log-directory = ${OPENSHIFT_LOG_DIR}
data-directory = ${OPENSHIFT_DATA_DIR}
http-address = ${OPENSHIFT_INTERNAL_IP}:${OPENSHIFT_INTERNAL_PORT}
pyeggcache-directory = ${OPENSHIFT_DATA_DIR}/egg-cache/
host = ${OPENSHIFT_APP_DNS}
auto-checkout = 
sources = nosources

[nosources]
EOF

    # bootstrap
    ${OPENSHIFT_DATA_DIR}/virtenv/bin/python bootstrap.py -c openshift-buildout.cfg

    # build!
    ./bin/buildout -vvvv -c openshift-buildout.cfg
    popd
fi
