#!/usr/bin/env bash set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" APP_HOME="$(dirname "$SCRIPT_DIR")" JAR_PATH="$APP_HOME/lib/redis-clip-sync.jar" LOG_FILE="$APP_HOME/logs/app.log" PID_FILE="$APP_HOME/run/app.pid" FOREGROUND="false" CONFIG_PATH="$APP_HOME/conf/config.properties" for arg in "$@"; do if [[ "$arg" == "--foreground" ]]; then FOREGROUND="true" elif [[ "$arg" == *.properties ]]; then CONFIG_PATH="$arg" fi done if [[ ! -f "$JAR_PATH" ]]; then echo "Jar not found: $JAR_PATH" exit 1 fi if [[ ! -f "$CONFIG_PATH" ]]; then echo "Config not found: $CONFIG_PATH" exit 1 fi mkdir -p "$APP_HOME/logs" "$APP_HOME/run" if [[ "$FOREGROUND" == "true" ]]; then exec java -jar "$JAR_PATH" "$CONFIG_PATH" fi if [[ -f "$PID_FILE" ]] && kill -0 "$(cat "$PID_FILE")" 2>/dev/null; then echo "RedisClipSync already running (pid=$(cat "$PID_FILE"))." exit 0 fi nohup java -jar "$JAR_PATH" "$CONFIG_PATH" >> "$LOG_FILE" 2>&1 & echo $! > "$PID_FILE" echo "RedisClipSync started (pid=$(cat "$PID_FILE"))."