| #!/usr/bin/env bash |
| set -euo pipefail |
|
|
| export CHATGPT_LOCAL_HOME="${CHATGPT_LOCAL_HOME:-/data}" |
|
|
| |
| 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 |
| |
| 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 |
|
|