Files
appstore/apps/hermes-agent/latest/scripts/init.sh
T

49 lines
1.4 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
ENV_FILE="$ROOT_DIR/.env"
APP_DATA_DIR_RAW="${APP_DATA_DIR:-./data}"
DEFAULT_UID="10000"
DEFAULT_GID="10000"
TARGET_UID="${HERMES_UID:-$DEFAULT_UID}"
TARGET_GID="${HERMES_GID:-$DEFAULT_GID}"
if [[ "$APP_DATA_DIR_RAW" = /* ]]; then
APP_DATA_DIR_ABS="$APP_DATA_DIR_RAW"
else
APP_DATA_DIR_ABS="$ROOT_DIR/${APP_DATA_DIR_RAW#./}"
fi
mkdir -p "$APP_DATA_DIR_ABS"
upsert_env_if_missing() {
local key="$1"
local value="$2"
if [[ ! -f "$ENV_FILE" ]]; then
return 0
fi
if ! grep -q "^${key}=" "$ENV_FILE" 2>/dev/null; then
printf '\n%s=%s\n' "$key" "$value" >> "$ENV_FILE"
fi
}
if [[ -f "$ENV_FILE" ]]; then
EXISTING_UID=$(grep '^HERMES_UID=' "$ENV_FILE" 2>/dev/null | tail -n 1 | cut -d '=' -f 2- || true)
EXISTING_GID=$(grep '^HERMES_GID=' "$ENV_FILE" 2>/dev/null | tail -n 1 | cut -d '=' -f 2- || true)
[[ -n "$EXISTING_UID" ]] && TARGET_UID="$EXISTING_UID"
[[ -n "$EXISTING_GID" ]] && TARGET_GID="$EXISTING_GID"
fi
upsert_env_if_missing "HERMES_UID" "$TARGET_UID"
upsert_env_if_missing "HERMES_GID" "$TARGET_GID"
CURRENT_UID=$(stat -c '%u' "$APP_DATA_DIR_ABS" 2>/dev/null || echo '')
CURRENT_GID=$(stat -c '%g' "$APP_DATA_DIR_ABS" 2>/dev/null || echo '')
if [[ "$CURRENT_UID" != "$TARGET_UID" || "$CURRENT_GID" != "$TARGET_GID" ]]; then
chown -R "$TARGET_UID:$TARGET_GID" "$APP_DATA_DIR_ABS" 2>/dev/null || true
fi