65 lines
1.8 KiB
Bash
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
|