diff options
author | Christian Mollekopf <chrigi_1@fastmail.fm> | 2016-07-07 23:40:52 +0200 |
---|---|---|
committer | Christian Mollekopf <chrigi_1@fastmail.fm> | 2016-07-07 23:40:52 +0200 |
commit | 3c05b5816aa0fb978686b0ed16a02336e0981a0e (patch) | |
tree | a05662f3635ac9364c2bde16eea0f915190cfb1f /sinksh | |
parent | da2b049e248c1ad7efeb53685158a205335e4e36 (diff) | |
download | sink-3c05b5816aa0fb978686b0ed16a02336e0981a0e.tar.gz sink-3c05b5816aa0fb978686b0ed16a02336e0981a0e.zip |
sinksh trace command including autocompletion
The sinksh command allows to easily turn tracing for certain areas on
or off.
Diffstat (limited to 'sinksh')
-rw-r--r-- | sinksh/sinksh_utils.cpp | 6 | ||||
-rw-r--r-- | sinksh/syntax_modules/sink_trace.cpp | 44 |
2 files changed, 30 insertions, 20 deletions
diff --git a/sinksh/sinksh_utils.cpp b/sinksh/sinksh_utils.cpp index 2a6f628..14b0aab 100644 --- a/sinksh/sinksh_utils.cpp +++ b/sinksh/sinksh_utils.cpp | |||
@@ -21,6 +21,7 @@ | |||
21 | #include "sinksh_utils.h" | 21 | #include "sinksh_utils.h" |
22 | 22 | ||
23 | #include "common/store.h" | 23 | #include "common/store.h" |
24 | #include "common/log.h" | ||
24 | 25 | ||
25 | #include "utils.h" | 26 | #include "utils.h" |
26 | 27 | ||
@@ -115,10 +116,7 @@ QStringList resourceIds(State &state) | |||
115 | 116 | ||
116 | QStringList debugareaCompleter(const QStringList &, const QString &fragment, State &state) | 117 | QStringList debugareaCompleter(const QStringList &, const QString &fragment, State &state) |
117 | { | 118 | { |
118 | QStringList list; | 119 | return Utils::filteredCompletions(Sink::Log::debugAreas().toList(), fragment); |
119 | list << "foo.bar" << "tar.war" << "bluub"; | ||
120 | // return Utils::filteredCompletions(debugAreas(state), fragment); | ||
121 | return Utils::filteredCompletions(list, fragment); | ||
122 | } | 120 | } |
123 | 121 | ||
124 | QStringList resourceCompleter(const QStringList &, const QString &fragment, State &state) | 122 | QStringList resourceCompleter(const QStringList &, const QString &fragment, State &state) |
diff --git a/sinksh/syntax_modules/sink_trace.cpp b/sinksh/syntax_modules/sink_trace.cpp index e7b92de..d480254 100644 --- a/sinksh/syntax_modules/sink_trace.cpp +++ b/sinksh/syntax_modules/sink_trace.cpp | |||
@@ -35,34 +35,46 @@ | |||
35 | namespace SinkTrace | 35 | namespace SinkTrace |
36 | { | 36 | { |
37 | 37 | ||
38 | bool trace(const QStringList &args, State &state) | 38 | bool traceOff(const QStringList &args, State &state) |
39 | { | 39 | { |
40 | // if (args.isEmpty()) { | 40 | Sink::Log::setDebugOutputLevel(Sink::Log::Log); |
41 | // state.printError(QObject::tr("Specifiy a debug area to trace.")); | 41 | qDebug() << "Turned trace off: " << args; |
42 | // return false; | ||
43 | // } | ||
44 | // | ||
45 | // | ||
46 | qDebug() << "Trace arguments: " << args; | ||
47 | Sink::Log::setDebugOutputLevel(Sink::Log::Trace); | ||
48 | // Sink::Log::setDebugOutputFilter(Sink::Log::FilterType::Area, "filter"); | ||
49 | |||
50 | return true; | 42 | return true; |
51 | } | 43 | } |
52 | 44 | ||
53 | bool traceOff(const QStringList &args, State &state) | 45 | bool traceOn(const QStringList &args, State &state) |
54 | { | 46 | { |
55 | Sink::Log::setDebugOutputLevel(Sink::Log::Log); | 47 | if (args.isEmpty()) { |
56 | qDebug() << "Turned trace off: " << args; | 48 | state.printError(QObject::tr("Specifiy a debug area to trace: ") + Sink::Log::debugAreas().toList().join(", ")); |
49 | return false; | ||
50 | } | ||
51 | Sink::Log::setDebugOutputLevel(Sink::Log::Trace); | ||
52 | QByteArrayList filter; | ||
53 | for (const auto &arg : args) { | ||
54 | filter << arg.toLatin1(); | ||
55 | } | ||
56 | Sink::Log::setDebugOutputFilter(Sink::Log::Area, filter); | ||
57 | return true; | 57 | return true; |
58 | } | 58 | } |
59 | 59 | ||
60 | bool trace(const QStringList &args, State &state) | ||
61 | { | ||
62 | return traceOn(args, state); | ||
63 | } | ||
64 | |||
65 | |||
60 | Syntax::List syntax() | 66 | Syntax::List syntax() |
61 | { | 67 | { |
62 | Syntax trace("trace", QObject::tr("Control trace debug output."), &SinkTrace::trace, Syntax::NotInteractive); | 68 | Syntax trace("trace", QObject::tr("Control trace debug output."), &SinkTrace::trace, Syntax::NotInteractive); |
63 | trace.completer = &SinkshUtils::debugareaCompleter; | 69 | trace.completer = &SinkshUtils::debugareaCompleter; |
70 | |||
71 | Syntax traceOff("off", QObject::tr("Turns off trace output."), &SinkTrace::traceOff, Syntax::NotInteractive); | ||
72 | traceOff.completer = &SinkshUtils::debugareaCompleter; | ||
73 | trace.children << traceOff; | ||
64 | 74 | ||
65 | trace.children << Syntax("off", QObject::tr("Turns off trace output."), &SinkTrace::traceOff, Syntax::NotInteractive); | 75 | Syntax traceOn("on", QObject::tr("Turns on trace output."), &SinkTrace::traceOn, Syntax::NotInteractive); |
76 | traceOn.completer = &SinkshUtils::debugareaCompleter; | ||
77 | trace.children << traceOn; | ||
66 | 78 | ||
67 | return Syntax::List() << trace; | 79 | return Syntax::List() << trace; |
68 | } | 80 | } |