#!/usr/bin/env sh set -eu COMMAND_NAME="${1:-web}" COMMAND_BASENAME="${COMMAND_NAME##*/}" log() { printf '%s\n' "$*" >&2 } validate_settings_module() { case "${DJANGO_SETTINGS_MODULE}" in settings.dev|settings.production|settings.test) ;; *) log "[startup] unsupported DJANGO_SETTINGS_MODULE=${DJANGO_SETTINGS_MODULE}" exit 1 ;; esac } run_dependency_checks() { /app/docker/scripts/check-deps.sh } run_migrations_if_enabled() { default_value="$1" if [ "${RUN_MIGRATIONS:-$default_value}" = "1" ]; then log "[startup:${STARTUP_COMPONENT}] applying migrations" python src/manage.py migrate --noinput fi } run_collectstatic_on_migrate() { if [ "${COLLECTSTATIC_ON_MIGRATE:-0}" = "1" ]; then log "[startup:${STARTUP_COMPONENT}] collecting static files" python src/manage.py collectstatic --noinput fi } start_web() { export DJANGO_SETTINGS_MODULE="${DJANGO_SETTINGS_MODULE:-settings.production}" export STARTUP_COMPONENT="${STARTUP_COMPONENT:-web}" validate_settings_module run_dependency_checks run_migrations_if_enabled 1 shift exec /app/docker/scripts/start-web.sh "$@" } start_web_dev() { export DJANGO_SETTINGS_MODULE="${DJANGO_SETTINGS_MODULE:-settings.dev}" export STARTUP_COMPONENT="${STARTUP_COMPONENT:-web}" validate_settings_module run_dependency_checks run_migrations_if_enabled 1 shift exec /app/docker/scripts/start-web-dev.sh "$@" } start_celery_worker() { export DJANGO_SETTINGS_MODULE="${DJANGO_SETTINGS_MODULE:-settings.production}" export STARTUP_COMPONENT="${STARTUP_COMPONENT:-celery_worker}" validate_settings_module run_dependency_checks run_migrations_if_enabled 0 shift exec /app/docker/scripts/start-celery-worker.sh "$@" } start_celery_beat() { export DJANGO_SETTINGS_MODULE="${DJANGO_SETTINGS_MODULE:-settings.production}" export STARTUP_COMPONENT="${STARTUP_COMPONENT:-celery_beat}" validate_settings_module run_dependency_checks run_migrations_if_enabled 0 shift exec /app/docker/scripts/start-celery-beat.sh "$@" } run_migrate() { export DJANGO_SETTINGS_MODULE="${DJANGO_SETTINGS_MODULE:-settings.production}" export STARTUP_COMPONENT="${STARTUP_COMPONENT:-migrate}" validate_settings_module run_dependency_checks run_migrations_if_enabled 1 run_collectstatic_on_migrate log "[startup:${STARTUP_COMPONENT}] migrations completed" } case "${COMMAND_BASENAME}" in web|start-web.sh) start_web "$@" ;; web-dev|start-web-dev.sh) start_web_dev "$@" ;; celery-worker|start-celery-worker.sh) start_celery_worker "$@" ;; celery-beat|start-celery-beat.sh) start_celery_beat "$@" ;; migrate|migrate.sh) run_migrate ;; *) exec "$@" ;; esac