103 lines
3.2 KiB
Bash
Executable File
103 lines
3.2 KiB
Bash
Executable File
#!/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 <<EOF
|
|
|
|
Setup complete.
|
|
|
|
Run manually:
|
|
cd $PROJECT_DIR
|
|
bash run-worker.sh
|
|
bash run-api.sh
|
|
|
|
Dashboard:
|
|
http://127.0.0.1:8787/
|
|
EOF
|