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`.
This commit is contained in:
Kieran Kihn
2025-12-04 10:22:37 +08:00
parent 5f3a4083fd
commit 535e62c852
2 changed files with 28 additions and 3 deletions

View File

@@ -6,6 +6,7 @@ set(CMAKE_CXX_STANDARD 26)
find_package(ftxui CONFIG REQUIRED) find_package(ftxui CONFIG REQUIRED)
find_package(nlohmann_json REQUIRED) find_package(nlohmann_json REQUIRED)
find_package(asio REQUIRED) find_package(asio REQUIRED)
find_package(argparse REQUIRED)
# 移除 /utf-8 选项 # 移除 /utf-8 选项
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND NOT CMAKE_CXX_COMPILER_FRONTEND_VARIANT MATCHES "MSVC") 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) add_executable(uno-server src/server/main.cpp)
target_link_libraries(uno-server target_link_libraries(uno-server
PRIVATE uno-game-lib) PRIVATE uno-game-lib)
target_link_libraries(uno-server
PRIVATE argparse::argparse
)
add_subdirectory(test) add_subdirectory(test)

View File

@@ -4,11 +4,32 @@
* @author Yuzhe Guo * @author Yuzhe Guo
* @date 2025.12.01 * @date 2025.12.01
*/ */
#include <argparse/argparse.hpp>
#include "UnoServer.h" #include "UnoServer.h"
int main() int main(int argc, char *argv[])
{ {
UNO::SERVER::UnoServer uno_server; argparse::ArgumentParser parser("Uno Server", "0.1.0");
uno_server.run();
parser.add_argument("-p", "--port").help("server port").default_value(static_cast<uint16_t>(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<uint16_t>("--port"));
uno_server.run();
}
catch (const std::exception &e) {
std::cerr << e.what() << std::endl;
return 1;
}
return 0; return 0;
} }