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

99 lines
2.6 KiB
Bash

#!/usr/bin/env bash
# 스크립트가 위치한 디렉토리로 이동
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$SCRIPT_DIR/proto"
# ===============================================================================================
# CSharp 코드 생성 및 출력
# ===============================================================================================
# protoc 실행 파일과 출력 경로 설정
PROTOC_EXE="../../../ThirdPartyPackages/protobuf/31.1-linux-x86_64/protoc"
PROTO_OUT="../out-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
}
# 컴파일할 proto 파일들 목록
PROTO_FILES=(
"Define_Common.proto"
"Define_Meta.proto"
"Define_Result.proto"
"Define_ProgramVersion.proto"
"Auth_Protocol.proto"
"Game_Define.proto"
"Game_Protocol_Define.proto"
"Game_Protocol.proto"
"Community_Protocol.proto"
"ClientToLogin.proto"
"ClientToGame.proto"
"ClientToChat.proto"
"ServerMessage.proto"
)
# 각 proto 파일에 대해 C# 코드 생성
for proto_file in "${PROTO_FILES[@]}"; do
if [ -f "$proto_file" ]; then
echo "Generating C# code from $proto_file..."
run_protoc --csharp_opt=serializable --csharp_out="$PROTO_OUT" "$proto_file"
if [ $? -ne 0 ]; then
echo "ERROR !!! - Failed to generate C# code from $proto_file - ErrorCode : $?"
exit $?
fi
else
echo "Warning: Proto file $proto_file not found, skipping..."
fi
done
# 상위 디렉토리로 이동
cd ..
# proto 파일들을 대상 디렉토리로 복사
TARGET_PROTO_DIR="../../../Common/MS2Packet/proto"
# 대상 디렉토리가 없으면 생성
if [ ! -d "$TARGET_PROTO_DIR" ]; then
mkdir -p "$TARGET_PROTO_DIR"
fi
echo "Copying proto files to $TARGET_PROTO_DIR..."
cp proto/*.proto "$TARGET_PROTO_DIR/"
if [ $? -ne 0 ]; then
echo "ERROR !!! - Failed to copy proto files - ErrorCode : $?"
exit $?
fi
# 성공적으로 완료
echo "ProtoBuf Generation completed successfully"
exit 0