#!/usr/bin/env bash set -euo pipefail PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" LOCAL_VENV="$PROJECT_DIR/.venv" echo "==> biliup-next setup" echo "project: $PROJECT_DIR" if command -v python3 >/dev/null 2>&1; then PYTHON_BIN="$(command -v python3)" else echo "python3 not found" >&2 exit 1 fi if [[ ! -d "$LOCAL_VENV" ]]; then echo "==> create virtualenv: $LOCAL_VENV" "$PYTHON_BIN" -m venv "$LOCAL_VENV" fi VENV_PYTHON="$LOCAL_VENV/bin/python" VENV_PIP="$LOCAL_VENV/bin/pip" echo "==> install package" "$VENV_PYTHON" -m pip install --upgrade pip >/dev/null "$VENV_PIP" install -e "$PROJECT_DIR" if [[ -f "$PROJECT_DIR/config/settings.json" ]]; then echo "==> settings file exists" elif [[ -f "$PROJECT_DIR/config/settings.standalone.example.json" ]]; then echo "==> seed standalone settings.json from template" cp "$PROJECT_DIR/config/settings.standalone.example.json" "$PROJECT_DIR/config/settings.json" fi if [[ ! -f "$PROJECT_DIR/config/settings.staged.json" && -f "$PROJECT_DIR/config/settings.json" ]]; then echo "==> seed settings.staged.json" cp "$PROJECT_DIR/config/settings.json" "$PROJECT_DIR/config/settings.staged.json" fi echo "==> init workspace" PYTHONPATH="$PROJECT_DIR/src" "$VENV_PYTHON" -m biliup_next.app.cli init-workspace mkdir -p "$PROJECT_DIR/runtime/logs" if [[ ! -f "$PROJECT_DIR/runtime/cookies.json" && -f "$PROJECT_DIR/runtime/cookies.example.json" ]]; then echo "==> seed runtime/cookies.json from template" cp "$PROJECT_DIR/runtime/cookies.example.json" "$PROJECT_DIR/runtime/cookies.json" fi if [[ ! -f "$PROJECT_DIR/runtime/upload_config.json" && -f "$PROJECT_DIR/runtime/upload_config.example.json" ]]; then echo "==> seed runtime/upload_config.json from template" cp "$PROJECT_DIR/runtime/upload_config.example.json" "$PROJECT_DIR/runtime/upload_config.json" fi echo "==> sync local runtime assets when available" PYTHONPATH="$PROJECT_DIR/src" "$VENV_PYTHON" -m biliup_next.app.cli sync-legacy-assets || true echo "==> verify bundled runtime assets" for REQUIRED_ASSET in \ "$PROJECT_DIR/runtime/cookies.json" \ "$PROJECT_DIR/runtime/upload_config.json" do if [[ ! -e "$REQUIRED_ASSET" ]]; then echo "missing required runtime asset: $REQUIRED_ASSET" >&2 echo "populate biliup-next/runtime first, or run sync-legacy-assets as a one-time import." >&2 exit 1 fi done if [[ ! -e "$PROJECT_DIR/runtime/biliup" ]]; then echo "warning: runtime/biliup not found; publish provider will remain unavailable until you copy or install it." >&2 fi echo "==> runtime doctor" PYTHONPATH="$PROJECT_DIR/src" "$VENV_PYTHON" -m biliup_next.app.cli doctor echo echo "Optional external dependencies expected by current providers:" echo " ffmpeg / ffprobe / codex / biliup" echo " runtime assets must live under biliup-next/runtime" echo read -r -p "Install systemd services now? [y/N] " INSTALL_SYSTEMD if [[ "${INSTALL_SYSTEMD:-N}" =~ ^[Yy]$ ]]; then echo "==> install systemd units" BILIUP_NEXT_PYTHON="$VENV_PYTHON" bash "$PROJECT_DIR/install-systemd.sh" else echo "skip systemd install" fi cat <