Files
mimic/init/scripts/compose_gen.sh

60 lines
1.9 KiB
Bash
Executable File

#!/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"