aboutsummaryrefslogtreecommitdiff
path: root/source/apps/src/wandac/main.cpp
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@gmail.com>2024-05-17 17:58:38 +0200
committerFelix Morgner <felix.morgner@gmail.com>2024-05-17 17:58:38 +0200
commit577fc0845718ed8ad5bebf02a277c0579a817f77 (patch)
tree3d1cdc53c426a0ba60a7996619a7b787850bb3b3 /source/apps/src/wandac/main.cpp
parentde5bf7ca3b7a2bf6be35b86486b00dc6a071b950 (diff)
downloadwanda-develop.tar.xz
wanda-develop.zip
wanda: restructure source layoutHEADdevelop
Diffstat (limited to 'source/apps/src/wandac/main.cpp')
-rw-r--r--source/apps/src/wandac/main.cpp43
1 files changed, 43 insertions, 0 deletions
diff --git a/source/apps/src/wandac/main.cpp b/source/apps/src/wandac/main.cpp
new file mode 100644
index 0000000..1533a62
--- /dev/null
+++ b/source/apps/src/wandac/main.cpp
@@ -0,0 +1,43 @@
+#include "wanda/wandac/cli.hpp"
+#include "wanda/wandac/listener.hpp"
+
+#include <wanda/control/commander.hpp>
+#include <wanda/system/environment.hpp>
+#include <wanda/system/logging.hpp>
+#include <wanda/system/xdg.hpp>
+
+#include <boost/asio/io_context.hpp>
+#include <spdlog/sinks/stdout_color_sinks.h>
+
+#include <cstdlib>
+#include <filesystem>
+#include <iostream>
+
+int main(int argc, char const * const * argv)
+{
+ auto cli = wandac::cli{};
+ if (!cli.parse({argc, argv}, std::cerr))
+ {
+ return EXIT_FAILURE;
+ }
+ else if (cli.help)
+ {
+ cli.print_usage(std::cout);
+ return EXIT_SUCCESS;
+ }
+
+ wanda::system::initialize_logger(std::make_shared<spdlog::sinks::stderr_color_sink_st>());
+
+ auto environment = wanda::system::environment{};
+ auto runtime_dir = wanda::system::xdg_path_for(wanda::system::xdg_directory::runtime_dir, environment);
+ auto interface = runtime_dir / ".wanda_interface";
+ auto service = boost::asio::io_context{};
+ auto listener = wandac::listener{cli, service};
+
+ auto commander = wanda::control::commander{service, interface, listener};
+
+ wanda::system::get_logger()->info("trying to connect to wanda control interface on '{}'", interface.native());
+ commander.start();
+
+ service.run();
+}