#!/usr/bin/env bash set -euo pipefail export CHATGPT_LOCAL_HOME="${CHATGPT_LOCAL_HOME:-/data}" # If AUTH_JSON is provided as an environment variable, write it to auth.json if [[ -n "${AUTH_JSON:-}" ]]; then echo "Setting up auth from AUTH_JSON environment variable..." mkdir -p "$CHATGPT_LOCAL_HOME" echo "$AUTH_JSON" > "$CHATGPT_LOCAL_HOME/auth.json" chmod 600 "$CHATGPT_LOCAL_HOME/auth.json" fi cmd="${1:-serve}" shift || true bool() { case "${1:-}" in 1|true|TRUE|yes|YES|on|ON) return 0;; *) return 1;; esac } if [[ "$cmd" == "serve" ]]; then # Hugging Face Spaces expects port 7860 PORT="${PORT:-7860}" ARGS=(serve --host 0.0.0.0 --port "${PORT}") if bool "${VERBOSE:-}" || bool "${CHATGPT_LOCAL_VERBOSE:-}"; then ARGS+=(--verbose) fi if bool "${VERBOSE_OBFUSCATION:-}" || bool "${CHATGPT_LOCAL_VERBOSE_OBFUSCATION:-}"; then ARGS+=(--verbose-obfuscation) fi if bool "${FAST_MODE:-}" || bool "${CHATGPT_LOCAL_FAST_MODE:-}"; then ARGS+=(--fast-mode) fi if [[ "$#" -gt 0 ]]; then ARGS+=("$@") fi exec chatmock "${ARGS[@]}" elif [[ "$cmd" == "login" ]]; then ARGS=(login --no-browser) if bool "${VERBOSE:-}" || bool "${CHATGPT_LOCAL_VERBOSE:-}"; then ARGS+=(--verbose) fi exec chatmock "${ARGS[@]}" else exec "$cmd" "$@" fi