summaryrefslogtreecommitdiffstats
path: root/sinksh/syntax_modules/sink_trace.cpp
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2016-07-07 23:40:52 +0200
committerChristian Mollekopf <chrigi_1@fastmail.fm>2016-07-07 23:40:52 +0200
commit3c05b5816aa0fb978686b0ed16a02336e0981a0e (patch)
treea05662f3635ac9364c2bde16eea0f915190cfb1f /sinksh/syntax_modules/sink_trace.cpp
parentda2b049e248c1ad7efeb53685158a205335e4e36 (diff)
downloadsink-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/syntax_modules/sink_trace.cpp')
-rw-r--r--sinksh/syntax_modules/sink_trace.cpp44
1 files changed, 28 insertions, 16 deletions
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 @@
35namespace SinkTrace 35namespace SinkTrace
36{ 36{
37 37
38bool trace(const QStringList &args, State &state) 38bool 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
53bool traceOff(const QStringList &args, State &state) 45bool 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
60bool trace(const QStringList &args, State &state)
61{
62 return traceOn(args, state);
63}
64
65
60Syntax::List syntax() 66Syntax::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}