changeset 340:0f14931a76c1

Irccdctl: reenable
author David Demelier <markand@malikania.fr>
date Sat, 12 Nov 2016 22:02:54 +0100
parents 6f0682688527
children 45065955ba2d
files CMakeLists.txt irccdctl/CMakeLists.txt irccdctl/main.cpp libcommon/CMakeLists.txt libcommon/irccd/util.hpp
diffstat 5 files changed, 107 insertions(+), 21 deletions(-) [+]
line wrap: on
line diff
--- a/CMakeLists.txt	Sat Nov 12 21:54:00 2016 +0100
+++ b/CMakeLists.txt	Sat Nov 12 22:02:54 2016 +0100
@@ -87,7 +87,7 @@
 endif ()
 
 add_subdirectory(irccd)
-#add_subdirectory(irccdctl)
+add_subdirectory(irccdctl)
 add_subdirectory(contrib)
 
 if (WITH_JS)
--- a/irccdctl/CMakeLists.txt	Sat Nov 12 21:54:00 2016 +0100
+++ b/irccdctl/CMakeLists.txt	Sat Nov 12 22:02:54 2016 +0100
@@ -15,16 +15,69 @@
 # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 #
 
-# Project
 project(irccdctl)
 
+set(
+    SOURCES
+    ${irccdctl_SOURCE_DIR}/CMakeLists.txt
+    ${irccdctl_SOURCE_DIR}/cli.cpp
+    ${irccdctl_SOURCE_DIR}/cli.hpp
+    ${irccdctl_SOURCE_DIR}/cli-plugin-config.cpp
+    ${irccdctl_SOURCE_DIR}/cli-plugin-config.hpp
+    ${irccdctl_SOURCE_DIR}/cli-plugin-info.cpp
+    ${irccdctl_SOURCE_DIR}/cli-plugin-info.hpp
+    ${irccdctl_SOURCE_DIR}/cli-plugin-list.cpp
+    ${irccdctl_SOURCE_DIR}/cli-plugin-list.hpp
+    ${irccdctl_SOURCE_DIR}/cli-plugin-load.cpp
+    ${irccdctl_SOURCE_DIR}/cli-plugin-load.hpp
+    ${irccdctl_SOURCE_DIR}/cli-plugin-reload.cpp
+    ${irccdctl_SOURCE_DIR}/cli-plugin-reload.hpp
+    ${irccdctl_SOURCE_DIR}/cli-plugin-unload.cpp
+    ${irccdctl_SOURCE_DIR}/cli-plugin-unload.hpp
+    ${irccdctl_SOURCE_DIR}/cli-server-cmode.cpp
+    ${irccdctl_SOURCE_DIR}/cli-server-cmode.hpp
+    ${irccdctl_SOURCE_DIR}/cli-server-cnotice.cpp
+    ${irccdctl_SOURCE_DIR}/cli-server-cnotice.hpp
+    ${irccdctl_SOURCE_DIR}/cli-server-connect.cpp
+    ${irccdctl_SOURCE_DIR}/cli-server-connect.hpp
+    ${irccdctl_SOURCE_DIR}/cli-server-disconnect.cpp
+    ${irccdctl_SOURCE_DIR}/cli-server-disconnect.hpp
+    ${irccdctl_SOURCE_DIR}/cli-server-info.cpp
+    ${irccdctl_SOURCE_DIR}/cli-server-info.hpp
+    ${irccdctl_SOURCE_DIR}/cli-server-invite.cpp
+    ${irccdctl_SOURCE_DIR}/cli-server-invite.hpp
+    ${irccdctl_SOURCE_DIR}/cli-server-join.cpp
+    ${irccdctl_SOURCE_DIR}/cli-server-join.hpp
+    ${irccdctl_SOURCE_DIR}/cli-server-kick.cpp
+    ${irccdctl_SOURCE_DIR}/cli-server-kick.hpp
+    ${irccdctl_SOURCE_DIR}/cli-server-list.cpp
+    ${irccdctl_SOURCE_DIR}/cli-server-list.hpp
+    ${irccdctl_SOURCE_DIR}/cli-server-me.cpp
+    ${irccdctl_SOURCE_DIR}/cli-server-me.hpp
+    ${irccdctl_SOURCE_DIR}/cli-server-message.cpp
+    ${irccdctl_SOURCE_DIR}/cli-server-message.hpp
+    ${irccdctl_SOURCE_DIR}/cli-server-mode.cpp
+    ${irccdctl_SOURCE_DIR}/cli-server-mode.hpp
+    ${irccdctl_SOURCE_DIR}/cli-server-nick.cpp
+    ${irccdctl_SOURCE_DIR}/cli-server-nick.hpp
+    ${irccdctl_SOURCE_DIR}/cli-server-notice.cpp
+    ${irccdctl_SOURCE_DIR}/cli-server-notice.hpp
+    ${irccdctl_SOURCE_DIR}/cli-server-part.cpp
+    ${irccdctl_SOURCE_DIR}/cli-server-part.hpp
+    ${irccdctl_SOURCE_DIR}/cli-server-reconnect.cpp
+    ${irccdctl_SOURCE_DIR}/cli-server-reconnect.hpp
+    ${irccdctl_SOURCE_DIR}/main.cpp
+)
+
 irccd_define_executable(
     TARGET irccdctl
     DESCRIPTION "Irccd controller."
-    SOURCES CMakeLists.txt main.cpp
-    LIBRARIES libirccd
+    SOURCES ${SOURCES}
+    LIBRARIES libirccdctl
+    INCLUDES ${irccdctl_SOURCE_DIR}
 )
 
 if (UNIX)
     set_target_properties(irccdctl PROPERTIES LINK_FLAGS -pthread)
 endif ()
