From 3c05b5816aa0fb978686b0ed16a02336e0981a0e Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Thu, 7 Jul 2016 23:40:52 +0200 Subject: sinksh trace command including autocompletion The sinksh command allows to easily turn tracing for certain areas on or off. --- sinksh/syntax_modules/sink_trace.cpp | 44 +++++++++++++++++++++++------------- 1 file changed, 28 insertions(+), 16 deletions(-) (limited to 'sinksh/syntax_modules/sink_trace.cpp') 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 @@ namespace SinkTrace { -bool trace(const QStringList &args, State &state) +bool traceOff(const QStringList &args, State &state) { - // if (args.isEmpty()) { - // state.printError(QObject::tr("Specifiy a debug area to trace.")); - // return false; - // } - // - // - qDebug() << "Trace arguments: " << args; - Sink::Log::setDebugOutputLevel(Sink::Log::Trace); - // Sink::Log::setDebugOutputFilter(Sink::Log::FilterType::Area, "filter"); - + Sink::Log::setDebugOutputLevel(Sink::Log::Log); + qDebug() << "Turned trace off: " << args; return true; } -bool traceOff(const QStringList &args, State &state) +bool traceOn(const QStringList &args, State &state) { - Sink::Log::setDebugOutputLevel(Sink::Log::Log); - qDebug() << "Turned trace off: " << args; + if (args.isEmpty()) { + state.printError(QObject::tr("Specifiy a debug area to trace: ") + Sink::Log::debugAreas().toList().join(", ")); + return false; + } + Sink::Log::setDebugOutputLevel(Sink::Log::Trace); + QByteArrayList filter; + for (const auto &arg : args) { + filter << arg.toLatin1(); + } + Sink::Log::setDebugOutputFilter(Sink::Log::Area, filter); return true; } +bool trace(const QStringList &args, State &state) +{ + return traceOn(args, state); +} + + Syntax::List syntax() { Syntax trace("trace", QObject::tr("Control trace debug output."), &SinkTrace::trace, Syntax::NotInteractive); - trace.completer = &SinkshUtils::debugareaCompleter; + trace.completer = &SinkshUtils::debugareaCompleter; + + Syntax traceOff("off", QObject::tr("Turns off trace output."), &SinkTrace::traceOff, Syntax::NotInteractive); + traceOff.completer = &SinkshUtils::debugareaCompleter; + trace.children << traceOff; - trace.children << Syntax("off", QObject::tr("Turns off trace output."), &SinkTrace::traceOff, Syntax::NotInteractive); + Syntax traceOn("on", QObject::tr("Turns on trace output."), &SinkTrace::traceOn, Syntax::NotInteractive); + traceOn.completer = &SinkshUtils::debugareaCompleter; + trace.children << traceOn; return Syntax::List() << trace; } -- cgit v1.2.3