#!/usr/bin/env bash if [ -z "${BASH_VERSION:-}" ]; then exec bash "$0" "$@" fi set -euo pipefail SCRIPT_PATH="$(cd "$(dirname "$0")" && pwd)/$(basename "$0")" SCRIPT_DIR="$(cd "$(dirname "${SCRIPT_PATH}")" && pwd)" INSTALL_DIR="${INSTALL_DIR:-${SCRIPT_DIR}}" REPO_URL="${REPO_URL:-https://forgejo.tailef61c0.ts.net/openclaw/lidarr-spotify-frontend.git}" REPO_BRANCH="${REPO_BRANCH:-main}" bootstrap_repo_into_install_dir() { local tmpdir tmpdir="$(mktemp -d)" trap 'rm -rf "${tmpdir}"' EXIT echo "==> Clone Repo nach temporaer: ${tmpdir}/repo" git clone --branch "${REPO_BRANCH}" "${REPO_URL}" "${tmpdir}/repo" echo "==> Kopiere Repo nach ${INSTALL_DIR}" cp -a "${tmpdir}/repo/." "${INSTALL_DIR}/" } is_allowed_bootstrap_file() { case "$1" in start.sh|.env|.env.unraid) return 0 ;; *) return 1 ;; esac } if [[ "${START_BOOTSTRAPPED:-0}" != "1" ]]; then if ! command -v git >/dev/null 2>&1; then echo "Fehler: git wurde nicht gefunden." exit 1 fi mkdir -p "${INSTALL_DIR}" if [[ -d "${INSTALL_DIR}/.git" ]]; then echo "==> Repo vorhanden, aktualisiere: ${INSTALL_DIR}" if [[ "${SKIP_GIT_PULL:-0}" != "1" ]]; then git -C "${INSTALL_DIR}" fetch --prune origin git -C "${INSTALL_DIR}" checkout "${REPO_BRANCH}" git -C "${INSTALL_DIR}" pull --ff-only origin "${REPO_BRANCH}" fi else mapfile -t existing_files < <(ls -A "${INSTALL_DIR}") if [[ "${#existing_files[@]}" -eq 0 ]]; then bootstrap_repo_into_install_dir else only_allowed=1 for file in "${existing_files[@]}"; do if ! is_allowed_bootstrap_file "${file}"; then only_allowed=0 break fi done if [[ "${only_allowed}" -eq 1 ]]; then bootstrap_repo_into_install_dir else echo "Fehler: ${INSTALL_DIR} ist kein Git-Repo und enthaelt bereits andere Dateien." echo "Bitte INSTALL_DIR setzen oder Verzeichnis leeren." exit 1 fi fi fi exec env \ START_BOOTSTRAPPED=1 \ INSTALL_DIR="${INSTALL_DIR}" \ REPO_URL="${REPO_URL}" \ REPO_BRANCH="${REPO_BRANCH}" \ SKIP_GIT_PULL="${SKIP_GIT_PULL:-0}" \ UNRAID_URL="${UNRAID_URL:-}" \ TEMPLATE_NAME="${TEMPLATE_NAME:-my-lidarr-spotify-frontend.xml}" \ bash "${INSTALL_DIR}/start.sh" "$@" fi PROJECT_ROOT="${INSTALL_DIR}" RUN_SCRIPT="${PROJECT_ROOT}/scripts/run-unraid.sh" if [[ ! -x "${RUN_SCRIPT}" ]]; then chmod +x "${RUN_SCRIPT}" fi for env_file in "${PROJECT_ROOT}/.env.unraid" "${PROJECT_ROOT}/.env"; do if [[ -f "${env_file}" ]]; then echo "==> Lade Umgebungswerte aus ${env_file}" # shellcheck disable=SC1090 set -a; source "${env_file}"; set +a break fi done "${RUN_SCRIPT}" TEMPLATE_NAME="${TEMPLATE_NAME:-my-lidarr-spotify-frontend.xml}" UNRAID_URL="${UNRAID_URL:-}" if [[ -z "${UNRAID_URL}" ]]; then if command -v hostname >/dev/null 2>&1; then HOST_IP="$(hostname -I 2>/dev/null | awk '{print $1}')" if [[ -n "${HOST_IP}" ]]; then UNRAID_URL="http://${HOST_IP}" fi fi fi if [[ -z "${UNRAID_URL}" ]]; then UNRAID_URL="http://tower" fi UNRAID_URL="${UNRAID_URL%/}" TARGET_URL="${UNRAID_URL}/Docker/AddContainer?xmlTemplate=user/${TEMPLATE_NAME}" echo "==> Template direkt aufrufen:" echo "${TARGET_URL}" if command -v xdg-open >/dev/null 2>&1; then xdg-open "${TARGET_URL}" >/dev/null 2>&1 || true elif command -v open >/dev/null 2>&1; then open "${TARGET_URL}" >/dev/null 2>&1 || true fi