Mercurial > irccd
annotate irccd-test/main.cpp @ 887:d1cfe59eed06 release-3.0 3.0.1
misc: update before 3.0.1
author | David Demelier <markand@malikania.fr> |
---|---|
date | Sun, 01 Sep 2019 17:08:59 +0200 |
parents | eac2cc421f49 |
children | 5e25439fe98d |
rev | line source |
---|---|
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
1 /* |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
2 * main.cpp -- irccd-test main file |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
3 * |
824
06cc2f95f479
misc: happy new year!
David Demelier <markand@malikania.fr>
parents:
820
diff
changeset
|
4 * Copyright (c) 2013-2019 David Demelier <markand@malikania.fr> |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
5 * |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
6 * Permission to use, copy, modify, and/or distribute this software for any |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
7 * purpose with or without fee is hereby granted, provided that the above |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
8 * copyright notice and this permission notice appear in all copies. |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
9 * |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
17 */ |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
18 |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
19 #include <irccd/sysconfig.hpp> |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
20 |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
21 #include <algorithm> |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
22 #include <functional> |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
23 #include <iostream> |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
24 #include <string> |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
25 #include <unordered_map> |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
26 |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
27 #include <boost/algorithm/string/trim.hpp> |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
28 #include <boost/filesystem.hpp> |
729
e08bfc940c54
Core: remove string_util::sprintf
David Demelier <markand@malikania.fr>
parents:
701
diff
changeset
|
29 #include <boost/format.hpp> |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
30 |
701
2007a37d7e1a
CMake: prefix options with IRCCD_, #closes 800 @2h
David Demelier <markand@malikania.fr>
parents:
689
diff
changeset
|
31 #if defined(IRCCD_HAVE_LIBEDIT) |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
32 # include <histedit.h> |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
33 #endif |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
34 |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
35 #include <irccd/options.hpp> |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
36 #include <irccd/string_util.hpp> |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
37 |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
38 #include <irccd/daemon/dynlib_plugin.hpp> |
809
8460b4a34191
misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents:
797
diff
changeset
|
39 #include <irccd/daemon/bot.hpp> |
754
c216d148558d
Irccd: remove service directory
David Demelier <markand@malikania.fr>
parents:
746
diff
changeset
|
40 #include <irccd/daemon/plugin_service.hpp> |
c216d148558d
Irccd: remove service directory
David Demelier <markand@malikania.fr>
parents:
746
diff
changeset
|
41 #include <irccd/daemon/server_service.hpp> |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
42 |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
43 #include <irccd/test/debug_server.hpp> |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
44 |
701
2007a37d7e1a
CMake: prefix options with IRCCD_, #closes 800 @2h
David Demelier <markand@malikania.fr>
parents:
689
diff
changeset
|
45 #if defined(IRCCD_HAVE_JS) |
820
9109f19987fb
misc: remove js_ prefix in js namespace
David Demelier <markand@malikania.fr>
parents:
818
diff
changeset
|
46 # include <irccd/js/api.hpp> |
9109f19987fb
misc: remove js_ prefix in js namespace
David Demelier <markand@malikania.fr>
parents:
818
diff
changeset
|
47 # include <irccd/js/plugin.hpp> |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
48 #endif |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
49 |
729
e08bfc940c54
Core: remove string_util::sprintf
David Demelier <markand@malikania.fr>
parents:
701
diff
changeset
|
50 using boost::format; |
e08bfc940c54
Core: remove string_util::sprintf
David Demelier <markand@malikania.fr>
parents:
701
diff
changeset
|
51 using boost::str; |
e08bfc940c54
Core: remove string_util::sprintf
David Demelier <markand@malikania.fr>
parents:
701
diff
changeset
|
52 |
809
8460b4a34191
misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents:
797
diff
changeset
|
53 using irccd::string_util::split; |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
54 |
809
8460b4a34191
misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents:
797
diff
changeset
|
55 using irccd::daemon::bot; |
8460b4a34191
misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents:
797
diff
changeset
|
56 using irccd::daemon::names_event; |
8460b4a34191
misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents:
797
diff
changeset
|
57 using irccd::daemon::plugin; |
8460b4a34191
misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents:
797
diff
changeset
|
58 using irccd::daemon::server; |
8460b4a34191
misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents:
797
diff
changeset
|
59 using irccd::daemon::whois_event; |
8460b4a34191
misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents:
797
diff
changeset
|
60 using irccd::daemon::dynlib_plugin_loader; |
8460b4a34191
misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents:
797
diff
changeset
|
61 |
825
e9da936309df
irccd: fix build without Javascript
David Demelier <markand@malikania.fr>
parents:
824
diff
changeset
|
62 #if defined(IRCCD_HAVE_JS) |
e9da936309df
irccd: fix build without Javascript
David Demelier <markand@malikania.fr>
parents:
824
diff
changeset
|
63 namespace js = irccd::js; |
e9da936309df
irccd: fix build without Javascript
David Demelier <markand@malikania.fr>
parents:
824
diff
changeset
|
64 #endif |
809
8460b4a34191
misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents:
797
diff
changeset
|
65 |
8460b4a34191
misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents:
797
diff
changeset
|
66 namespace irccd::test { |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
67 |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
68 namespace { |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
69 |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
70 boost::asio::io_service io; |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
71 |
809
8460b4a34191
misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents:
797
diff
changeset
|
72 std::unique_ptr<bot> daemon; |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
73 std::shared_ptr<plugin> plugin; |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
74 |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
75 // {{{ function table |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
76 |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
77 /* |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
78 * Forward declarations of handlers. |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
79 */ |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
80 void on_command(const std::string&); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
81 void on_connect(const std::string&); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
82 void on_invite(const std::string&); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
83 void on_join(const std::string&); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
84 void on_kick(const std::string&); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
85 void on_load(const std::string&); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
86 void on_me(const std::string&); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
87 void on_message(const std::string&); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
88 void on_mode(const std::string&); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
89 void on_names(const std::string&); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
90 void on_nick(const std::string&); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
91 void on_notice(const std::string&); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
92 void on_part(const std::string&); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
93 void on_reload(const std::string&); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
94 void on_topic(const std::string&); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
95 void on_unload(const std::string&); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
96 void on_whois(const std::string&); |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
97 |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
98 /* |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
99 * Table of user functions. |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
100 */ |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
101 using function = std::function<void (const std::string&)>; |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
102 using functions = std::unordered_map<std::string, function>; |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
103 |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
104 static const functions list{ |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
105 { "onCommand", &(on_command) }, |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
106 { "onConnect", &(on_connect) }, |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
107 { "onInvite", &(on_invite) }, |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
108 { "onJoin", &(on_join) }, |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
109 { "onKick", &(on_kick) }, |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
110 { "onLoad", &(on_load) }, |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
111 { "onMe", &(on_me) }, |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
112 { "onMessage", &(on_message) }, |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
113 { "onMode", &(on_mode) }, |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
114 { "onNames", &(on_names) }, |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
115 { "onNick", &(on_nick) }, |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
116 { "onNotice", &(on_notice) }, |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
117 { "onPart", &(on_part) }, |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
118 { "onReload", &(on_reload) }, |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
119 { "onTopic", &(on_topic) }, |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
120 { "onUnload", &(on_unload) }, |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
121 { "onWhois", &(on_whois) } |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
122 }; |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
123 |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
124 // }}} |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
125 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
126 // {{{ usage |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
127 |
850
688f28dd3241
irccd: remove short options, closes #1673
David Demelier <markand@malikania.fr>
parents:
841
diff
changeset
|
128 [[noreturn]] |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
129 void usage() |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
130 { |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
131 std::cerr << "usage: irccd-test [-c config] plugin-name" << std::endl; |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
132 std::exit(1); |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
133 } |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
134 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
135 // }}} |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
136 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
137 // {{{ get_server |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
138 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
139 auto get_server(std::string name) -> std::shared_ptr<server> |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
140 { |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
141 name = boost::algorithm::trim_copy(name); |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
142 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
143 if (name.empty()) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
144 name = "test"; |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
145 |
841
1399755352e7
irccd: use appropriate function names in bot
David Demelier <markand@malikania.fr>
parents:
825
diff
changeset
|
146 auto s = daemon->get_servers().get(name); |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
147 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
148 if (!s) { |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
149 s = std::make_shared<debug_server>(io, std::move(name), "localhost"); |
841
1399755352e7
irccd: use appropriate function names in bot
David Demelier <markand@malikania.fr>
parents:
825
diff
changeset
|
150 daemon->get_servers().add(s); |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
151 } |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
152 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
153 return s; |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
154 } |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
155 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
156 // }}} |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
157 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
158 // {{{ get_arg |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
159 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
160 auto get_arg(const std::vector<std::string>& args, unsigned index) -> std::string |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
161 { |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
162 if (index >= args.size()) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
163 return ""; |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
164 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
165 return args[index]; |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
166 } |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
167 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
168 // }}} |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
169 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
170 // {{{ on_command |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
171 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
172 /* |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
173 * onCommand server origin channel message |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
174 */ |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
175 void on_command(const std::string& data) |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
176 { |
809
8460b4a34191
misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents:
797
diff
changeset
|
177 const auto args = split(data, " ", 4); |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
178 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
179 plugin->handle_command(*daemon, { |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
180 get_server(get_arg(args, 0)), |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
181 get_arg(args, 1), |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
182 get_arg(args, 2), |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
183 get_arg(args, 3) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
184 }); |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
185 } |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
186 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
187 // }}} |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
188 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
189 // {{{ on_connect |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
190 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
191 /* |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
192 * onConnect server |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
193 */ |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
194 void on_connect(const std::string& data) |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
195 { |
809
8460b4a34191
misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents:
797
diff
changeset
|
196 const auto args = split(data, " "); |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
197 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
198 plugin->handle_connect(*daemon, {get_server(get_arg(args, 0))}); |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
199 } |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
200 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
201 // }}} |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
202 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
203 // {{{ on_invite |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
204 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
205 /* |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
206 * onInvite server origin channel target |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
207 */ |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
208 void on_invite(const std::string& data) |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
209 { |
809
8460b4a34191
misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents:
797
diff
changeset
|
210 const auto args = split(data, " "); |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
211 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
212 plugin->handle_invite(*daemon, { |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
213 get_server(get_arg(args, 0)), |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
214 get_arg(args, 1), |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
215 get_arg(args, 2), |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
216 get_arg(args, 3), |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
217 }); |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
218 } |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
219 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
220 // }}} |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
221 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
222 // {{{ on_join |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
223 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
224 /* |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
225 * onJoin server origin channel |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
226 */ |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
227 void on_join(const std::string& data) |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
228 { |
809
8460b4a34191
misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents:
797
diff
changeset
|
229 const auto args = split(data, " "); |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
230 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
231 plugin->handle_join(*daemon, { |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
232 get_server(get_arg(args, 0)), |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
233 get_arg(args, 1), |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
234 get_arg(args, 2) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
235 }); |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
236 } |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
237 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
238 // }}} |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
239 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
240 // {{{ on_kick |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
241 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
242 /* |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
243 * onKick server origin channel reason |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
244 */ |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
245 void on_kick(const std::string& data) |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
246 { |
809
8460b4a34191
misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents:
797
diff
changeset
|
247 const auto args = split(data, " ", 5); |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
248 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
249 plugin->handle_kick(*daemon, { |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
250 get_server(get_arg(args, 0)), |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
251 get_arg(args, 1), |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
252 get_arg(args, 2), |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
253 get_arg(args, 3), |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
254 get_arg(args, 4), |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
255 }); |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
256 } |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
257 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
258 // }}} |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
259 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
260 // {{{ on_load |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
261 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
262 /* |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
263 * onLoad |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
264 */ |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
265 void on_load(const std::string&) |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
266 { |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
267 plugin->handle_load(*daemon); |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
268 } |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
269 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
270 // }}} |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
271 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
272 // {{{ on_me |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
273 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
274 /* |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
275 * onMe server origin channel message |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
276 */ |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
277 void on_me(const std::string& data) |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
278 { |
809
8460b4a34191
misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents:
797
diff
changeset
|
279 const auto args = split(data, " ", 4); |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
280 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
281 plugin->handle_me(*daemon, { |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
282 get_server(get_arg(args, 0)), |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
283 get_arg(args, 1), |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
284 get_arg(args, 2), |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
285 get_arg(args, 3) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
286 }); |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
287 } |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
288 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
289 // }}} |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
290 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
291 // {{{ on_message |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
292 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
293 /* |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
294 * onMessage server origin channel message |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
295 */ |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
296 void on_message(const std::string& data) |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
297 { |
809
8460b4a34191
misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents:
797
diff
changeset
|
298 const auto args = split(data, " ", 4); |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
299 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
300 plugin->handle_message(*daemon, { |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
301 get_server(get_arg(args, 0)), |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
302 get_arg(args, 1), |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
303 get_arg(args, 2), |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
304 get_arg(args, 3) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
305 }); |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
306 } |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
307 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
308 // }}} |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
309 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
310 // {{{ on_mode |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
311 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
312 /* |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
313 * onMode server origin channel mode limit user mask |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
314 */ |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
315 void on_mode(const std::string& data) |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
316 { |
809
8460b4a34191
misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents:
797
diff
changeset
|
317 const auto args = split(data, " ", 7); |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
318 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
319 plugin->handle_mode(*daemon, { |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
320 get_server(get_arg(args, 0)), |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
321 get_arg(args, 1), |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
322 get_arg(args, 2), |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
323 get_arg(args, 3), |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
324 get_arg(args, 4), |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
325 get_arg(args, 5), |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
326 get_arg(args, 6), |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
327 }); |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
328 } |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
329 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
330 // }}} |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
331 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
332 // {{{ on_names |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
333 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
334 /* |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
335 * onNames server channel nick1 nick2 nickN |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
336 */ |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
337 void on_names(const std::string& data) |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
338 { |
809
8460b4a34191
misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents:
797
diff
changeset
|
339 const auto args = split(data, " "); |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
340 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
341 names_event ev; |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
342 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
343 ev.server = get_server(get_arg(args, 0)); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
344 ev.channel = get_arg(args, 1); |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
345 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
346 if (args.size() >= 3U) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
347 ev.names.insert(ev.names.begin(), args.begin() + 2, args.end()); |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
348 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
349 plugin->handle_names(*daemon, ev); |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
350 } |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
351 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
352 // }}} |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
353 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
354 // {{{ on_nick |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
355 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
356 /* |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
357 * onNick server origin nickname |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
358 */ |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
359 void on_nick(const std::string& data) |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
360 { |
809
8460b4a34191
misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents:
797
diff
changeset
|
361 const auto args = split(data, " "); |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
362 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
363 plugin->handle_nick(*daemon, { |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
364 get_server(get_arg(args, 0)), |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
365 get_arg(args, 1), |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
366 get_arg(args, 2) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
367 }); |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
368 } |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
369 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
370 // }}} |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
371 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
372 // {{{ on_notice |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
373 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
374 /* |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
375 * onNotice server origin channel nickname |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
376 */ |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
377 void on_notice(const std::string& data) |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
378 { |
809
8460b4a34191
misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents:
797
diff
changeset
|
379 const auto args = split(data, " ", 4); |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
380 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
381 plugin->handle_notice(*daemon, { |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
382 get_server(get_arg(args, 0)), |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
383 get_arg(args, 1), |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
384 get_arg(args, 2), |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
385 get_arg(args, 3) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
386 }); |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
387 } |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
388 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
389 // }}} |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
390 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
391 // {{{ on_part |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
392 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
393 /* |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
394 * onPart server origin channel reason |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
395 */ |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
396 void on_part(const std::string& data) |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
397 { |
809
8460b4a34191
misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents:
797
diff
changeset
|
398 const auto args = split(data, " ", 4); |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
399 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
400 plugin->handle_part(*daemon, { |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
401 get_server(get_arg(args, 0)), |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
402 get_arg(args, 1), |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
403 get_arg(args, 2), |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
404 get_arg(args, 3), |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
405 }); |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
406 } |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
407 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
408 // }}} |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
409 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
410 // {{{ on_reload |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
411 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
412 /* |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
413 * onReload |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
414 */ |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
415 void on_reload(const std::string&) |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
416 { |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
417 plugin->handle_reload(*daemon); |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
418 } |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
419 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
420 // }}} |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
421 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
422 // {{{ on_topic |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
423 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
424 /* |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
425 * onTopic server origin channel topic |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
426 */ |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
427 void on_topic(const std::string& data) |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
428 { |
809
8460b4a34191
misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents:
797
diff
changeset
|
429 const auto args = split(data, " ", 4); |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
430 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
431 plugin->handle_topic(*daemon, { |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
432 get_server(get_arg(args, 0)), |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
433 get_arg(args, 1), |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
434 get_arg(args, 2), |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
435 get_arg(args, 3) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
436 }); |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
437 } |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
438 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
439 // }}} |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
440 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
441 // {{{ on_unload |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
442 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
443 /* |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
444 * onUnload |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
445 */ |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
446 void on_unload(const std::string&) |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
447 { |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
448 plugin->handle_unload(*daemon); |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
449 } |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
450 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
451 // }}} |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
452 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
453 // {{{ on_whois |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
454 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
455 /* |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
456 * onWhois server nick user host realname chan1 chan2 chanN |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
457 */ |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
458 void on_whois(const std::string& data) |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
459 { |
809
8460b4a34191
misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents:
797
diff
changeset
|
460 const auto args = split(data, " "); |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
461 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
462 whois_event ev; |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
463 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
464 ev.server = get_server(get_arg(args, 0)); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
465 ev.whois.nick = get_arg(args, 1); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
466 ev.whois.user = get_arg(args, 2); |
785
7145a3df4cb7
misc: rename host to hostname, closes #941 @2h
David Demelier <markand@malikania.fr>
parents:
773
diff
changeset
|
467 ev.whois.hostname = get_arg(args, 3); |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
468 ev.whois.realname = get_arg(args, 4); |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
469 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
470 if (args.size() >= 5) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
471 ev.whois.channels.insert(ev.whois.channels.begin(), args.begin() + 5, args.end()); |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
472 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
473 plugin->handle_whois(*daemon, ev); |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
474 } |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
475 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
476 // }}} |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
477 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
478 // {{{ exec |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
479 |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
480 void exec(const std::string& line) |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
481 { |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
482 const auto pos = line.find(' '); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
483 const auto it = list.find(line.substr(0, pos)); |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
484 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
485 if (it != list.end()) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
486 it->second(pos == std::string::npos ? "" : line.substr(pos + 1)); |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
487 } |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
488 |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
489 // }}} |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
490 |
701
2007a37d7e1a
CMake: prefix options with IRCCD_, #closes 800 @2h
David Demelier <markand@malikania.fr>
parents:
689
diff
changeset
|
491 #if defined(IRCCD_HAVE_LIBEDIT) |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
492 |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
493 // {{{ prompt (libedit version) |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
494 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
495 auto prompt(EditLine*) -> const char* |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
496 { |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
497 static const char* text = "> "; |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
498 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
499 return text; |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
500 } |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
501 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
502 auto clean(std::string input) -> std::string |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
503 { |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
504 while (!input.empty() && (input.back() == '\n' || input.back() == '\r')) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
505 input.pop_back(); |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
506 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
507 return input; |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
508 } |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
509 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
510 auto matches(const std::string& name) -> std::vector<std::string> |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
511 { |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
512 std::vector<std::string> result; |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
513 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
514 for (const auto& pair : list) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
515 if (pair.first.compare(0U, name.size(), name) == 0U) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
516 result.push_back(pair.first); |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
517 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
518 return result; |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
519 } |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
520 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
521 auto complete(EditLine* el, int) -> unsigned char |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
522 { |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
523 const auto* lf = el_line(el); |
809
8460b4a34191
misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents:
797
diff
changeset
|
524 const auto args = split(std::string(lf->buffer, lf->cursor), " "); |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
525 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
526 if (args.size() == 0U) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
527 return CC_REFRESH; |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
528 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
529 const auto found = matches(args[0]); |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
530 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
531 if (found.size() != 1U) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
532 return CC_REFRESH; |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
533 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
534 // Insert the missing text, e.g. onCom -> onCommand. |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
535 if (el_insertstr(el, &found[0].c_str()[args[0].size()]) < 0) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
536 return CC_ERROR; |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
537 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
538 return CC_REFRESH; |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
539 } |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
540 |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
541 void run() |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
542 { |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
543 std::unique_ptr<EditLine, void (*)(EditLine*)> el( |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
544 el_init("irccd-test", stdin, stdout, stderr), |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
545 el_end |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
546 ); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
547 std::unique_ptr<History, void (*)(History*)> hist( |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
548 history_init(), |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
549 history_end |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
550 ); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
551 HistEvent hev; |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
552 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
553 history(hist.get(), &hev, H_SETSIZE, 1024); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
554 el_set(el.get(), EL_EDITOR, "emacs"); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
555 el_set(el.get(), EL_PROMPT, prompt); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
556 el_set(el.get(), EL_HIST, history, hist.get()); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
557 el_set(el.get(), EL_ADDFN, "ed-complete", "Complete command", complete); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
558 el_set(el.get(), EL_BIND, "^I", "ed-complete", nullptr); |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
559 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
560 const char* s; |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
561 int size; |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
562 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
563 while ((s = el_gets(el.get(), &size)) && size >= 0) { |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
564 if (size > 0) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
565 history(hist.get(), &hev, H_ENTER, s); |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
566 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
567 exec(clean(s)); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
568 } |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
569 } |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
570 |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
571 // }}} |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
572 |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
573 #else |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
574 |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
575 // {{{ run (standard version) |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
576 |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
577 void run() |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
578 { |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
579 std::string line; |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
580 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
581 for (;;) { |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
582 std::cout << "> "; |
657
c09aee75fde4
Irccd: style (irccd-test) #782
David Demelier <markand@malikania.fr>
parents:
644
diff
changeset
|
583 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
584 if (!std::getline(std::cin, line)) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
585 return; |
657
c09aee75fde4
Irccd: style (irccd-test) #782
David Demelier <markand@malikania.fr>
parents:
644
diff
changeset
|
586 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
587 exec(line); |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
588 } |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
589 } |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
590 |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
591 // }}} |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
592 |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
593 #endif |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
594 |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
595 // {{{ load_plugins |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
596 |
850
688f28dd3241
irccd: remove short options, closes #1673
David Demelier <markand@malikania.fr>
parents:
841
diff
changeset
|
597 void load_plugins(const options::pack& result) |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
598 { |
850
688f28dd3241
irccd: remove short options, closes #1673
David Demelier <markand@malikania.fr>
parents:
841
diff
changeset
|
599 const auto& [ args, _ ] = result; |
688f28dd3241
irccd: remove short options, closes #1673
David Demelier <markand@malikania.fr>
parents:
841
diff
changeset
|
600 |
688f28dd3241
irccd: remove short options, closes #1673
David Demelier <markand@malikania.fr>
parents:
841
diff
changeset
|
601 if (args.size() != 1U) |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
602 usage(); |
850
688f28dd3241
irccd: remove short options, closes #1673
David Demelier <markand@malikania.fr>
parents:
841
diff
changeset
|
603 // NOTREACHED |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
604 |
850
688f28dd3241
irccd: remove short options, closes #1673
David Demelier <markand@malikania.fr>
parents:
841
diff
changeset
|
605 daemon->get_plugins().load("test", boost::filesystem::exists(args[0]) ? args[0] : ""); |
841
1399755352e7
irccd: use appropriate function names in bot
David Demelier <markand@malikania.fr>
parents:
825
diff
changeset
|
606 plugin = daemon->get_plugins().get("test"); |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
607 } |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
608 |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
609 // }}} |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
610 |
746
fe3d80412701
Irccd: load config in irccd-test
David Demelier <markand@malikania.fr>
parents:
729
diff
changeset
|
611 // {{{ load_config |
fe3d80412701
Irccd: load config in irccd-test
David Demelier <markand@malikania.fr>
parents:
729
diff
changeset
|
612 |
850
688f28dd3241
irccd: remove short options, closes #1673
David Demelier <markand@malikania.fr>
parents:
841
diff
changeset
|
613 auto load_config(const options::pack& result) -> config |
746
fe3d80412701
Irccd: load config in irccd-test
David Demelier <markand@malikania.fr>
parents:
729
diff
changeset
|
614 { |
850
688f28dd3241
irccd: remove short options, closes #1673
David Demelier <markand@malikania.fr>
parents:
841
diff
changeset
|
615 const auto& [ _, options ] = result; |
746
fe3d80412701
Irccd: load config in irccd-test
David Demelier <markand@malikania.fr>
parents:
729
diff
changeset
|
616 |
850
688f28dd3241
irccd: remove short options, closes #1673
David Demelier <markand@malikania.fr>
parents:
841
diff
changeset
|
617 if (const auto it = options.find('c'); it != options.end()) |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
618 return config(it->second); |
746
fe3d80412701
Irccd: load config in irccd-test
David Demelier <markand@malikania.fr>
parents:
729
diff
changeset
|
619 |
850
688f28dd3241
irccd: remove short options, closes #1673
David Demelier <markand@malikania.fr>
parents:
841
diff
changeset
|
620 return config::search("irccd.conf").value_or(config()); |
746
fe3d80412701
Irccd: load config in irccd-test
David Demelier <markand@malikania.fr>
parents:
729
diff
changeset
|
621 } |
fe3d80412701
Irccd: load config in irccd-test
David Demelier <markand@malikania.fr>
parents:
729
diff
changeset
|
622 |
fe3d80412701
Irccd: load config in irccd-test
David Demelier <markand@malikania.fr>
parents:
729
diff
changeset
|
623 // }}} |
fe3d80412701
Irccd: load config in irccd-test
David Demelier <markand@malikania.fr>
parents:
729
diff
changeset
|
624 |
850
688f28dd3241
irccd: remove short options, closes #1673
David Demelier <markand@malikania.fr>
parents:
841
diff
changeset
|
625 // {{{ load_cli |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
626 |
850
688f28dd3241
irccd: remove short options, closes #1673
David Demelier <markand@malikania.fr>
parents:
841
diff
changeset
|
627 auto load_cli(int argc, char** argv) -> options::pack |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
628 { |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
629 try { |
850
688f28dd3241
irccd: remove short options, closes #1673
David Demelier <markand@malikania.fr>
parents:
841
diff
changeset
|
630 return options::parse(argc, argv, "c:"); |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
631 } catch (const std::exception& ex) { |
850
688f28dd3241
irccd: remove short options, closes #1673
David Demelier <markand@malikania.fr>
parents:
841
diff
changeset
|
632 std::cerr << "abort: " << ex.what() << std::endl; |
688f28dd3241
irccd: remove short options, closes #1673
David Demelier <markand@malikania.fr>
parents:
841
diff
changeset
|
633 usage(); |
688f28dd3241
irccd: remove short options, closes #1673
David Demelier <markand@malikania.fr>
parents:
841
diff
changeset
|
634 // NOTREACHED |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
635 } |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
636 } |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
637 |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
638 // }}} |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
639 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
640 // {{{ load |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
641 |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
642 void load(int argc, char** argv) |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
643 { |
809
8460b4a34191
misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents:
797
diff
changeset
|
644 daemon = std::make_unique<bot>(io); |
841
1399755352e7
irccd: use appropriate function names in bot
David Demelier <markand@malikania.fr>
parents:
825
diff
changeset
|
645 daemon->get_plugins().add_loader(std::make_unique<dynlib_plugin_loader>()); |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
646 |
761
f25c878d823b
Irccd: re-enable javascript in irccd, irccd-test
David Demelier <markand@malikania.fr>
parents:
757
diff
changeset
|
647 #if defined(IRCCD_HAVE_JS) |
825
e9da936309df
irccd: fix build without Javascript
David Demelier <markand@malikania.fr>
parents:
824
diff
changeset
|
648 auto loader = std::make_unique<js::plugin_loader>(*daemon); |
757
97b356010785
Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents:
754
diff
changeset
|
649 |
825
e9da936309df
irccd: fix build without Javascript
David Demelier <markand@malikania.fr>
parents:
824
diff
changeset
|
650 for (const auto& f : js::api::registry()) |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
651 loader->get_modules().push_back(f()); |
757
97b356010785
Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents:
754
diff
changeset
|
652 |
841
1399755352e7
irccd: use appropriate function names in bot
David Demelier <markand@malikania.fr>
parents:
825
diff
changeset
|
653 daemon->get_plugins().add_loader(std::move(loader)); |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
654 #endif |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
655 |
850
688f28dd3241
irccd: remove short options, closes #1673
David Demelier <markand@malikania.fr>
parents:
841
diff
changeset
|
656 const auto pack = load_cli(argc, argv); |
688f28dd3241
irccd: remove short options, closes #1673
David Demelier <markand@malikania.fr>
parents:
841
diff
changeset
|
657 |
688f28dd3241
irccd: remove short options, closes #1673
David Demelier <markand@malikania.fr>
parents:
841
diff
changeset
|
658 load_config(pack); |
688f28dd3241
irccd: remove short options, closes #1673
David Demelier <markand@malikania.fr>
parents:
841
diff
changeset
|
659 load_plugins(pack); |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
660 } |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
661 |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
662 // }}} |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
663 |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
664 } // !namespace |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
665 |
797
2dfba38e93f0
cmake: fix headers installation, closes #924 @1h
David Demelier <markand@malikania.fr>
parents:
785
diff
changeset
|
666 } // !irccd::test |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
667 |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
668 int main(int argc, char** argv) |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
669 { |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
670 try { |
797
2dfba38e93f0
cmake: fix headers installation, closes #924 @1h
David Demelier <markand@malikania.fr>
parents:
785
diff
changeset
|
671 irccd::test::load(--argc, ++argv); |
2dfba38e93f0
cmake: fix headers installation, closes #924 @1h
David Demelier <markand@malikania.fr>
parents:
785
diff
changeset
|
672 irccd::test::run(); |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
673 } catch (const std::exception& ex) { |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
674 std::cerr << "abort: " << ex.what() << std::endl; |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
675 return 1; |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
761
diff
changeset
|
676 } |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
677 } |