diff irccdctl/cli.cpp @ 758:445c071e8efb

Irccd: Javascript API cleanup - Place all related code to `js` namespace, - Import duk.hpp and duk.cpp from libduk.
author David Demelier <markand@malikania.fr>
date Thu, 09 Aug 2018 13:07:19 +0200
parents c216d148558d
children 8c44bbcbbab9
line wrap: on
line diff
--- a/irccdctl/cli.cpp	Mon Aug 06 21:27:00 2018 +0200
+++ b/irccdctl/cli.cpp	Thu Aug 09 13:07:19 2018 +0200
@@ -34,6 +34,14 @@
 
 namespace {
 
+template <typename T>
+auto bind() noexcept -> cli::constructor
+{
+    return [] () noexcept {
+        return std::make_unique<T>();
+    };
+}
+
 auto format(std::vector<std::string> args) -> std::string
 {
     auto result = option::read(args, {
@@ -223,6 +231,38 @@
 
 // {{{ cli
 
+const std::vector<cli::constructor> cli::registry{
+    bind<plugin_config_cli>(),
+    bind<plugin_info_cli>(),
+    bind<plugin_list_cli>(),
+    bind<plugin_load_cli>(),
+    bind<plugin_reload_cli>(),
+    bind<plugin_unload_cli>(),
+    bind<rule_add_cli>(),
+    bind<rule_edit_cli>(),
+    bind<rule_info_cli>(),
+    bind<rule_info_cli>(),
+    bind<rule_list_cli>(),
+    bind<rule_move_cli>(),
+    bind<rule_remove_cli>(),
+    bind<server_connect_cli>(),
+    bind<server_disconnect_cli>(),
+    bind<server_info_cli>(),
+    bind<server_invite_cli>(),
+    bind<server_join_cli>(),
+    bind<server_kick_cli>(),
+    bind<server_list_cli>(),
+    bind<server_me_cli>(),
+    bind<server_message_cli>(),
+    bind<server_mode_cli>(),
+    bind<server_nick_cli>(),
+    bind<server_notice_cli>(),
+    bind<server_part_cli>(),
+    bind<server_reconnect_cli>(),
+    bind<server_topic_cli>(),
+    bind<watch_cli>()
+};
+
 void cli::recv_response(ctl::controller& ctl, nlohmann::json req, handler_t handler)
 {
     ctl.read([&ctl, req, handler, this] (auto code, auto message) {