Mercurial > irccd
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. * ------------------------------------------------------------------ */