#!/usr/bin/env bash
#
# 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.
#

# STORM-2486: Prevent `cd` from printing the target directory.
unset CDPATH

# Resolve links - $0 may be a softlink
PRG="${0}"

while [ -h "${PRG}" ]; do
  ls=`ls -ld "${PRG}"`
  link=`expr "$ls" : '.*-> \(.*\)$'`
  if expr "$link" : '/.*' > /dev/null; then
    PRG="$link"
  else
    PRG=`dirname "${PRG}"`/"$link"
  fi
done

# check for version
if [ -z $PYTHON ]; then
  PYTHON="/usr/bin/env python3"
fi
majversion=`$PYTHON -V 2>&1 | awk '{print $2}' | cut -d'.' -f1`
minversion=`$PYTHON -V 2>&1 | awk '{print $2}' | cut -d'.' -f2`
numversion=$(( 10 * $majversion + $minversion))
if (( $numversion < 30 )); then
  echo "Need Python version > 3.0"
  exit 1
fi

STORM_BIN_DIR=`dirname ${PRG}`
export STORM_BASE_DIR=`cd ${STORM_BIN_DIR}/..;pwd`

#check to see if the conf dir or file is given as an optional argument
if [ $# -gt 1 ]; then
  if [ "--config" = "$1" ]; then
    conf_file=$2
    if [ -d "$conf_file" ]; then
      conf_file=$conf_file/storm.yaml
    fi
    if [ ! -f "$conf_file" ]; then
      echo "Error: Cannot find configuration file: $conf_file"
      exit 1
    fi
    STORM_CONF_FILE=$conf_file
    STORM_CONF_DIR=`dirname $conf_file`
  fi
fi

export STORM_CONF_DIR="${STORM_CONF_DIR:-$STORM_BASE_DIR/conf}"
export STORM_CONF_FILE="${STORM_CONF_FILE:-$STORM_BASE_DIR/conf/storm.yaml}"

if [ -f "${STORM_CONF_DIR}/storm-env.sh" ]; then
  . "${STORM_CONF_DIR}/storm-env.sh"
fi

exec "${STORM_BIN_DIR}/storm.py" "$@"
