Mercurial > irccd
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