From 7163137f645e6a2bbb47613d07f3ba9f921dc69b Mon Sep 17 00:00:00 2001 From: m Date: Sun, 29 Mar 2026 11:56:57 +0000 Subject: [PATCH] build: add Caddyfile generator --- generate-caddyfile.sh | 51 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 generate-caddyfile.sh diff --git a/generate-caddyfile.sh b/generate-caddyfile.sh new file mode 100644 index 0000000..3306687 --- /dev/null +++ b/generate-caddyfile.sh @@ -0,0 +1,51 @@ +#!/bin/bash +# Generate Caddyfile from sites/*/site.yaml +# Reads domain and aliases from each site config, outputs Caddyfile to stdout +set -euo pipefail + +SITES_DIR="${1:-sites}" + +# Global options - disable automatic HTTPS (Traefik handles TLS) +cat <<'HEADER' +{ + auto_https off +} +HEADER + +for site_dir in "$SITES_DIR"/*/; do + [ -f "$site_dir/site.yaml" ] || continue + domain=$(basename "$site_dir") + + # Read aliases from site.yaml + aliases="" + if command -v yq &>/dev/null; then + aliases=$(yq -r '.aliases // [] | .[]' "$site_dir/site.yaml" 2>/dev/null || true) + fi + + # Build host list + hosts="$domain" + if [ -n "$aliases" ]; then + for alias in $aliases; do + hosts="$hosts, $alias" + done + fi + + cat <