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