#!/usr/bin/env bash set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" source "${SCRIPT_DIR}/functions.sh" resolve_paths require_env TEMPLATE_FILE="${INIT_DIR}/templates/main.yaml" OUTPUT_FILE="${ROOT_DIR}/compose.yaml" require_file "$TEMPLATE_FILE" "Compose template" log_info "Generating compose.yaml based on .env configuration..." # Read configuration from .env # Defaults: LiveKit=off, WebApp=None, Proxy=Traefik INCLUDE_LIVEKIT="${INCLUDE_LIVEKIT:-false}" WEBAPP="${WEBAPP:-NONE}" PROXY="${PROXY:-TRAEFIK}" # Determine inclusion flags based on single-value variables if [[ "$WEBAPP" == "ELEMENT" ]]; then INCLUDE_ELEMENT="true" INCLUDE_CINNY="false" INCLUDE_FLUFFY="false" elif [[ "$WEBAPP" == "CINNY" ]]; then INCLUDE_ELEMENT="false" INCLUDE_CINNY="true" INCLUDE_FLUFFY="false" elif [[ "$WEBAPP" == "FLUFFY" ]]; then INCLUDE_ELEMENT="false" INCLUDE_CINNY="false" INCLUDE_FLUFFY="true" else INCLUDE_ELEMENT="false" INCLUDE_CINNY="false" INCLUDE_FLUFFY="false" fi if [[ "$PROXY" == "NGINX" ]]; then INCLUDE_NGINX="true" INCLUDE_TRAEFIK="false" else INCLUDE_NGINX="false" INCLUDE_TRAEFIK="true" fi cp "$TEMPLATE_FILE" "$OUTPUT_FILE" toggle_block "$OUTPUT_FILE" "# \[LIVEKIT_START\]" "# \[LIVEKIT_END\]" "$INCLUDE_LIVEKIT" toggle_block "$OUTPUT_FILE" "# \[ELEMENT_START\]" "# \[ELEMENT_END\]" "$INCLUDE_ELEMENT" toggle_block "$OUTPUT_FILE" "# \[CINNY_START\]" "# \[CINNY_END\]" "$INCLUDE_CINNY" toggle_block "$OUTPUT_FILE" "# \[FLUFFYCHAT_START\]" "# \[FLUFFYCHAT_END\]" "$INCLUDE_FLUFFY" toggle_block "$OUTPUT_FILE" "# \[NGINX_START\]" "# \[NGINX_END\]" "$INCLUDE_NGINX" toggle_block "$OUTPUT_FILE" "# \[TRAEFIK_START\]" "# \[TRAEFIK_END\]" "$INCLUDE_TRAEFIK" toggle_block "$OUTPUT_FILE" "# \[TRAEFIK_LABELS_START\]" "# \[TRAEFIK_LABELS_END\]" "$INCLUDE_TRAEFIK" log_info "Compose file generated: $OUTPUT_FILE"