127 lines
3.5 KiB
Bash
Executable file
127 lines
3.5 KiB
Bash
Executable file
#!/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)"
|
|
LOCAL_RUN_SCRIPT="${SCRIPT_DIR}/scripts/run-unraid.sh"
|
|
|
|
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" && ! -f "${LOCAL_RUN_SCRIPT}" ]]; 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
|