#!/usr/bin/env bash set -euo pipefail SCRIPT_DIR=$(cd -- "$(dirname "${BASH_SOURCE[0]}")" && pwd) ROOT_DIR=$(cd -- "${SCRIPT_DIR}/../.." && pwd) ENV_FILE="${CLASSEO_ENV_FILE:-${SCRIPT_DIR}/.env}" COMPOSE_FILE="${CLASSEO_COMPOSE_FILE:-${ROOT_DIR}/compose.prod.yaml}" PHP_SERVICE="${CLASSEO_PHP_SERVICE:-php}" usage() { cat <&2 else printf "%s: " "${label}" >&2 fi IFS= read -r answer printf '%s\n' "${answer:-${default_value}}" } require_file() { local path="${1}" local label="${2}" if [ ! -f "${path}" ]; then echo "Missing ${label}: ${path}" >&2 exit 1 fi } ensure_command() { if ! command -v "$1" >/dev/null 2>&1; then echo "Required command not found: $1" >&2 exit 1 fi } TENANT="" PASSWORD="DemoPassword123!" SCHOOL="" ZONE="B" PERIOD_TYPE="trimester" while [ "$#" -gt 0 ]; do case "$1" in --tenant) TENANT="${2:-}" shift 2 ;; --tenant=*) TENANT="${1#*=}" shift ;; --password) PASSWORD="${2:-}" shift 2 ;; --password=*) PASSWORD="${1#*=}" shift ;; --school) SCHOOL="${2:-}" shift 2 ;; --school=*) SCHOOL="${1#*=}" shift ;; --zone) ZONE="${2:-}" shift 2 ;; --zone=*) ZONE="${1#*=}" shift ;; --period-type) PERIOD_TYPE="${2:-}" shift 2 ;; --period-type=*) PERIOD_TYPE="${1#*=}" shift ;; --env-file) ENV_FILE="${2:-}" shift 2 ;; --env-file=*) ENV_FILE="${1#*=}" shift ;; --compose-file) COMPOSE_FILE="${2:-}" shift 2 ;; --compose-file=*) COMPOSE_FILE="${1#*=}" shift ;; --service) PHP_SERVICE="${2:-}" shift 2 ;; --service=*) PHP_SERVICE="${1#*=}" shift ;; -h|--help) usage exit 0 ;; *) echo "Unknown option: $1" >&2 echo >&2 usage >&2 exit 1 ;; esac done ensure_command docker require_file "${ENV_FILE}" "env file" require_file "${COMPOSE_FILE}" "compose file" set -a # shellcheck disable=SC1090 . "${ENV_FILE}" set +a if [ -z "${TENANT}" ]; then TENANT="${TENANT_SUBDOMAIN:-}" fi if [ -z "${TENANT}" ] && [ -t 0 ]; then TENANT=$(prompt_with_default "Tenant subdomain" "demo") fi if [ -z "${TENANT}" ]; then echo "Tenant subdomain is required. Pass --tenant or define TENANT_SUBDOMAIN in ${ENV_FILE}." >&2 exit 1 fi if [ -z "${SCHOOL}" ] && [ -t 0 ]; then SCHOOL=$(prompt_with_default "School name (optional)" "") fi COMMAND=( docker compose --env-file "${ENV_FILE}" -f "${COMPOSE_FILE}" exec "${PHP_SERVICE}" php bin/console app:dev:generate-demo-data "--tenant=${TENANT}" "--password=${PASSWORD}" "--zone=${ZONE}" "--period-type=${PERIOD_TYPE}" ) if [ -n "${SCHOOL}" ]; then COMMAND+=("--school=${SCHOOL}") fi echo "Running demo data generator for tenant: ${TENANT}" echo "Compose file: ${COMPOSE_FILE}" echo "Env file: ${ENV_FILE}" echo "${COMMAND[@]}"