#!/bin/bash -e
source $OPENSHIFT_CARTRIDGE_SDK_BASH

# Perl cartridge. Perl packaged with OS.
# Perl control script.


HTTPD_CFG_FILE=$OPENSHIFT_PERL_DIR/etc/conf/httpd_nolog.conf
HTTPD_PID_FILE=$OPENSHIFT_PERL_DIR/run/httpd.pid

# Functions called from case statement below
function start() {
  update_httpd_passenv $HTTPD_CFG_FILE
  /usr/sbin/httpd -C "Include $OPENSHIFT_PERL_DIR/etc/conf.d/*.conf" -f $HTTPD_CFG_FILE -k start
}

function stop() {
  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_PERL_DIR/etc/conf.d/*.conf" -f $HTTPD_CFG_FILE -k stop
  wait_for_stop $httpd_pid
}

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

# Is the packaged software really running?
function status() {
  if ps --no-headers --pid $(< $HTTPD_PID_FILE) > /dev/null
  then
    client_result 'Perl is running'
  else
    client_result 'Perl is either stopped or inaccessible'
  fi
}

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

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