#!/bin/bash

BINPATH="/usr/bin"
BINARY="crystal"
#RUNFILE=""
FILEOPTS="play"
LIBNOTIFY="true"
LOGDIR="/tmp"


# Colors
RED='\033[0;31m'
LRED="\033[1;31m"
BLUE="\033[0;34m"
LBLUE="\033[1;34m"
GREEN="\033[0;32m"
LGREEN="\033[1;32m"
YELLOW="\033[1;33m"
CYAN="\033[0;36m"
LCYAN="\033[1;36m"
PURPLE="\033[0;35m"
LPURPLE="\033[1;35m"
BWHITE="\e[1m"
NC='\033[0m' # No Color


#####################################



CheckNotify()
{
  if [ "${LIBNOTIFY}" = "true" ];then
    notify-send "$1"
  elif [ "${LIBNOTIFY}" = "false" ];then
    "$1" &> /dev/null
    echo "$(date +"%T"): [INFO]: libnotify support disabled" >> ${LOGDIR}/${LOGFILE}
  else
    echo "[ATTENTION]: Please check the logs: /tmp/${BINARY}.log"
    echo "$(date +"%T"): [WARNING]: LIBNOTIFY setting is invalid" >> ${LOGDIR}/${LOGFILE}
  fi
}

case "$1" in
  start) nohup ${BINPATH}/${BINARY} ${FILEOPTS} &> /dev/null &

  sleep 1

  PID=$(pidof ${BINARY})

  if [ "${PID}" ];then
    CheckNotify "${BINARY} started on PID: ${PID}"
    echo
    printf "${LGREEN}${BINARY} started on PID: ${PID}${NC}\n"
    printf "${LGREEN}Web Server started on localhost:8080${NC}\n"

  else
    CheckNotify "${BINARY} Failed to start!"
    printf "${LRED}${BINARY} process failed to start!${NC}\n"
  fi
  ;;

  stop) killall ${BINARY}
  sleep 1
  if [ ! "${PID}" ];then
    CheckNotify "${BINARY} was terminated"
    echo
    printf "${LRED}${BINARY} was terminated${NC}\n"
  else
    CheckNotify "There was a problem terminating ${BINARY}"
    printf "${LRED}There was a problem terminating ${BINARY}${NC}"
  fi


  ;;

  open) xdg-open "http://localhost:8080" &> /dev/null
  ;;

  status) ps -fC ${BINARY}
  ;;

  *)
    echo """
    Usage: crystald [option]

    [Options]   [Description]

    start       Starts crystal play on port 8080
    stop        Kills process 'crystal'
    open        Opens web browser to localhost:8080
    status      Shows process status

    """
esac