53 lines
1.5 KiB
Bash
Executable File
53 lines
1.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)"
|
|
INSTALL_ROOT="${ERP_INSTALL_ROOT:-$(cd "$SCRIPT_DIR/../.." && pwd -P)}"
|
|
CONFIG_FILE="${ERP_CONFIG_FILE:-$INSTALL_ROOT/config/erp.env}"
|
|
|
|
if [[ ! -r "$CONFIG_FILE" ]]; then
|
|
printf '[ERP] configuration not readable: %s\n' "$CONFIG_FILE" >&2
|
|
exit 1
|
|
fi
|
|
|
|
set -a
|
|
# The installer creates this file with shell-escaped values and mode 0640.
|
|
# shellcheck disable=SC1090
|
|
source "$CONFIG_FILE"
|
|
set +a
|
|
|
|
RUN_DIR="${ERP_RUN_DIR:-$INSTALL_ROOT/run}"
|
|
JAR_PATH="${ERP_JAR_PATH:-$INSTALL_ROOT/current/app/kaidi-erp.jar}"
|
|
JAVA_BIN="${ERP_JAVA_BIN:-}"
|
|
|
|
if [[ -z "$JAVA_BIN" ]]; then
|
|
if [[ -n "${JAVA_HOME:-}" && -x "$JAVA_HOME/bin/java" ]]; then
|
|
JAVA_BIN="$JAVA_HOME/bin/java"
|
|
else
|
|
JAVA_BIN="$(command -v java || true)"
|
|
fi
|
|
fi
|
|
|
|
if [[ -z "$JAVA_BIN" || ! -x "$JAVA_BIN" ]]; then
|
|
printf '[ERP] Java 17+ is not installed\n' >&2
|
|
exit 1
|
|
fi
|
|
JAVA_MAJOR="$("$JAVA_BIN" -version 2>&1 | awk -F'[".]' '/version/ {print $2; exit}')"
|
|
if [[ ! "$JAVA_MAJOR" =~ ^[0-9]+$ || "$JAVA_MAJOR" -lt 17 ]]; then
|
|
printf '[ERP] Java 17+ is required\n' >&2
|
|
exit 1
|
|
fi
|
|
if [[ ! -r "$JAR_PATH" ]]; then
|
|
printf '[ERP] application jar not readable: %s\n' "$JAR_PATH" >&2
|
|
exit 1
|
|
fi
|
|
|
|
mkdir -p "$RUN_DIR"
|
|
printf '%s\n' "$$" > "$RUN_DIR/app.pid"
|
|
|
|
IFS=$' \t' read -r -a JAVA_OPTS <<< "${ERP_JAVA_OPTS:--Xms512m -Xmx2g}"
|
|
exec "$JAVA_BIN" "${JAVA_OPTS[@]}" \
|
|
-jar "$JAR_PATH" \
|
|
--spring.profiles.active=postgres \
|
|
--server.port="${SERVER_PORT:-8091}"
|