#!/usr/bin/env bash

set -euo pipefail

if [ "$#" -ne 2 ]; then
  echo "사용법: ./render_html.sh 입력.html 출력.pdf" >&2
  exit 1
fi

BASE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
INPUT="$(realpath "$1")"
OUTPUT="$(realpath -m "$2")"

if [ ! -f "$INPUT" ]; then
  echo "[FAIL] 입력 HTML 파일이 없습니다: $INPUT" >&2
  exit 1
fi

if ! command -v weasyprint >/dev/null 2>&1; then
  echo "[FAIL] weasyprint를 찾을 수 없습니다." >&2
  exit 1
fi

mkdir -p "$(dirname "$OUTPUT")"

# PDF 생성 전에 HTML 구조와 허용 컴포넌트를 검증한다.
"$BASE_DIR/validate_html.py" "$INPUT"

# HTML 파일 경로를 기준으로 CSS와 로컬 이미지의 상대 경로를 해석한다.
weasyprint \
  --stylesheet "$BASE_DIR/design-system.css" \
  "$INPUT" \
  "$OUTPUT"

if [ ! -s "$OUTPUT" ]; then
  echo "[FAIL] PDF 생성에 실패했습니다: $OUTPUT" >&2
  exit 1
fi

echo "[PASS] PDF 생성 완료"
echo "       경로: $OUTPUT"
echo "       크기: $(du -h "$OUTPUT" | cut -f1)"
