From 5567ad0df04b11c698a51667fa19c836aed75a2c Mon Sep 17 00:00:00 2001 From: study-faraphel Date: Sun, 10 Nov 2024 15:05:32 +0100 Subject: [PATCH] added argparse --- CMakeLists.txt | 7 +++++++ source/EventManager.cpp | 3 +++ source/main.cpp | 21 ++++++++++++++++++++- 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4a4439e..a524611 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,12 +6,18 @@ set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) +include(FetchContent) find_package(PkgConfig REQUIRED) + + +FetchContent_Declare(argparse GIT_REPOSITORY https://github.com/p-ranav/argparse.git) +FetchContent_MakeAvailable(argparse) pkg_check_modules(MPG123 REQUIRED libmpg123) pkg_check_modules(PORTAUDIO REQUIRED portaudio-2.0) pkg_check_modules(OpenSSL REQUIRED openssl) + add_executable(M2-PT-DRP source/main.cpp source/packets/audio/AudioPacketData.hpp @@ -53,6 +59,7 @@ target_include_directories(M2-PT-DRP PRIVATE ${OPENSSL_INCLUDE_DIRS} ) target_link_libraries(M2-PT-DRP PRIVATE + argparse ${MPG123_LIBRARIES} ${PORTAUDIO_LIBRARIES} ${OPENSSL_LIBRARIES} diff --git a/source/EventManager.cpp b/source/EventManager.cpp index e206ce3..2c5066d 100644 --- a/source/EventManager.cpp +++ b/source/EventManager.cpp @@ -23,6 +23,9 @@ EventManager::EventManager(const std::string& address, const std::string& port, const bool useIpv6) { + std::cout << "address: " << address << " (" << (useIpv6 ? "IPv6" : "IPv4") << ")" << std::endl; + std::cout << "port: " << port << std::endl; + // register the different events type this->eventRegistry = { {drp::event::EventType::PONG, std::make_shared()}, diff --git a/source/main.cpp b/source/main.cpp index fb5a201..af35f29 100644 --- a/source/main.cpp +++ b/source/main.cpp @@ -1,6 +1,7 @@ #include #include #include +#include "argparse/argparse.hpp" #include "EventManager.hpp" @@ -13,10 +14,28 @@ int main(int argc, char* argv[]) { if (Pa_Initialize() != paNoError) throw std::runtime_error("Could not initialize PortAudio."); - EventManager eventManager = EventManager("127.0.0.1", "15650", false); + argparse::ArgumentParser parser("Program"); + parser.add_argument("-h", "--host").help("Host address").default_value(std::string("127.0.0.1")); + parser.add_argument("-p", "--port").help("Port").default_value(std::string("15650")); + parser.add_argument("-6", "--ipv6").help("Use IPv6").flag(); + + try { + parser.parse_args(argc, argv); + } catch (const std::exception& exception) { + std::cerr << exception.what() << std::endl; + return EXIT_FAILURE; + } + + auto eventManager = EventManager( + parser.get("--host"), + parser.get("--port"), + parser.get("-6") + ); eventManager.loop(); // terminate the libraries Pa_Terminate(); mpg123_exit(); + + return EXIT_SUCCESS; }