Mercurial > irccd
annotate irccd-test/main.cpp @ 757:97b356010785
Irccd: create (command|jsapi)::registry
Make two list of constructor functions to initialize all command and all
Javascript modules to avoid duplicating efforts in case of change.
While here, update test fixtures to load all of them for simplicity.
author | David Demelier <markand@malikania.fr> |
---|---|
date | Mon, 06 Aug 2018 21:27:00 +0200 |
parents | c216d148558d |
children | f25c878d823b |
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 * |
628
27587ff92a64
Misc: update copyrights
David Demelier <markand@malikania.fr>
parents:
621
diff
changeset
|
4 * Copyright (c) 2013-2018 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) |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
32 # include <histedit.h> |
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> |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
39 #include <irccd/daemon/irccd.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) |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
46 # include <irccd/js/js_plugin.hpp> |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
47 #endif |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
48 |
729
e08bfc940c54
Core: remove string_util::sprintf
David Demelier <markand@malikania.fr>
parents:
701
diff
changeset
|
49 using boost::format; |
e08bfc940c54
Core: remove string_util::sprintf
David Demelier <markand@malikania.fr>
parents:
701
diff
changeset
|
50 using boost::str; |
e08bfc940c54
Core: remove string_util::sprintf
David Demelier <markand@malikania.fr>
parents:
701
diff
changeset
|
51 |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
52 namespace irccd { |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
53 |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
54 namespace su = string_util; |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
55 |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
56 namespace { |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
57 |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
58 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
|
59 |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
60 std::unique_ptr<irccd> daemon; |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
61 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
|
62 |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
63 // {{{ function table |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
64 |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
65 /* |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
66 * 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
|
67 */ |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
68 void on_command(const std::string&); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
69 void on_connect(const std::string&); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
70 void on_invite(const std::string&); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
71 void on_join(const std::string&); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
72 void on_kick(const std::string&); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
73 void on_load(const std::string&); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
74 void on_me(const std::string&); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
75 void on_message(const std::string&); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
76 void on_mode(const std::string&); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
77 void on_names(const std::string&); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
78 void on_nick(const std::string&); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
79 void on_notice(const std::string&); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
80 void on_part(const std::string&); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
81 void on_reload(const std::string&); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
82 void on_topic(const std::string&); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
83 void on_unload(const std::string&); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
84 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
|
85 |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
86 /* |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
87 * Table of user functions. |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
88 */ |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
89 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
|
90 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
|
91 |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
92 static const functions list{ |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
93 { "onCommand", &(on_command) }, |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
94 { "onConnect", &(on_connect) }, |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
95 { "onInvite", &(on_invite) }, |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
96 { "onJoin", &(on_join) }, |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
97 { "onKick", &(on_kick) }, |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
98 { "onLoad", &(on_load) }, |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
99 { "onMe", &(on_me) }, |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
100 { "onMessage", &(on_message) }, |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
101 { "onMode", &(on_mode) }, |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
102 { "onNames", &(on_names) }, |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
103 { "onNick", &(on_nick) }, |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
104 { "onNotice", &(on_notice) }, |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
105 { "onPart", &(on_part) }, |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
106 { "onReload", &(on_reload) }, |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
107 { "onTopic", &(on_topic) }, |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
108 { "onUnload", &(on_unload) }, |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
109 { "onWhois", &(on_whois) } |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
110 }; |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
111 |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
112 // }}} |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
113 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
114 // {{{ usage |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
115 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
116 void usage() |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
117 { |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
118 std::cerr << "usage: irccd-test [-c config] plugin-name" << std::endl; |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
119 std::exit(1); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
120 } |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
121 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
122 // }}} |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
123 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
124 // {{{ get_server |
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 std::shared_ptr<server> get_server(std::string name) |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
127 { |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
128 name = boost::algorithm::trim_copy(name); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
129 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
130 if (name.empty()) |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
131 name = "test"; |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
132 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
133 auto s = daemon->servers().get(name); |
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 if (!s) { |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
136 s = std::make_shared<debug_server>(io, std::move(name), "localhost"); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
137 daemon->servers().add(s); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
138 } |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
139 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
140 return s; |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
141 } |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
142 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
143 // }}} |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
144 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
145 // {{{ get_arg |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
146 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
147 std::string get_arg(const std::vector<std::string>& args, unsigned index) |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
148 { |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
149 if (index >= args.size()) |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
150 return ""; |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
151 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
152 return args[index]; |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
153 } |
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 // {{{ on_command |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
158 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
159 /* |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
160 * onCommand server origin channel message |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
161 */ |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
162 void on_command(const std::string& data) |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
163 { |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
164 const auto args = su::split(data, " ", 4); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
165 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
166 plugin->handle_command(*daemon, { |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
167 get_server(get_arg(args, 0)), |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
168 get_arg(args, 1), |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
169 get_arg(args, 2), |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
170 get_arg(args, 3) |
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 |
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 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
176 // {{{ on_connect |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
177 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
178 /* |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
179 * onConnect server |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
180 */ |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
181 void on_connect(const std::string& data) |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
182 { |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
183 const auto args = su::split(data, " "); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
184 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
185 plugin->handle_connect(*daemon, {get_server(get_arg(args, 0))}); |
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 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
190 // {{{ on_invite |
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 /* |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
193 * onInvite server origin channel target |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
194 */ |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
195 void on_invite(const std::string& data) |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
196 { |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
197 const auto args = su::split(data, " "); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
198 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
199 plugin->handle_invite(*daemon, { |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
200 get_server(get_arg(args, 0)), |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
201 get_arg(args, 1), |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
202 get_arg(args, 2), |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
203 get_arg(args, 3), |
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 |
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 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
209 // {{{ on_join |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
210 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
211 /* |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
212 * onJoin server origin channel |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
213 */ |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
214 void on_join(const std::string& data) |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
215 { |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
216 const auto args = su::split(data, " "); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
217 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
218 plugin->handle_join(*daemon, { |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
219 get_server(get_arg(args, 0)), |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
220 get_arg(args, 1), |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
221 get_arg(args, 2) |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
222 }); |
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 // }}} |
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 // {{{ on_kick |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
228 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
229 /* |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
230 * onKick server origin channel reason |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
231 */ |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
232 void on_kick(const std::string& data) |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
233 { |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
234 const auto args = su::split(data, " ", 5); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
235 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
236 plugin->handle_kick(*daemon, { |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
237 get_server(get_arg(args, 0)), |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
238 get_arg(args, 1), |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
239 get_arg(args, 2), |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
240 get_arg(args, 3), |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
241 get_arg(args, 4), |
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 } |
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 // }}} |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
246 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
247 // {{{ on_load |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
248 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
249 /* |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
250 * onLoad |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
251 */ |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
252 void on_load(const std::string&) |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
253 { |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
254 plugin->handle_load(*daemon); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
255 } |
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 // {{{ on_me |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
260 |
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 * onMe server origin channel message |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
263 */ |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
264 void on_me(const std::string& data) |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
265 { |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
266 const auto args = su::split(data, " ", 4); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
267 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
268 plugin->handle_me(*daemon, { |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
269 get_server(get_arg(args, 0)), |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
270 get_arg(args, 1), |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
271 get_arg(args, 2), |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
272 get_arg(args, 3) |
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 |
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 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
278 // {{{ on_message |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
279 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
280 /* |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
281 * onMessage server origin channel message |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
282 */ |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
283 void on_message(const std::string& data) |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
284 { |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
285 const auto args = su::split(data, " ", 4); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
286 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
287 plugin->handle_message(*daemon, { |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
288 get_server(get_arg(args, 0)), |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
289 get_arg(args, 1), |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
290 get_arg(args, 2), |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
291 get_arg(args, 3) |
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 |
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 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
297 // {{{ on_mode |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
298 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
299 /* |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
300 * onMode server origin channel mode limit user mask |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
301 */ |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
302 void on_mode(const std::string& data) |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
303 { |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
304 const auto args = su::split(data, " ", 7); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
305 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
306 plugin->handle_mode(*daemon, { |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
307 get_server(get_arg(args, 0)), |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
308 get_arg(args, 1), |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
309 get_arg(args, 2), |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
310 get_arg(args, 3), |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
311 get_arg(args, 4), |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
312 get_arg(args, 5), |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
313 get_arg(args, 6), |
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 } |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
316 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
317 // }}} |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
318 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
319 // {{{ on_names |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
320 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
321 /* |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
322 * onNames server channel nick1 nick2 nickN |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
323 */ |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
324 void on_names(const std::string& data) |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
325 { |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
326 const auto args = su::split(data, " "); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
327 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
328 names_event ev; |
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 ev.server = get_server(get_arg(args, 0)); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
331 ev.channel = get_arg(args, 1); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
332 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
333 if (args.size() >= 3U) |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
334 ev.names.insert(ev.names.begin(), args.begin() + 2, args.end()); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
335 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
336 plugin->handle_names(*daemon, ev); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
337 } |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
338 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
339 // }}} |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
340 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
341 // {{{ on_nick |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
342 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
343 /* |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
344 * onNick server origin nickname |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
345 */ |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
346 void on_nick(const std::string& data) |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
347 { |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
348 const auto args = su::split(data, " "); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
349 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
350 plugin->handle_nick(*daemon, { |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
351 get_server(get_arg(args, 0)), |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
352 get_arg(args, 1), |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
353 get_arg(args, 2) |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
354 }); |
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 // }}} |
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 // {{{ on_notice |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
360 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
361 /* |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
362 * onNotice server origin channel nickname |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
363 */ |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
364 void on_notice(const std::string& data) |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
365 { |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
366 const auto args = su::split(data, " ", 4); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
367 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
368 plugin->handle_notice(*daemon, { |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
369 get_server(get_arg(args, 0)), |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
370 get_arg(args, 1), |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
371 get_arg(args, 2), |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
372 get_arg(args, 3) |
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 |
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 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
378 // {{{ on_part |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
379 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
380 /* |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
381 * onPart server origin channel reason |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
382 */ |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
383 void on_part(const std::string& data) |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
384 { |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
385 const auto args = su::split(data, " ", 4); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
386 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
387 plugin->handle_part(*daemon, { |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
388 get_server(get_arg(args, 0)), |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
389 get_arg(args, 1), |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
390 get_arg(args, 2), |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
391 get_arg(args, 3), |
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 |
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 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
397 // {{{ on_reload |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
398 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
399 /* |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
400 * onReload |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
401 */ |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
402 void on_reload(const std::string&) |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
403 { |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
404 plugin->handle_reload(*daemon); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
405 } |
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 // {{{ on_topic |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
410 |
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 * onTopic server origin channel topic |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
413 */ |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
414 void on_topic(const std::string& data) |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
415 { |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
416 const auto args = su::split(data, " ", 4); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
417 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
418 plugin->handle_topic(*daemon, { |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
419 get_server(get_arg(args, 0)), |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
420 get_arg(args, 1), |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
421 get_arg(args, 2), |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
422 get_arg(args, 3) |
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 |
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 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
428 // {{{ on_unload |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
429 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
430 /* |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
431 * onUnload |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
432 */ |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
433 void on_unload(const std::string&) |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
434 { |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
435 plugin->handle_unload(*daemon); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
436 } |
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 // {{{ on_whois |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
441 |
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 * onWhois server nick user host realname chan1 chan2 chanN |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
444 */ |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
445 void on_whois(const std::string& data) |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
446 { |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
447 const auto args = su::split(data, " "); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
448 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
449 whois_event ev; |
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 ev.server = get_server(get_arg(args, 0)); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
452 ev.whois.nick = get_arg(args, 1); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
453 ev.whois.user = get_arg(args, 2); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
454 ev.whois.host = get_arg(args, 3); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
455 ev.whois.realname = get_arg(args, 4); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
456 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
457 if (args.size() >= 5) |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
458 ev.whois.channels.insert(ev.whois.channels.begin(), args.begin() + 5, args.end()); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
459 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
460 plugin->handle_whois(*daemon, ev); |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
461 } |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
462 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
463 // }}} |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
464 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
465 // {{{ exec |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
466 |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
467 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
|
468 { |
657
c09aee75fde4
Irccd: style (irccd-test) #782
David Demelier <markand@malikania.fr>
parents:
644
diff
changeset
|
469 const auto pos = line.find(' '); |
c09aee75fde4
Irccd: style (irccd-test) #782
David Demelier <markand@malikania.fr>
parents:
644
diff
changeset
|
470 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
|
471 |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
472 if (it != list.end()) |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
473 it->second(pos == std::string::npos ? "" : line.substr(pos + 1)); |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
474 } |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
475 |
689
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 |
701
2007a37d7e1a
CMake: prefix options with IRCCD_, #closes 800 @2h
David Demelier <markand@malikania.fr>
parents:
689
diff
changeset
|
478 #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
|
479 |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
480 // {{{ prompt (libedit version) |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
481 |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
482 const char* prompt(EditLine*) |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
483 { |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
484 static const char* text = "> "; |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
485 |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
486 return text; |
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 |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
489 std::string clean(std::string input) |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
490 { |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
491 while (!input.empty() && (input.back() == '\n' || input.back() == '\r')) |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
492 input.pop_back(); |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
493 |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
494 return input; |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
495 } |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
496 |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
497 std::vector<std::string> matches(const std::string& name) |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
498 { |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
499 std::vector<std::string> result; |
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 for (const auto& pair : list) |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
502 if (pair.first.compare(0U, name.size(), name) == 0U) |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
503 result.push_back(pair.first); |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
504 |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
505 return result; |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
506 } |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
507 |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
508 unsigned char complete(EditLine* el, int) |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
509 { |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
510 const auto* lf = el_line(el); |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
511 const auto args = su::split(std::string(lf->buffer, lf->cursor), " "); |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
512 |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
513 if (args.size() == 0U) |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
514 return CC_REFRESH; |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
515 |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
516 const auto found = matches(args[0]); |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
517 |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
518 if (found.size() != 1U) |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
519 return CC_REFRESH; |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
520 |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
521 // Insert the missing text, e.g. onCom -> onCommand. |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
522 if (el_insertstr(el, &found[0].c_str()[args[0].size()]) < 0) |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
523 return CC_ERROR; |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
524 |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
525 return CC_REFRESH; |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
526 } |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
527 |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
528 void run() |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
529 { |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
530 std::unique_ptr<EditLine, void (*)(EditLine*)> el( |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
531 el_init("irccd-test", stdin, stdout, stderr), |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
532 el_end |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
533 ); |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
534 std::unique_ptr<History, void (*)(History*)> hist( |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
535 history_init(), |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
536 history_end |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
537 ); |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
538 HistEvent hev; |
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 history(hist.get(), &hev, H_SETSIZE, 1024); |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
541 el_set(el.get(), EL_EDITOR, "emacs"); |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
542 el_set(el.get(), EL_PROMPT, prompt); |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
543 el_set(el.get(), EL_HIST, history, hist.get()); |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
544 el_set(el.get(), EL_ADDFN, "ed-complete", "Complete command", complete); |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
545 el_set(el.get(), EL_BIND, "^I", "ed-complete", nullptr); |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
546 |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
547 const char* s; |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
548 int size; |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
549 |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
550 while ((s = el_gets(el.get(), &size)) && size >= 0) { |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
551 if (size > 0) |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
552 history(hist.get(), &hev, H_ENTER, s); |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
553 |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
554 exec(clean(s)); |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
555 } |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
556 } |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
557 |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
558 // }}} |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
559 |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
560 #else |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
561 |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
562 // {{{ run (standard version) |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
563 |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
564 void run() |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
565 { |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
566 std::string line; |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
567 |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
568 for (;;) { |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
569 std::cout << "> "; |
657
c09aee75fde4
Irccd: style (irccd-test) #782
David Demelier <markand@malikania.fr>
parents:
644
diff
changeset
|
570 |
c09aee75fde4
Irccd: style (irccd-test) #782
David Demelier <markand@malikania.fr>
parents:
644
diff
changeset
|
571 if (!std::getline(std::cin, line)) |
c09aee75fde4
Irccd: style (irccd-test) #782
David Demelier <markand@malikania.fr>
parents:
644
diff
changeset
|
572 return; |
c09aee75fde4
Irccd: style (irccd-test) #782
David Demelier <markand@malikania.fr>
parents:
644
diff
changeset
|
573 |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
574 exec(line); |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
575 } |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
576 } |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
577 |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
578 // }}} |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
579 |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
580 #endif |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
581 |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
582 // {{{ load_plugins |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
583 |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
584 void load_plugins(int argc, char** argv) |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
585 { |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
586 if (argc <= 0) |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
587 usage(); |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
588 |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
589 daemon->plugins().load("test", boost::filesystem::exists(argv[0]) ? argv[0] : ""); |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
590 plugin = daemon->plugins().get("test"); |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
591 } |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
592 |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
593 // }}} |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
594 |
746
fe3d80412701
Irccd: load config in irccd-test
David Demelier <markand@malikania.fr>
parents:
729
diff
changeset
|
595 // {{{ load_config |
fe3d80412701
Irccd: load config in irccd-test
David Demelier <markand@malikania.fr>
parents:
729
diff
changeset
|
596 |
fe3d80412701
Irccd: load config in irccd-test
David Demelier <markand@malikania.fr>
parents:
729
diff
changeset
|
597 auto load_config(const option::result& result) -> config |
fe3d80412701
Irccd: load config in irccd-test
David Demelier <markand@malikania.fr>
parents:
729
diff
changeset
|
598 { |
fe3d80412701
Irccd: load config in irccd-test
David Demelier <markand@malikania.fr>
parents:
729
diff
changeset
|
599 auto it = result.find("-c"); |
fe3d80412701
Irccd: load config in irccd-test
David Demelier <markand@malikania.fr>
parents:
729
diff
changeset
|
600 |
fe3d80412701
Irccd: load config in irccd-test
David Demelier <markand@malikania.fr>
parents:
729
diff
changeset
|
601 if (it != result.end() || (it = result.find("--config")) != result.end()) |
fe3d80412701
Irccd: load config in irccd-test
David Demelier <markand@malikania.fr>
parents:
729
diff
changeset
|
602 return config(it->second); |
fe3d80412701
Irccd: load config in irccd-test
David Demelier <markand@malikania.fr>
parents:
729
diff
changeset
|
603 |
fe3d80412701
Irccd: load config in irccd-test
David Demelier <markand@malikania.fr>
parents:
729
diff
changeset
|
604 auto cfg = config::search("irccd.conf"); |
fe3d80412701
Irccd: load config in irccd-test
David Demelier <markand@malikania.fr>
parents:
729
diff
changeset
|
605 |
fe3d80412701
Irccd: load config in irccd-test
David Demelier <markand@malikania.fr>
parents:
729
diff
changeset
|
606 return *cfg; |
fe3d80412701
Irccd: load config in irccd-test
David Demelier <markand@malikania.fr>
parents:
729
diff
changeset
|
607 } |
fe3d80412701
Irccd: load config in irccd-test
David Demelier <markand@malikania.fr>
parents:
729
diff
changeset
|
608 |
fe3d80412701
Irccd: load config in irccd-test
David Demelier <markand@malikania.fr>
parents:
729
diff
changeset
|
609 // }}} |
fe3d80412701
Irccd: load config in irccd-test
David Demelier <markand@malikania.fr>
parents:
729
diff
changeset
|
610 |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
611 // {{{ load_options |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
612 |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
613 void load_options(int& argc, char**& argv) |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
614 { |
746
fe3d80412701
Irccd: load config in irccd-test
David Demelier <markand@malikania.fr>
parents:
729
diff
changeset
|
615 static const option::options def{ |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
616 { "-c", true }, |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
617 { "--config", true } |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
618 }; |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
619 |
746
fe3d80412701
Irccd: load config in irccd-test
David Demelier <markand@malikania.fr>
parents:
729
diff
changeset
|
620 try { |
fe3d80412701
Irccd: load config in irccd-test
David Demelier <markand@malikania.fr>
parents:
729
diff
changeset
|
621 daemon->set_config(load_config(option::read(argc, argv, def))); |
fe3d80412701
Irccd: load config in irccd-test
David Demelier <markand@malikania.fr>
parents:
729
diff
changeset
|
622 } catch (const std::exception& ex) { |
fe3d80412701
Irccd: load config in irccd-test
David Demelier <markand@malikania.fr>
parents:
729
diff
changeset
|
623 throw std::runtime_error(str(format("%1%") % ex.what())); |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
624 } |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
625 } |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
626 |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
627 // }}} |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
628 |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
629 // {{{ load |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
630 |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
631 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
|
632 { |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
633 daemon = std::make_unique<irccd>(io); |
757
97b356010785
Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents:
754
diff
changeset
|
634 daemon->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
|
635 |
757
97b356010785
Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents:
754
diff
changeset
|
636 #if defined(HAVE_JS) |
97b356010785
Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents:
754
diff
changeset
|
637 auto loader = std::make_unique<js_plugin_loader>(); |
97b356010785
Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents:
754
diff
changeset
|
638 |
97b356010785
Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents:
754
diff
changeset
|
639 for (const auto& f : jsapi::registry) |
97b356010785
Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents:
754
diff
changeset
|
640 daemon->get_modules().push_back(f()); |
97b356010785
Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents:
754
diff
changeset
|
641 |
97b356010785
Irccd: create (command|jsapi)::registry
David Demelier <markand@malikania.fr>
parents:
754
diff
changeset
|
642 daemon->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
|
643 #endif |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
644 |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
645 load_options(argc, argv); |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
646 load_plugins(argc, argv); |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
647 } |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
648 |
689
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
649 // }}} |
c0c2926a35df
Irccdctl: cleanup main.cpp
David Demelier <markand@malikania.fr>
parents:
657
diff
changeset
|
650 |
620
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
651 } // !namespace |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
652 |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
653 } // !irccd |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
654 |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
655 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
|
656 { |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
657 try { |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
658 irccd::load(--argc, ++argv); |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
659 irccd::run(); |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
660 } catch (const std::exception& ex) { |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
661 std::cerr << "abort: " << ex.what() << std::endl; |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
662 return 1; |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
663 } |
c79ae2987955
Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
664 } |