#!/bin/bash # PlantUML 파일 검증 스크립트 (UTF-8 인코딩 수정 버전) # localhost:38080 서버를 사용하여 문법 검사 echo "=====================================" echo "PlantUML 파일 검증 시작 (UTF-8)" 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 요청 (UTF-8 charset 명시) HTTP_CODE=$(curl -s -w "%{http_code}" -X POST \ http://localhost:38080/png \ -H "Content-Type: text/plain; charset=UTF-8" \ --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 # 이미지가 실제 유효한지 확인 (파일 매직 넘버 확인) if file "$RESULT_DIR/${filename}.png" | grep -q "PNG image data"; then echo " ✅ 성공: $filename" echo "✅ $file - HTTP $HTTP_CODE" >> "$RESULT_FILE" SUCCESS_COUNT=$((SUCCESS_COUNT + 1)) else echo " ❌ 실패: $filename (유효하지 않은 PNG)" echo "❌ $file - 유효하지 않은 PNG 파일" >> "$ERROR_FILE" FAIL_COUNT=$((FAIL_COUNT + 1)) fi 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" # 오류 내용 저장 (txt 엔드포인트로 오류 메시지 확인) curl -s -X POST \ http://localhost:38080/txt \ -H "Content-Type: text/plain; charset=UTF-8" \ --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