99 lines
2.6 KiB
Bash
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
|