#!/bin/bash

# 函数：显示帮助信息
show_help() {
  echo "Usage:"
  echo "  RainSQL"
  echo "      Prompts for interactive input."
  echo "  RainSQL -a accessKey -s secretKey -e endpoint"
  echo "      Accepts parameters from the command line."
}

# 函数：处理交互式输入
interactive_input() {
  while [ -z "$metaEndpoint" ]; do
    read -p "Enter meta endpoint: " metaEndpoint
  done

  while [ -z "$accessKey" ]; do
    read -p "Enter access key: " accessKey
  done

  while [ -z "$secretKey" ]; do
    read -s -p "Enter secret key: " secretKey
    echo
  done
}

# 函数：检查Java版本
check_java_version() {
  if type -p java > /dev/null; then
    _java=java
  elif [[ -n "$JAVA_HOME" ]] && [[ -x "$JAVA_HOME/bin/java" ]]; then
    _java="$JAVA_HOME/bin/java"
  else
    echo "Java is not installed."
    exit 1
  fi

  if [[ "$_java" ]]; then
    version=$("$_java" -version 2>&1 | awk -F[\"._] '/version/ {print $2$3}')
    if [[ "$version" -lt 18 ]]; then
      echo "Java 8 or later is required."
      exit 1
    fi
  fi
}

# 函数：检查JAR文件是否存在
check_jar_file() {
  if [[ ! -f "$JAR_FILE" ]]; then
    echo "JAR file $JAR_FILE not found."
    exit 1
  fi
}
# 默认值
accessKey=""
secretKey=""
metaEndpoint=""
script_path=$(cd $(dirname $0);pwd)
#echo $script_path
cd $script_path
JAR_FILE="rainSqlClient-1.0-SNAPSHOT.jar"
# 检查Java版本
check_java_version

# 检查JAR文件
check_jar_file

# 解析命令行参数
while getopts "a:s:e" opt; do
  case $opt in
    a)
      accessKey=$OPTARG
      ;;
    s)
      secretKey=$OPTARG
      ;;
    e)
      metaEndpoint=$OPTARG
      ;;
    h)
      show_help
      exit 0
      ;;
    \?)
      echo "Invalid option: -$OPTARG" >&2
      show_help
      exit 1
      ;;
    :)
      echo "Option -$OPTARG requires an argument." >&2
      show_help
      exit 1
      ;;
  esac
done

# 如果没有提供参数，则进行交互式输入
if [ -z "$accessKey" ] || [ -z "$secretKey" ] || [ -z "$metaEndpoint" ]; then
  interactive_input
fi

# 验证必需参数是否已提供
if [ -z "$accessKey" ] || [ -z "$secretKey" ] || [ -z "$metaEndpoint" ]; then
  echo "Error: serverWeb, username, and password are required." >&2
  exit 1
fi

# 执行Java程序
java -jar $JAR_FILE "$accessKey" "$secretKey" "$metaEndpoint"
