summaryrefslogtreecommitdiffstats
path: root/sinksh/syntax_modules/sink_count.cpp
diff options
context:
space:
mode:
authorMinijackson <minijackson@riseup.net>2018-08-02 10:40:35 +0200
committerMinijackson <minijackson@riseup.net>2018-08-02 10:40:35 +0200
commiteb4c557efa38673eba773bda6b71a286d0c3c3b1 (patch)
tree570600682e6a21f6f5edefab880ef20f4f298e18 /sinksh/syntax_modules/sink_count.cpp
parenta24bf3db83d81d7d7677a1f0f750f208d32998a8 (diff)
downloadsink-eb4c557efa38673eba773bda6b71a286d0c3c3b1.tar.gz
sink-eb4c557efa38673eba773bda6b71a286d0c3c3b1.zip
Add subcommand/parameter/option/flag and automatic help
Diffstat (limited to 'sinksh/syntax_modules/sink_count.cpp')
-rw-r--r--sinksh/syntax_modules/sink_count.cpp28
1 files changed, 17 insertions, 11 deletions
diff --git a/sinksh/syntax_modules/sink_count.cpp b/sinksh/syntax_modules/sink_count.cpp
index 04a9550..aaa9c33 100644
--- a/sinksh/syntax_modules/sink_count.cpp
+++ b/sinksh/syntax_modules/sink_count.cpp
@@ -37,12 +37,28 @@
37namespace SinkCount 37namespace SinkCount
38{ 38{
39 39
40bool count(const QStringList &args, State &state);
41
42Syntax::List syntax()
43{
44 Syntax count("count", QObject::tr("Returns the number of items of a given type in a resource"), &SinkCount::count, Syntax::EventDriven);
45
46 count.addPositionalArgument({.name = "type", .help = "The entity type to count"});
47 count.addPositionalArgument({.name = "resource", .help = "A resource id where to count", .required = false});
48
49 count.completer = &SinkshUtils::typeCompleter;
50
51 return Syntax::List() << count;
52}
53
54REGISTER_SYNTAX(SinkCount)
55
40bool count(const QStringList &args, State &state) 56bool count(const QStringList &args, State &state)
41{ 57{
42 Sink::Query query; 58 Sink::Query query;
43 query.setId("count"); 59 query.setId("count");
44 if (!SinkshUtils::applyFilter(query, SyntaxTree::parseOptions(args))) { 60 if (!SinkshUtils::applyFilter(query, SyntaxTree::parseOptions(args))) {
45 state.printError(QObject::tr("Options: $type $filter")); 61 state.printError(syntax()[0].usage());
46 return false; 62 return false;
47 } 63 }
48 64
@@ -61,14 +77,4 @@ bool count(const QStringList &args, State &state)
61 return true; 77 return true;
62} 78}
63 79
64Syntax::List syntax()
65{
66 Syntax count("count", QObject::tr("Returns the number of items of a given type in a resource. Usage: count <type> <resource>"), &SinkCount::count, Syntax::EventDriven);
67 count.completer = &SinkshUtils::typeCompleter;
68
69 return Syntax::List() << count;
70}
71
72REGISTER_SYNTAX(SinkCount)
73
74} 80}