diff irccdctl/cli.cpp @ 449:9968eac538e6

Irccdctl: implement rule-info
author David Demelier <markand@malikania.fr>
date Thu, 06 Jul 2017 12:48:58 +0200
parents 9be4f8a5cf1a
children c8c68d4bf555
line wrap: on
line diff
--- a/irccdctl/cli.cpp	Wed Jul 05 18:20:26 2017 +0200
+++ b/irccdctl/cli.cpp	Thu Jul 06 12:48:58 2017 +0200
@@ -908,6 +908,44 @@
 }
 
 /*
+ * RuleInfoCli.
+ * ------------------------------------------------------------------
+ */
+
+RuleInfoCli::RuleInfoCli()
+    : Cli("rule-info",
+          "show a rule",
+          "rule-info index",
+          "Show a rule.\n\n"
+          "Example:\n"
+          "\tirccdctl rule-info 0\n"
+          "\tirccdctl rule-info 1")
+{
+}
+
+void RuleInfoCli::exec(Irccdctl &irccdctl, const std::vector<std::string> &args)
+{
+    if (args.size() < 1)
+        throw std::invalid_argument("rule-info requires 1 argument");
+
+    int index = 0;
+
+    try {
+        index = std::stoi(args[0]);
+    } catch (...) {
+        throw std::invalid_argument("invalid number '" + args[0] + "'");
+    }
+
+    auto result = request(irccdctl, {
+        { "command",    "rule-info" },
+        { "index",      index       }
+    });
+
+    check(result);
+    showRule(result, 0);
+}
+
+/*
  * WatchCli.
  * ------------------------------------------------------------------
  */