| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- #!/bin/sh
- set -e
- # Include app binaries in our path
- export PATH="/app/.venv/bin:$PATH"
- # Shared config
- : "${ROOM_CAL_DATA_HOME:=/config}"
- export ROOM_CAL_DATA_HOME
- if [ -z "$TZ" ] && [ -f "$ROOM_CAL_DATA_HOME/config.json" ]; then
- TZ=$(python3 -c "import json,sys; print(json.load(open('$ROOM_CAL_DATA_HOME/config.json')).get('timezone',''))" 2>/dev/null || true)
- fi
- : "${TZ:=UTC}"
- export TZ
- if [ -z "$ROOM_CAL_API_URL" ] && [ -f "$ROOM_CAL_DATA_HOME/config.json" ]; then
- ROOM_CAL_API_URL=$(python3 -c "import json,sys; print(json.load(open('$ROOM_CAL_DATA_HOME/config.json')).get('api_url',''))" 2>/dev/null || true)
- fi
- export ROOM_CAL_API_URL
- SERVICE="${1:-api}"
- # MCP
- if [ "$SERVICE" = "mcp" ]; then
- : "${FASTMCP_HOST:=0.0.0.0}"
- : "${FASTMCP_PORT:=8001}"
- : "${FASTMCP_LOG_LEVEL:=INFO}"
- : "${FASTMCP_ENABLE_RICH_LOGGING:=false}"
- : "${FASTMCP_ENABLE_RICH_TRACEBACKS:=false}"
- export FASTMCP_TRANSPORT=http
- export FASTMCP_HOST FASTMCP_PORT FASTMCP_LOG_LEVEL
- export FASTMCP_ENABLE_RICH_LOGGING FASTMCP_ENABLE_RICH_TRACEBACKS
- exec room-mcp
- fi
- # Shared API config
- : "${API_HOST:=0.0.0.0}"
- : "${API_PORT:=8000}"
- : "${LOG_LEVEL:=info}"
- LOG_CONFIG=/etc/uvicorn_log.json
- [ -f "${ROOM_CAL_DATA_HOME}/uvicorn_log.json" ] && LOG_CONFIG="${ROOM_CAL_DATA_HOME}/uvicorn_log.json"
- # Calc-only API
- if [ "$SERVICE" = "calc" ]; then
- exec uvicorn "room_cal.api.calc_app:app" \
- --host "$API_HOST" \
- --port "$API_PORT" \
- --log-config "$LOG_CONFIG" \
- --log-level "$LOG_LEVEL"
- # Standard API
- else
- exec uvicorn "room_cal.api:create_app" --factory \
- --host "$API_HOST" \
- --port "$API_PORT" \
- --log-config "$LOG_CONFIG" \
- --log-level "$LOG_LEVEL"
- fi
|