[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/wodby/python/chore/drop-python310/bin/workspace-python [Back]  [Original]

#!/bin/sh
# Dependencies live on the shared checkout; the runner home stays private.
set -eu
cd "${APP_ROOT:-/usr/src/app}"
state=$(workspace-path)
export VIRTUAL_ENV="$state/venv" UV_PROJECT_ENVIRONMENT="$state/venv" PIP_USER=0
export PATH="$VIRTUAL_ENV/bin:$PATH"
export HOST="${HOST:-0.0.0.0}" PORT="${PORT:-8080}"
export WATCHFILES_FORCE_POLLING="${WATCHFILES_FORCE_POLLING:-true}"
case "${1:-}" in
 prepare)
  if [ -f uv.lock ]; then uv sync --locked
  elif [ -f requirements.txt ]; then
   python -m venv "$VIRTUAL_ENV"
   "$VIRTUAL_ENV/bin/python" -m pip install -r requirements.txt
  else echo 'Provide uv.lock with pyproject.toml or requirements.txt' >&2; exit 1; fi ;;
 start)
  [ -x "$VIRTUAL_ENV/bin/python" ] || { echo 'Run workspace preparation first' >&2; exit 1; }
  if [ -n "${WORKSPACE_PYTHON_COMMAND:-}" ]; then exec sh -ec "$WORKSPACE_PYTHON_COMMAND"; fi
  exec python -m gunicorn --bind "$HOST:$PORT" --reload --reload-engine poll "${GUNICORN_APP:-myapp.wsgi:application}" ;;
 *) echo 'Usage: workspace-python prepare|start' >&2; exit 1 ;;
esac

Web Proxy Viewer  |  New URL  |  Original Page