#!/bin/bash

if [ -z "$NODE" ]; then
  NODE="ssh-agent@server.l"
fi

BOOTARGS="$SSH_AGENT_BOOTARGS"
ERLARGS=""

export ERL_CRASH_DUMP_SECONDS=0

# production defaults

while [ $# -ge 1 ]; do
  opt="$1"
  OPTARG="$2"
  shift
  case $opt in
    --help|-h)
      echo "$0 [-n nodename] [-s server_id_path] [-c config_path] [-l log_dir] [-p pidfile] [--console-level LEVEL]"
      echo "  -s   default priv/server.id or /etc/flussonic/server.id:  path to server id file"
      echo "  -c   default priv/flussonic.conf or /etc/flussonic/flussonic.conf:  path to config file"
      echo "  -l   default /var/log/flussonic:  path to log directory"
      echo "  -e   endpoint url"
      echo "  -p   default none:  path to pidfile"
      echo "  -noinput   disable interactive console for systemd"
      exit 1
      ;;
    --node|-n)
      NODE=$OPTARG
      shift
      ;;
    --server_id_path|-s)
      SERVER_ID_PATH="$OPTARG"
      shift
      ;;
    --debug)
      BOOTARGS="$BOOTARGS console_level debug"
      ;;
    --console_level|--console-level)
      BOOTARGS="$BOOTARGS console_level ${OPTARG}"
      shift
      ;;
    --config|-c)
      CONFIG_PATH="$OPTARG"
      shift
      ;;
    --logs|-l)
      BOOTARGS="$BOOTARGS log_dir $OPTARG"
      shift
      ;;
    --pid|-p)
      PIDFILE="$OPTARG"
      shift
      ;;
    --endpoint|-e)
      ENDPOINT="$OPTARG"
      shift
      ;;
    -noinput)
      ERLARGS="$ERLARGS -noinput"
      ;;
    *)
      echo "Invalid option '$opt' '$OPTARG'"
      exit 4
  esac
done

if [ -n "$ERL_LIBS" ]; then
  export ERL_LIBS=$ERL_LIBS
elif [ -d _build/prod/opt/flussonic/lib/ ]; then
  export ERL_LIBS=_build/prod/opt/flussonic/lib/
elif [ -d _build/default/lib ]; then
  export ERL_LIBS=_build/default/lib
else
  export ERL_LIBS=/opt/flussonic/lib
fi

if [ "$PIDFILE" != "" ] && [ -f $PIDFILE ]; then
  if kill -0 `cat $PIDFILE` 2>/dev/null ; then
    echo "Seems that ssh-agent is running under pid `cat $PIDFILE`. Stop it first"
    exit 5
  fi
fi

if [ ! -z "$ENDPOINT" ]; then
  BOOTARGS="$BOOTARGS endpoint $ENDPOINT"  
fi

if [ ! -z "$PIDFILE" ]; then
  BOOTARGS="$BOOTARGS pidfile $PIDFILE"
fi

if [ ! -z "$SERVER_ID_PATH" ]; then
  BOOTARGS="$BOOTARGS server_id_path $SERVER_ID_PATH"
fi

if [ ! -z "$CONFIG_PATH" ]; then
  BOOTARGS="$BOOTARGS config_path $CONFIG_PATH"
fi

if [ -z ${ERL_INETRC+x} ]; then
  if [ -f /opt/flussonic/.inetrc ]; then
    export ERL_INETRC=/opt/flussonic/.inetrc
  else
    export ERL_INETRC=`pwd`/deploy/packaging/root/opt/flussonic/.inetrc
  fi
fi

set -x
exec /opt/flussonic/bin/erl -name $NODE -boot start_sasl -sasl errlog_type error $ERLARGS -s support_ssh_agent start $BOOTARGS

