added argparse

This commit is contained in:
study-faraphel 2024-11-10 15:05:32 +01:00
parent ec72e8888b
commit 5567ad0df0
3 changed files with 30 additions and 1 deletions

View file

@ -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}

View file

@ -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<drp::event::PongEvent>()},

View file

@ -1,6 +1,7 @@
#include <mpg123.h>
#include <portaudio.h>
#include <stdexcept>
#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<std::string>("--host"),
parser.get<std::string>("--port"),
parser.get<bool>("-6")
);
eventManager.loop();
// terminate the libraries
Pa_Terminate();
mpg123_exit();
return EXIT_SUCCESS;
}