summaryrefslogtreecommitdiff
path: root/kel_git/c++/kel_git.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kel_git/c++/kel_git.cpp')
-rw-r--r--kel_git/c++/kel_git.cpp74
1 files changed, 74 insertions, 0 deletions
diff --git a/kel_git/c++/kel_git.cpp b/kel_git/c++/kel_git.cpp
new file mode 100644
index 0000000..65d7cad
--- /dev/null
+++ b/kel_git/c++/kel_git.cpp
@@ -0,0 +1,74 @@
+#include <forstio/codec/data.hpp>
+#include <forstio/codec/args.hpp>
+
+#include <iostream>
+#include <charconv>
+
+#include "common.hpp"
+#include "config.hpp"
+
+namespace kel {
+namespace sch {
+using namespace saw::schema;
+
+using GitArgs = Args<
+ Struct<
+ >,
+ Tuple<>
+>;
+}
+
+saw::error_or<void> kmain(int argc, char** argv){
+ saw::data<sch::GitArgs> args_d;
+ {
+ saw::data<sch::GitArgs, saw::encode::Args> args_data{argc, argv};
+ saw::codec<sch::GitArgs, saw::encode::Args> args_codec;
+
+ auto eov = args_codec.decode(args_data, args_d);
+ if(eov.is_error()){
+ return eov;
+ }
+ }
+ // saw::data<kel::sch::CommandConfig> cmd_data;
+ {
+ // Parse from file
+ }
+
+ bool running = true;
+
+ auto eo_aio = saw::setup_async_io();
+ if(eo_aio.is_error()){
+ return std::move(eo_aio.get_error());
+ }
+ auto& aio = eo_aio.get_value();
+ auto term_sink = aio.event_port.on_signal(saw::Signal::Terminate).then([&running](){
+ running = false;
+ }).sink();
+
+
+
+ while(running){
+ aio.event_port.wait();
+ }
+
+ return saw::make_void();
+}
+}
+
+int main(int argc, char** argv){
+ auto eov = kel::kmain(argc, argv);
+ if(eov.is_error()){
+ auto& err = eov.get_error();
+ auto err_msg = err.get_message();
+ std::cerr<<"[Error]: "<<err.get_category();
+
+ if(not err_msg.empty()){
+ std::cerr<<" - "<<err_msg;
+ }
+ std::cerr<<std::endl;
+
+ return err.get_id();
+ }
+
+ return 0;
+}