From 516989b8e65e05543bcd89bb7e33cda1dd04d0fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E5=AE=B6=E8=AE=AD?= Date: Mon, 3 Aug 2026 15:11:35 +0800 Subject: [PATCH] Add portable shell launcher --- scripts/start.sh | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100755 scripts/start.sh diff --git a/scripts/start.sh b/scripts/start.sh new file mode 100755 index 0000000..b40d02c --- /dev/null +++ b/scripts/start.sh @@ -0,0 +1,38 @@ +#!/usr/bin/env sh +set -eu + +SCRIPT_DIR=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd) +APP_HOME=$(dirname -- "$SCRIPT_DIR") + +JAR_PATH="" +for candidate in "$APP_HOME"/target/workutils-*.jar; do + if [ -f "$candidate" ] && [ "${candidate%-plain.jar}" = "$candidate" ]; then + JAR_PATH=$candidate + break + fi +done + +if [ -z "$JAR_PATH" ]; then + echo "[ERROR] WorkUtils JAR not found under $APP_HOME/target" >&2 + exit 1 +fi + +if ! command -v java >/dev/null 2>&1; then + echo "[ERROR] Java is not available. WorkUtils requires Java 17+." >&2 + exit 1 +fi + +JAVA_VERSION=$(java -version 2>&1 | awk -F '"' '/version/ { print $2; exit }') +JAVA_MAJOR=$(printf '%s\n' "$JAVA_VERSION" | awk -F. '{ if ($1 == 1) print $2; else print $1 }') +case "$JAVA_MAJOR" in + ''|*[!0-9]*) + echo "[ERROR] Unable to determine Java version: $JAVA_VERSION" >&2 + exit 1 + ;; +esac +if [ "$JAVA_MAJOR" -lt 17 ]; then + echo "[ERROR] Java $JAVA_VERSION found. WorkUtils requires Java 17+." >&2 + exit 1 +fi + +exec java -Dfile.encoding=UTF-8 "-Dworkutils.home=$APP_HOME" -jar "$JAR_PATH" "$@"