#!/usr/bin/env bash
#
# publish-report.sh — convert markdown to HTML and publish to shared reports dir.
# Usage: publish-report.sh <input.md> [title]
# Output: prints public URL on success
#
set -euo pipefail

INPUT="${1:?usage: publish-report.sh <input.md> [title]}"
TITLE="${2:-Report}"

REPORTS_DIR="/Users/eugene/agents/_shared/reports"
ASSETS_DIR="$REPORTS_DIR/_assets"
PUBLIC_HOSTNAME="eugenes-mac-mini-1.tail2c7d8f.ts.net"

if [ ! -f "$INPUT" ]; then
  echo "ERROR: input file not found: $INPUT" >&2
  exit 1
fi

# Generate UUID-based filename (unguessable URLs)
UUID=$(uuidgen | tr '[:upper:]' '[:lower:]')
DATE=$(date +%Y-%m-%d)
SLUG=$(echo "$TITLE" | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9]/-/g' | sed 's/-\{2,\}/-/g' | sed 's/^-//;s/-$//' | cut -c1-40)
[ -z "$SLUG" ] && SLUG="report"

OUTPUT_NAME="${DATE}-${SLUG}-${UUID:0:8}.html"
OUTPUT_PATH="$REPORTS_DIR/$OUTPUT_NAME"

# Convert markdown to HTML with CSS styling
pandoc "$INPUT" \
  --from markdown \
  --to html5 \
  --standalone \
  --metadata title="$TITLE" \
  --css "_assets/style.css" \
  --output "$OUTPUT_PATH" \
  --no-highlight 2>/dev/null || {
    echo "ERROR: pandoc conversion failed" >&2
    exit 1
  }

# Insert generation timestamp (after <body>)
TIMESTAMP=$(date '+%Y-%m-%d %H:%M %Z')
sed -i '' "s|<body>|<body>\n<div class=\"report-meta\">Generated: $TIMESTAMP</div>|" "$OUTPUT_PATH"

# Print public URL
echo "https://$PUBLIC_HOSTNAME/reports/$OUTPUT_NAME"
