#!/usr/bin/env bash set -euo pipefail CONFIG_FILE="/opt/appfactory/config/appfactory.env" source "$CONFIG_FILE" CATALOG_FILE="$APPFACTORY_DIR/apps/catalog.yml" CADDY_FILE="$APPFACTORY_DIR/gateway/Caddyfile" cat > "$CADDY_FILE" <<'EOF_CADDY' :80 { handle /health { respond "AppFactory OK" 200 } handle /portal* { uri strip_prefix /portal reverse_proxy appfactory-portal:9100 } handle /apps { root * /srv/static rewrite * /apps.html file_server } EOF_CADDY awk ' /^[[:space:]]*-[[:space:]]id:/ { print " handle_path /apps/" $3 "/* {" print " reverse_proxy " $3 ":8000" print " }" print "" } ' "$CATALOG_FILE" >> "$CADDY_FILE" cat >> "$CADDY_FILE" <<'EOF_CADDY' handle_path /webhook/* { reverse_proxy appfactory-webhook:9000 } handle_path /registry/* { reverse_proxy registry:5000 } handle { respond "AppFactory gateway is running" 200 } } EOF_CADDY docker exec appfactory-caddy caddy validate --config /etc/caddy/Caddyfile if docker ps --format '{{.Names}}' | grep -q '^appfactory-caddy$'; then docker exec appfactory-caddy caddy reload --config /etc/caddy/Caddyfile || docker restart appfactory-caddy else cd "$APPFACTORY_DIR/deploy" docker compose -f docker-compose.yml up -d caddy fi