kt-event-marketing/validate-puml.sh
2025-10-22 14:13:57 +09:00

87 lines
2.5 KiB
Bash
Executable File

#!/bin/bash
# PlantUML 파일 검증 스크립트
# localhost:38080 서버를 사용하여 문법 검사
echo "====================================="
echo "PlantUML 파일 검증 시작"
echo "====================================="
echo ""
SUCCESS_COUNT=0
FAIL_COUNT=0
TOTAL_COUNT=0
# 검증 결과 저장 디렉토리
RESULT_DIR="debug/puml-validation"
mkdir -p "$RESULT_DIR"
# 결과 파일 초기화
RESULT_FILE="$RESULT_DIR/validation-result.txt"
ERROR_FILE="$RESULT_DIR/validation-errors.txt"
> "$RESULT_FILE"
> "$ERROR_FILE"
# design/backend/sequence 하위의 모든 .puml 파일 검증
while IFS= read -r file; do
TOTAL_COUNT=$((TOTAL_COUNT + 1))
filename=$(basename "$file")
echo "[$TOTAL_COUNT] 검증 중: $file"
# PlantUML 서버로 POST 요청
HTTP_CODE=$(curl -s -w "%{http_code}" -X POST \
http://localhost:38080/png \
-H "Content-Type: text/plain" \
--data-binary "@$file" \
-o "$RESULT_DIR/${filename}.png" 2>&1 | tail -1)
if [ "$HTTP_CODE" = "200" ]; then
# PNG 파일이 정상적으로 생성되었는지 확인
if [ -f "$RESULT_DIR/${filename}.png" ] && [ -s "$RESULT_DIR/${filename}.png" ]; then
echo " ✅ 성공: $filename"
echo "$file - HTTP $HTTP_CODE" >> "$RESULT_FILE"
SUCCESS_COUNT=$((SUCCESS_COUNT + 1))
else
echo " ❌ 실패: $filename (빈 파일)"
echo "$file - 빈 PNG 파일" >> "$ERROR_FILE"
FAIL_COUNT=$((FAIL_COUNT + 1))
fi
else
echo " ❌ 실패: $filename (HTTP $HTTP_CODE)"
echo "$file - HTTP $HTTP_CODE" >> "$ERROR_FILE"
# 오류 내용 저장
curl -s -X POST \
http://localhost:38080/png \
-H "Content-Type: text/plain" \
--data-binary "@$file" \
-o "$RESULT_DIR/${filename}.error.txt" 2>&1
echo " 오류 상세: $RESULT_DIR/${filename}.error.txt" >> "$ERROR_FILE"
FAIL_COUNT=$((FAIL_COUNT + 1))
fi
echo ""
done < <(find design/backend/sequence -name "*.puml" -type f | sort)
echo "====================================="
echo "검증 완료"
echo "====================================="
echo "총 파일 수: $TOTAL_COUNT"
echo "성공: $SUCCESS_COUNT"
echo "실패: $FAIL_COUNT"
echo ""
echo "상세 결과: $RESULT_FILE"
if [ $FAIL_COUNT -gt 0 ]; then
echo "오류 상세: $ERROR_FILE"
fi
echo "====================================="
# 실패한 파일이 있으면 종료 코드 1 반환
if [ $FAIL_COUNT -gt 0 ]; then
exit 1
else
exit 0
fi