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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 }