#!/bin/bash -eu

# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

if [ "$#" -gt 4 ] || [ "$#" -eq 0 ]
then
  >&2 echo "usage: $0 <service> [conf-dir]"
  exit 1
fi

PWD="$(pwd)"
WHEREAMI="$(dirname "$0")"
WHATAMI="$1"

if [ "$#" -eq 1 ]
then
  CONFDIR="$WHEREAMI/../conf"
else
  CONFDIR="$2"
fi

CONFDIR="$(cd "$CONFDIR">/dev/null && pwd)"
WHEREAMI="$(cd "$WHEREAMI">/dev/null && pwd)"

LOG_DIR="${DRUID_LOG_DIR:=${WHEREAMI}/../log}"
# Remove possible ending slash
if [[ $LOG_DIR == */ ]];
then
  LOG_DIR=${LOG_DIR%?}
fi
if [ ! -d "$LOG_DIR" ]; then mkdir -p $LOG_DIR; fi

echo "Running [$1], logging to [$LOG_DIR/$1.log] if no changes made to log4j2.xml"

if [ "$WHATAMI" = 'coordinator-overlord' ]
then
    SERVER_NAME=coordinator
else
    SERVER_NAME="$WHATAMI"
fi


if [ ! -f "$CONFDIR"/$WHATAMI/main.config ];
  then
    MAIN_CLASS="org.apache.druid.cli.Main server $SERVER_NAME"
  else
    MAIN_CLASS=`cat "$CONFDIR"/$WHATAMI/main.config | xargs`
fi

cd "$WHEREAMI/.."

CLASS_PATH="$CONFDIR"/"$WHATAMI":"$CONFDIR"/_common:"$CONFDIR"/_common/hadoop-xml:"$CONFDIR"/../_common:"$CONFDIR"/../_common/hadoop-xml:"$WHEREAMI/../lib/*"

if [ "$#" -eq 3 ] || [ "$#" -eq 4 ]
then
  # args: <service> <conf_path> <jvm_args> or <service> <conf_path> <jvm_args> <mm_task_count mm_task_java_props>
  JVMARGS=`cat "$CONFDIR/_common/common.jvm.config" | xargs`
  JVMARGS+=' '
  JVMARGS+=$3

  if [ "$#" -eq 3 ]
  then
    # args: <service> <conf_path> <jvm_args>
    exec "$WHEREAMI"/run-java -Ddruid.node.type=$1 "-Ddruid.log.path=$LOG_DIR" $JVMARGS \
      -cp $CLASS_PATH $MAIN_CLASS
  else
    # args: <service> <conf_path> <jvm_args> <mm_task_count mm_task_java_props>
    exec "$WHEREAMI"/run-java -Ddruid.node.type=$1 $4 "-Ddruid.log.path=$LOG_DIR"  $JVMARGS \
      -cp $CLASS_PATH $MAIN_CLASS
  fi
else
  # args: <service> <conf_path>
  exec "$WHEREAMI"/run-java -Ddruid.node.type=$1 "-Ddruid.log.path=$LOG_DIR" \
    `cat "$CONFDIR"/"$WHATAMI"/jvm.config | xargs` \
    -cp  $CLASS_PATH $MAIN_CLASS
fi
