97 lines
2.2 KiB
Bash
Executable File
97 lines
2.2 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -euo pipefail
|
|
[[ "${TRACE:-}" ]] && set -x
|
|
|
|
check_java() {
|
|
_find_java_cmd
|
|
|
|
version_command=("${JAVA_CMD}" "-version")
|
|
[[ -n "${JAVA_MEMORY_OPTS:-}" ]] && version_command+=("${JAVA_MEMORY_OPTS[@]}")
|
|
|
|
JAVA_VERSION=$("${version_command[@]}" 2>&1 | awk -F '"' '/version/ {print $2}')
|
|
if [[ $JAVA_VERSION = "1."* ]]; then
|
|
if [[ "${JAVA_VERSION}" < "1.8" ]]; then
|
|
echo "ERROR! Java version ${JAVA_VERSION} is not supported. "
|
|
_show_java_help
|
|
exit 1
|
|
fi
|
|
fi
|
|
}
|
|
|
|
_find_java_cmd() {
|
|
[[ "${JAVA_CMD:-}" ]] && return
|
|
detect_os
|
|
_find_java_home
|
|
|
|
if [[ "${JAVA_HOME:-}" ]] ; then
|
|
JAVA_CMD="${JAVA_HOME}/bin/java"
|
|
if [[ ! -f "${JAVA_CMD}" ]]; then
|
|
echo "ERROR: JAVA_HOME is incorrectly defined as ${JAVA_HOME} (the executable ${JAVA_CMD} does not exist)"
|
|
exit 1
|
|
fi
|
|
else
|
|
if [ "${DIST_OS}" != "macosx" ] ; then
|
|
# Don't use default java on Darwin because it displays a misleading dialog box
|
|
JAVA_CMD="$(which java || true)"
|
|
fi
|
|
fi
|
|
|
|
if [[ ! "${JAVA_CMD:-}" ]]; then
|
|
echo "ERROR: Unable to find Java executable."
|
|
_show_java_help
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
detect_os() {
|
|
if uname -s | grep -q Darwin; then
|
|
DIST_OS="macosx"
|
|
elif [[ -e /etc/gentoo-release ]]; then
|
|
DIST_OS="gentoo"
|
|
else
|
|
DIST_OS="other"
|
|
fi
|
|
}
|
|
|
|
_find_java_home() {
|
|
[[ "${JAVA_HOME:-}" ]] && return
|
|
|
|
case "${DIST_OS}" in
|
|
"macosx")
|
|
JAVA_HOME="$(/usr/libexec/java_home -v 1.8+)"
|
|
;;
|
|
"gentoo")
|
|
JAVA_HOME="$(java-config --jre-home)"
|
|
;;
|
|
esac
|
|
}
|
|
|
|
_show_java_help() {
|
|
echo "* Please use Oracle(R) Java(TM) >=8 or OpenJDK(TM) >=8."
|
|
}
|
|
|
|
build_classpath() {
|
|
APP_HOME="$(cd "$(dirname "$0")" && pwd)"
|
|
# First try in sub directory
|
|
JARPATH="$(find "${APP_HOME}" -name "cypher-shell.jar" )"
|
|
|
|
# Then try installation directory (prefix/bin and prefix/share/cypher-shell/lib)
|
|
if [[ -z "${JARPATH}" ]]; then
|
|
APP_HOME="${APP_HOME}/../share/cypher-shell"
|
|
JARPATH="$(find "${APP_HOME}" -name "cypher-shell.jar" )"
|
|
fi
|
|
}
|
|
|
|
check_java
|
|
build_classpath
|
|
|
|
if [ -z "${JARPATH}" ]; then
|
|
echo "Unable to locate cypher-shell library files" >&2
|
|
exit 1
|
|
fi
|
|
|
|
exec "$JAVA_CMD" ${JAVA_OPTS:-} \
|
|
-jar "$JARPATH" \
|
|
"$@"
|