#!/usr/bin/env bash
# onx-caddy-test — Caddy config syntax test (caddy validate / caddy adapt --validate).
#
# Input (stdin JSON): {} (no fields required)
# Output: {"syntax_ok":bool, "output":..., "exit_code":...}
# Exit codes: 0=ok, 2=preflight (caddy not installed)

set -euo pipefail

SCRIPT_DIR="$(dirname "$(readlink -f "$0")")"
source "${SCRIPT_DIR}/_lib/common.sh"

command -v caddy >/dev/null 2>&1 || onx_die 2 "caddy not found (not installed?)"

# Caddyfile default path
CADDYFILE="/etc/caddy/Caddyfile"
if [[ ! -f "$CADDYFILE" ]]; then
    onx_json_out \
        "syntax_ok" "false" \
        "output"    "Caddyfile not found: $CADDYFILE" \
        "exit_code" "1"
    exit 0
fi

# `caddy validate` parses + validates without applying.
TEST_OUTPUT=$(caddy validate --config "$CADDYFILE" 2>&1) && TEST_EC=0 || TEST_EC=$?

SYNTAX_OK="false"
[[ "${TEST_EC}" -eq 0 ]] && SYNTAX_OK="true"

onx_json_out \
  "syntax_ok" "${SYNTAX_OK}" \
  "output"    "${TEST_OUTPUT}" \
  "exit_code" "${TEST_EC}"
