mirror of
https://github.com/okxlin/appstore.git
synced 2026-09-24 16:01:02 +00:00
49 lines
1.4 KiB
Bash
Executable File
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
|