meme / space_boot.sh
qwqcc's picture
Upload 4 files
a7eca70 verified
#!/usr/bin/env bash
set -euo pipefail
# Ensure a predictable and writable config location for meme_generator
# Default to /tmp/config (writable). Allow override via XDG_CONFIG_HOME.
export XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-/tmp/config}"
CONFIG_DIR="${XDG_CONFIG_HOME}/meme_generator"
CONFIG_FILE="${CONFIG_DIR}/config.toml"
mkdir -p "${CONFIG_DIR}"
PORT="${PORT:-7860}"
MEME_DATA_DIR="${MEME_DATA_DIR:-/app/data}"
# Snapshot translator env for logs (no secrets printed)
PROV="${TRANSLATOR_PROVIDER:-}"
OPENAI_KEY_STATE="missing"
if [ -n "${OPENAI_API_KEY:-}" ]; then OPENAI_KEY_STATE="present"; fi
echo "[space] PORT=${PORT} MEME_DATA_DIR=${MEME_DATA_DIR}"
echo "[space] Translator env: provider=${PROV:-auto} OPENAI_BASE_URL=${OPENAI_BASE_URL:-<empty>} OPENAI_MODEL=${OPENAI_MODEL:-<empty>} OPENAI_API_KEY=${OPENAI_KEY_STATE}"
# Write minimal config to defer builtin load and set server defaults
cat >"${CONFIG_FILE}" <<EOF
[meme]
load_builtin_memes = false
meme_dirs = []
[translate]
provider = "${TRANSLATOR_PROVIDER:-}"
openai_base_url = "${OPENAI_BASE_URL:-}"
openai_api_key = "${OPENAI_API_KEY:-}"
openai_model = "${OPENAI_MODEL:-}"
[server]
host = "0.0.0.0"
port = ${PORT}
[log]
log_level = "INFO"
EOF
echo "[space] Wrote config to ${CONFIG_FILE}"
# Choose a Python interpreter (prefer virtualenv if present)
if [ -n "${VIRTUAL_ENV:-}" ] && [ -x "${VIRTUAL_ENV}/bin/python" ]; then
PY_BIN="${VIRTUAL_ENV}/bin/python"
elif [ -x "/opt/venv/bin/python" ]; then
PY_BIN="/opt/venv/bin/python"
elif command -v python >/dev/null 2>&1; then
PY_BIN="$(command -v python)"
elif command -v python3 >/dev/null 2>&1; then
PY_BIN="$(command -v python3)"
else
echo "[space] Error: no python interpreter found (virtualenv/python/python3)" >&2
exit 1
fi
echo "[space] Using interpreter: ${PY_BIN}"
exec "${PY_BIN}" -u /workspace/bootstrap.py