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/sinksh_utils.cpp | 6 ++--- sinksh/syntax_modules/sink_trace.cpp | 44 +++++++++++++++++++++++------------- 2 files changed, 30 insertions(+), 20 deletions(-) (limited to 'sinksh') 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 @@ #include "sinksh_utils.h" #include "common/store.h" +#include "common/log.h" #include "utils.h" @@ -115,10 +116,7 @@ QStringList resourceIds(State &state) QStringList debugareaCompleter(const QStringList &, const QString &fragment, State &state) { - QStringList list; - list << "foo.bar" << "tar.war" << "bluub"; - // return Utils::filteredCompletions(debugAreas(state), fragment); - return Utils::filteredCompletions(list, fragment); + return Utils::filteredCompletions(Sink::Log::debugAreas().toList(), fragment); } 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 @@ 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