From 535e62c8528a8d75d867e40ae384f297c999642e Mon Sep 17 00:00:00 2001 From: Kieran Kihn <114803508+kierankihn@users.noreply.github.com> Date: Thu, 4 Dec 2025 10:22:37 +0800 Subject: [PATCH] feat(server): add argument parsing for server port - Integrated `argparse` to parse command-line arguments for setting the server port. - Default port set to `10001`. --- CMakeLists.txt | 4 ++++ src/server/main.cpp | 27 ++++++++++++++++++++++++--- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c030047..0dfb974 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,6 +6,7 @@ set(CMAKE_CXX_STANDARD 26) find_package(ftxui CONFIG REQUIRED) find_package(nlohmann_json REQUIRED) find_package(asio REQUIRED) +find_package(argparse REQUIRED) # 移除 /utf-8 选项 if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND NOT CMAKE_CXX_COMPILER_FRONTEND_VARIANT MATCHES "MSVC") @@ -50,5 +51,8 @@ target_link_libraries(uno-client add_executable(uno-server src/server/main.cpp) target_link_libraries(uno-server PRIVATE uno-game-lib) +target_link_libraries(uno-server + PRIVATE argparse::argparse +) add_subdirectory(test) \ No newline at end of file diff --git a/src/server/main.cpp b/src/server/main.cpp index 795ea04..dc10f46 100644 --- a/src/server/main.cpp +++ b/src/server/main.cpp @@ -4,11 +4,32 @@ * @author Yuzhe Guo * @date 2025.12.01 */ +#include #include "UnoServer.h" -int main() +int main(int argc, char *argv[]) { - UNO::SERVER::UnoServer uno_server; - uno_server.run(); + argparse::ArgumentParser parser("Uno Server", "0.1.0"); + + parser.add_argument("-p", "--port").help("server port").default_value(static_cast(10001)).scan<'i', uint16_t>(); + + try { + parser.parse_args(argc, argv); + } + catch (const std::exception &e) { + std::cerr << e.what() << std::endl; + std::cerr << parser; + return 1; + } + + try { + UNO::SERVER::UnoServer uno_server(parser.get("--port")); + uno_server.run(); + } + catch (const std::exception &e) { + std::cerr << e.what() << std::endl; + return 1; + } + return 0; } \ No newline at end of file