#!/usr/bin/env bash set -euo pipefail # 이 스크립트는 결재 문서를 백엔드(superport_api_v2)와 동기화하거나 차이를 점검한다. SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" BACKEND_ROOT="$(cd "$PROJECT_ROOT/.." && pwd)/superport_api_v2" FILES=( "stock_approval_system_api_v4.md" "stock_approval_system_spec_v4.md" ) show_usage() { cat <<'EOF' 사용법: tool/sync_stock_docs.sh [--check] --check 백엔드 문서와 현재 문서의 차이를 검사한다. 차이가 있으면 diff를 출력하고 종료 코드 1을 반환한다. 인자가 없으면 백엔드 문서를 복사하여 현재 리포지터리 doc/ 경로로 동기화한다. EOF } require_files() { local missing=0 for file in "${FILES[@]}"; do local source_path="$BACKEND_ROOT/$file" if [[ ! -f "$source_path" ]]; then echo "오류: 백엔드 문서를 찾을 수 없습니다 -> $source_path" >&2 missing=1 fi done if [[ $missing -ne 0 ]]; then exit 1 fi } sync_files() { require_files for file in "${FILES[@]}"; do local source_path="$BACKEND_ROOT/$file" local target_path="$PROJECT_ROOT/doc/$file" mkdir -p "$(dirname "$target_path")" cp "$source_path" "$target_path" echo "동기화 완료: $file" done } check_diff() { require_files local diff_found=0 for file in "${FILES[@]}"; do local source_path="$BACKEND_ROOT/$file" local target_path="$PROJECT_ROOT/doc/$file" if ! diff -u "$target_path" "$source_path" >/dev/null; then echo "차이 발견: $file" diff -u "$target_path" "$source_path" || true diff_found=1 fi done if [[ $diff_found -ne 0 ]]; then exit 1 fi echo "모든 문서가 일치합니다." } main() { if [[ $# -gt 1 ]]; then show_usage exit 1 fi if [[ $# -eq 1 ]]; then case "$1" in --check) check_diff return ;; -*) show_usage exit 1 ;; *) show_usage exit 1 ;; esac fi sync_files } main "$@"