Files
caliverse_server/Protocol/client_proto_build.sh
2025-11-28 16:54:56 +09:00

65 lines
1.8 KiB
Bash

#!/usr/bin/env bash
# 스크립트가 위치한 디렉토리로 이동
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$SCRIPT_DIR/client-proto"
# ===============================================================================================
# CSharp 코드 생성 및 출력
# ===============================================================================================
# protoc 실행 파일과 출력 경로 설정
PROTOC_EXE="../../../ThirdPartyPackages/protobuf/31.1-linux-x86_64/protoc"
PROTO_OUT="../out-client-Proto/"
# Linux에서는 protoc 실행 파일 확장자가 없을 수 있음
if [ ! -f "$PROTOC_EXE" ] && [ -f "${PROTOC_EXE}.exe" ]; then
# .exe 파일이 있다면 mono로 실행
PROTOC_EXE="${PROTOC_EXE}.exe"
USE_MONO=true
else
USE_MONO=false
fi
# 출력 디렉토리의 기존 파일들 삭제
if [ -d "$PROTO_OUT" ]; then
rm -rf "$PROTO_OUT"/*
if [ $? -ne 0 ]; then
echo "Failed to DEL from Proto out path !!! - Path : [$PROTO_OUT] !!!"
exit $?
fi
else
# 디렉토리가 없으면 생성
mkdir -p "$PROTO_OUT"
fi
# protoc 실행 함수
run_protoc() {
if [ "$USE_MONO" = true ]; then
mono "$PROTOC_EXE" "$@"
else
"$PROTOC_EXE" "$@"
fi
}
# Protocol Buffer 파일들 컴파일
echo "Generating C# code from Packet.proto..."
run_protoc --csharp_opt=serializable --csharp_out="$PROTO_OUT" Packet.proto
if [ $? -ne 0 ]; then
echo "ERROR !!! - Failed to generate C# code from Packet.proto - ErrorCode : $?"
exit $?
fi
echo "Generating C# code from Protocol.proto..."
run_protoc --csharp_opt=serializable --csharp_out="$PROTO_OUT" Protocol.proto
if [ $? -ne 0 ]; then
echo "ERROR !!! - Failed to generate C# code from Protocol.proto - ErrorCode : $?"
exit $?
fi
# 성공적으로 완료
echo "Client ProtoBuf Generation completed successfully"
exit 0