changeset 621:1afefb4ffcf8

Irccd: add js_plugin_loader::defaults, closes #758
author David Demelier <markand@malikania.fr>
date Thu, 21 Dec 2017 22:01:10 +0100
parents c79ae2987955
children c2db630ffd60
files irccd-test/main.cpp irccd/main.cpp libirccd-js/irccd/js/js_plugin.cpp libirccd-js/irccd/js/js_plugin.hpp
diffstat 4 files changed, 39 insertions(+), 53 deletions(-) [+]
line wrap: on
line diff
--- a/irccd-test/main.cpp	Thu Dec 21 21:55:57 2017 +0100
+++ b/irccd-test/main.cpp	Thu Dec 21 22:01:10 2017 +0100
@@ -42,18 +42,7 @@
 #include <irccd/test/debug_server.hpp>
 
 #if defined(HAVE_JS)
-#   include <irccd/js/directory_jsapi.hpp>
-#   include <irccd/js/elapsed_timer_jsapi.hpp>
-#   include <irccd/js/file_jsapi.hpp>
-#   include <irccd/js/irccd_jsapi.hpp>
 #   include <irccd/js/js_plugin.hpp>
-#   include <irccd/js/logger_jsapi.hpp>
-#   include <irccd/js/plugin_jsapi.hpp>
-#   include <irccd/js/server_jsapi.hpp>
-#   include <irccd/js/system_jsapi.hpp>
-#   include <irccd/js/timer_jsapi.hpp>
-#   include <irccd/js/unicode_jsapi.hpp>
-#   include <irccd/js/util_jsapi.hpp>
 #endif
 
 namespace irccd {
@@ -501,21 +490,7 @@
     daemon = std::make_unique<irccd>(io);
 
 #if defined(HAVE_JS)
-    auto loader = std::make_unique<js_plugin_loader>(*daemon);
-
-    loader->modules().push_back(std::make_unique<irccd_jsapi>());
-    loader->modules().push_back(std::make_unique<directory_jsapi>());
-    loader->modules().push_back(std::make_unique<elapsed_timer_jsapi>());
-    loader->modules().push_back(std::make_unique<file_jsapi>());
-    loader->modules().push_back(std::make_unique<logger_jsapi>());
-    loader->modules().push_back(std::make_unique<plugin_jsapi>());
-    loader->modules().push_back(std::make_unique<server_jsapi>());
-    loader->modules().push_back(std::make_unique<system_jsapi>());
-    loader->modules().push_back(std::make_unique<timer_jsapi>());
-    loader->modules().push_back(std::make_unique<unicode_jsapi>());
-    loader->modules().push_back(std::make_unique<util_jsapi>());
-
-    daemon->plugins().add_loader(std::move(loader));
+    daemon->plugins().add_loader(js_plugin_loader::defaults(*daemon));
 #endif
 
     load_options(argc, argv);
--- a/irccd/main.cpp	Thu Dec 21 21:55:57 2017 +0100
+++ b/irccd/main.cpp	Thu Dec 21 22:01:10 2017 +0100
@@ -47,18 +47,7 @@
 #include <irccd/daemon/transport_service.hpp>
 
 #if defined(HAVE_JS)
-#   include <irccd/js/directory_jsapi.hpp>
-#   include <irccd/js/elapsed_timer_jsapi.hpp>
-#   include <irccd/js/file_jsapi.hpp>
-#   include <irccd/js/irccd_jsapi.hpp>
 #   include <irccd/js/js_plugin.hpp>
-#   include <irccd/js/logger_jsapi.hpp>
-#   include <irccd/js/plugin_jsapi.hpp>
-#   include <irccd/js/server_jsapi.hpp>
-#   include <irccd/js/system_jsapi.hpp>
-#   include <irccd/js/timer_jsapi.hpp>
-#   include <irccd/js/unicode_jsapi.hpp>
-#   include <irccd/js/util_jsapi.hpp>
 #endif
 
 namespace irccd {
@@ -213,23 +202,8 @@
     instance->commands().add(std::make_unique<rule_move_command>());
     instance->commands().add(std::make_unique<rule_remove_command>());
 
-    // Load Javascript API and plugin loader.
 #if defined(HAVE_JS)
-    auto loader = std::make_unique<js_plugin_loader>(*instance);
-
-    loader->modules().push_back(std::make_unique<irccd_jsapi>());
-    loader->modules().push_back(std::make_unique<directory_jsapi>());
-    loader->modules().push_back(std::make_unique<elapsed_timer_jsapi>());
-    loader->modules().push_back(std::make_unique<file_jsapi>());
-    loader->modules().push_back(std::make_unique<logger_jsapi>());
-    loader->modules().push_back(std::make_unique<plugin_jsapi>());
-    loader->modules().push_back(std::make_unique<server_jsapi>());
-    loader->modules().push_back(std::make_unique<system_jsapi>());
-    loader->modules().push_back(std::make_unique<timer_jsapi>());
-    loader->modules().push_back(std::make_unique<unicode_jsapi>());
-    loader->modules().push_back(std::make_unique<util_jsapi>());
-
-    instance->plugins().add_loader(std::move(loader));
+    instance->plugins().add_loader(js_plugin_loader::defaults(*instance));
 #endif
 
     try {
--- a/libirccd-js/irccd/js/js_plugin.cpp	Thu Dec 21 21:55:57 2017 +0100
+++ b/libirccd-js/irccd/js/js_plugin.cpp	Thu Dec 21 22:01:10 2017 +0100
@@ -25,9 +25,19 @@
 #include <irccd/daemon/irccd.hpp>
 #include <irccd/daemon/logger.hpp>
 
+#include "directory_jsapi.hpp"
 #include "duktape_vector.hpp"
+#include "elapsed_timer_jsapi.hpp"
+#include "file_jsapi.hpp"
+#include "irccd_jsapi.hpp"
 #include "js_plugin.hpp"
+#include "logger_jsapi.hpp"
+#include "plugin_jsapi.hpp"
 #include "server_jsapi.hpp"
+#include "system_jsapi.hpp"
+#include "timer_jsapi.hpp"
+#include "unicode_jsapi.hpp"
+#include "util_jsapi.hpp"
 
 namespace irccd {
 
@@ -248,6 +258,25 @@
     call("onWhois", event.server, event.whois);
 }
 
+std::unique_ptr<js_plugin_loader> js_plugin_loader::defaults(irccd& irccd)
+{
+    auto self = std::make_unique<js_plugin_loader>(irccd);
+
+    self->modules().push_back(std::make_unique<irccd_jsapi>());
+    self->modules().push_back(std::make_unique<directory_jsapi>());
+    self->modules().push_back(std::make_unique<elapsed_timer_jsapi>());
+    self->modules().push_back(std::make_unique<file_jsapi>());
+    self->modules().push_back(std::make_unique<logger_jsapi>());
+    self->modules().push_back(std::make_unique<plugin_jsapi>());
+    self->modules().push_back(std::make_unique<server_jsapi>());
+    self->modules().push_back(std::make_unique<system_jsapi>());
+    self->modules().push_back(std::make_unique<timer_jsapi>());
+    self->modules().push_back(std::make_unique<unicode_jsapi>());
+    self->modules().push_back(std::make_unique<util_jsapi>());
+
+    return self;
+}
+
 js_plugin_loader::js_plugin_loader(irccd& irccd) noexcept
     : plugin_loader({}, { ".js" })
     , irccd_(irccd)
--- a/libirccd-js/irccd/js/js_plugin.hpp	Thu Dec 21 21:55:57 2017 +0100
+++ b/libirccd-js/irccd/js/js_plugin.hpp	Thu Dec 21 22:01:10 2017 +0100
@@ -245,6 +245,14 @@
 
 public:
     /**
+     * Create a plugin_loader with all irccd Javascript modules.
+     *
+     * \param irccd the irccd instance
+     * \return a ready to use plugin_loader
+     */
+    static std::unique_ptr<js_plugin_loader> defaults(irccd& irccd);
+
+    /**
      * Constructor.
      *
      * \param irccd the irccd instance