#!/bin/bash -e

source $OPENSHIFT_CARTRIDGE_SDK_BASH
HTTPD_CFG_FILE=$OPENSHIFT_PYTHON_DIR/etc/conf/httpd_nolog.conf
HTTPD_PID_FILE=$OPENSHIFT_PYTHON_DIR/run/httpd.pid

# For backwards compatibility
export APPDIR=$OPENSHIFT_PYTHON_DIR

function start() {
    echo "Starting PYTHON cart"
    update_httpd_passenv $HTTPD_CFG_FILE
    /usr/sbin/httpd -C "Include $OPENSHIFT_PYTHON_DIR/etc/conf.d/*.conf" -f $HTTPD_CFG_FILE -k start
}

function stop() {
    echo "Stopping PYTHON cart"
    if [ -f "$HTTPD_PID_FILE" ]; then
        httpd_pid=`cat "$HTTPD_PID_FILE" 2> /dev/null`
    fi
    ensure_valid_httpd_process "$HTTPD_PID_FILE" "$HTTPD_CFG_FILE"
    /usr/sbin/httpd -C "Include $OPENSHIFT_PYTHON_DIR/etc/conf.d/*.conf" -f $HTTPD_CFG_FILE -k stop
    wait_for_stop $httpd_pid
}

function restart() {
   echo "Restarting PYTHON cart"
   update_httpd_passenv $HTTPD_CFG_FILE
    /usr/sbin/httpd -C "Include $OPENSHIFT_PYTHON_DIR/etc/conf.d/*.conf" -f $HTTPD_CFG_FILE -k restart
}

function status() {
   if output=$(curl http://$OPENSHIFT_PYTHON_IP:$OPENSHIFT_PYTHON_PORT/server-status?auto 2>&1 )
   then
      client_result "Application is running"
      client_result $output
   else
      client_result "Application is either stopped or inaccessible"
   fi
}

function reload() {
    echo "Reloading PYTHON cart"
    restart
}

# Clean up any log files
function tidy() {
  client_message "Emptying log dir: $OPENSHIFT_PYTHON_LOG_DIR"
  shopt -s dotglob
  rm -rf $OPENSHIFT_PYTHON_LOG_DIR/*
}

function build() {
    VIRTENV=$OPENSHIFT_PYTHON_DIR/virtenv

    if `echo $OPENSHIFT_GEAR_DNS | egrep -qe "\.rhcloud\.com"`
    then
        OPENSHIFT_PYTHON_MIRROR="-i http://mirror1.ops.rhcloud.com/mirror/python/web/simple"
    fi

    # Run when jenkins is not being used or run when inside a build
    if [ -f "${OPENSHIFT_REPO_DIR}/.openshift/markers/force_clean_build" ]
    then
        echo ".openshift/markers/force_clean_build found!  Recreating virtenv" 1>&2
        rm -rf $VIRTENV/*
    fi

    if [ -f ${OPENSHIFT_REPO_DIR}setup.py ]
    then
        echo "setup.py found.  Setting up virtualenv"
        cd $VIRTENV

        # Hack to fix symlink on rsync issue
        /bin/rm -f lib64
        virtualenv --system-site-packages $VIRTENV
        . ./bin/activate
        python ${OPENSHIFT_REPO_DIR}setup.py develop $OPENSHIFT_PYTHON_MIRROR
        virtualenv --relocatable $VIRTENV
    fi
}

function deploy() {
    VIRTENV=$OPENSHIFT_PYTHON_DIR/virtenv
    if [ -f $VIRTENV/bin/activate ]
    then
        pushd $VIRTENV > /dev/null
        /bin/rm -f lib64
        virtualenv --system-site-packages $VIRTENV
        . ./bin/activate
        popd > /dev/null
    fi
}

case "$1" in
  start)     start ;;
  stop)      stop ;;
  restart)   restart ;;
  status)    status ;;
  reload)    reload ;;
  tidy)      tidy ;;
  build)     build ;;
  deploy)    deploy ;;
  *)         exit 0
esac