+
--- a/irccdctl/main.cpp	Sat Nov 12 21:54:00 2016 +0100
+++ b/irccdctl/main.cpp	Sat Nov 12 22:02:54 2016 +0100
@@ -16,28 +16,39 @@
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 
-#include <irccd/irccdctl.hpp>
-#include <irccd/logger.hpp>
-#include <irccd/path.hpp>
-#include <irccd/system.hpp>
+#include "client.hpp"
+#include "irccdctl.hpp"
+
+#include "cli-plugin-reload.hpp"
+#include "cli-plugin-unload.hpp"
+#include "cli-server-cmode.hpp"
+#include "cli-server-cnotice.hpp"
+#include "cli-server-connect.hpp"
+#include "cli-server-disconnect.hpp"
+#include "cli-server-info.hpp"
+#include "cli-server-invite.hpp"
+#include "cli-server-join.hpp"
+#include "cli-server-kick.hpp"
+#include "cli-server-list.hpp"
+#include "cli-server-me.hpp"
+#include "cli-server-message.hpp"
+#include "cli-server-mode.hpp"
+#include "cli-server-nick.hpp"
+#include "cli-server-notice.hpp"
+#include "cli-server-part.hpp"
+#include "cli-server-reconnect.hpp"
 
 using namespace irccd;
 
-int main(int argc, char **argv)
+int main(int, char **)
 {
-    // TODO: move to Application
-    sys::setProgramName("irccdctl");
-    path::setApplicationPath(argv[0]);
-    log::setVerbose(false);
-
     try {
-        Irccdctl ctl;
+        Irccdctl ctl(std::make_unique<Client>());
+        ctl.client().connect(net::local::create("/tmp/irccd.sock"));
 
-        ctl.run(--argc, ++argv);
+        cli::ServerReconnectCli command;
+        command.exec(ctl, {"local"});
     } catch (const std::exception &ex) {
-        log::warning() << "error: " << ex.what() << std::endl;
-        std::exit(1);
+        std::cerr << ex.what() << std::endl;
     }
-
-    return 0;
 }
--- a/libcommon/CMakeLists.txt	Sat Nov 12 21:54:00 2016 +0100
+++ b/libcommon/CMakeLists.txt	Sat Nov 12 22:02:54 2016 +0100
@@ -33,7 +33,11 @@
         ${libcommon_SOURCE_DIR}/CMakeLists.txt
         ${HEADERS}
         ${SOURCES}
-    LIBRARIES extern-cppformat extern-json
+    LIBRARIES
+        extern-cppformat
+        extern-json
+        $<$<BOOL:${WITH_SSL}>:OpenSSL::SSL>
+        $<$<BOOL:${WITH_SSL}>:OpenSSL::Crypto>
     PUBLIC_INCLUDES
         $<BUILD_INTERFACE:${IRCCD_FAKEROOTDIR}/include/irccd>
         $<BUILD_INTERFACE:${libcommon_SOURCE_DIR}/irccd>
--- a/libcommon/irccd/util.hpp	Sat Nov 12 21:54:00 2016 +0100
+++ b/libcommon/irccd/util.hpp	Sat Nov 12 22:02:54 2016 +0100
@@ -598,6 +598,24 @@
     return toString(get(json, key), def);
 }
 
+/**
+ * Print the value as human readable.
+ *
+ * \param value the value
+ * \return the string
+ */
+inline std::string pretty(const nlohmann::json &value)
+{
+    switch (value.type()) {
+    case nlohmann::json::value_t::boolean:
+        return value.get<bool>() ? "true" : "false";
+    case nlohmann::json::value_t::string:
+        return value.get<std::string>();
+    default:
+        return value.dump();
+    }
+}
+
 } // !json
 
 /**