diff irccdctl/cli.cpp @ 450:c8c68d4bf555

Irccdctl: implement rule-remove
author David Demelier <markand@malikania.fr>
date Fri, 07 Jul 2017 12:22:17 +0200
parents 9968eac538e6
children 1fdedd2977d2
line wrap: on
line diff
--- a/irccdctl/cli.cpp	Thu Jul 06 12:48:58 2017 +0200
+++ b/irccdctl/cli.cpp	Fri Jul 07 12:22:17 2017 +0200
@@ -946,6 +946,43 @@
 }
 
 /*
+ * RuleRemoveCli.
+ * ------------------------------------------------------------------
+ */
+
+RuleRemoveCli::RuleRemoveCli()
+    : Cli("rule-remove",
+          "remove a rule",
+          "rule-remove index",
+          "Remove an existing rule.\n\n"
+          "Example:\n"
+          "\tirccdctl rule-remove 0\n"
+          "\tirccdctl rule-remove 1")
+{
+}
+
+void RuleRemoveCli::exec(Irccdctl &irccdctl, const std::vector<std::string> &args)
+{
+    if (args.size() < 1)
+        throw std::invalid_argument("rule-remove 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-remove"   },
+        { "index",      index           }
+    });
+
+    check(result);
+}
+
+/*
  * WatchCli.
  * ------------------------------------------------------------------
  */