From 6cf2582e17c28ca04f5cfb59858c4a9778c700d4 Mon Sep 17 00:00:00 2001 From: Paul Eggleton Date: Tue, 13 Dec 2016 20:07:01 +1300 Subject: knotty: make quiet option a level option Allow you to specify -q / --quiet more than once to reduce the messages even further. It will now operate as follows: Level Option Result ----- ------ ---------------------------------------- 0 Print usual output 1 -q Only show progress and warnings or above 2 -qq Only show warnings or above 3+ -qqq Only show errors Signed-off-by: Paul Eggleton Signed-off-by: Richard Purdie --- lib/bb/main.py | 4 ++-- lib/bb/ui/knotty.py | 35 ++++++++++++++++++++++++++++------- 2 files changed, 30 insertions(+), 9 deletions(-) diff --git a/lib/bb/main.py b/lib/bb/main.py index f2f59f670..a544c0aec 100755 --- a/lib/bb/main.py +++ b/lib/bb/main.py @@ -179,8 +179,8 @@ class BitBakeConfigParameters(cookerdata.ConfigParameters): parser.add_option("-D", "--debug", action="count", dest="debug", default=0, help="Increase the debug level. You can specify this more than once.") - parser.add_option("-q", "--quiet", action="store_true", dest="quiet", default=False, - help="Output less log message data to the terminal.") + parser.add_option("-q", "--quiet", action="count", dest="quiet", default=0, + help="Output less log message data to the terminal. You can specify this more than once.") parser.add_option("-n", "--dry-run", action="store_true", dest="dry_run", default=False, help="Don't execute, just go through the motions.") diff --git a/lib/bb/ui/knotty.py b/lib/bb/ui/knotty.py index 48e1223c6..3390eb73a 100644 --- a/lib/bb/ui/knotty.py +++ b/lib/bb/ui/knotty.py @@ -284,7 +284,7 @@ class TerminalFilter(object): content = self.main_progress.update(progress) print('') lines = 1 + int(len(content) / (self.columns + 1)) - if not self.quiet: + if self.quiet == 0: for tasknum, task in enumerate(tasks[:(self.rows - 2)]): if isinstance(task, tuple): pbar, progress, rate, start_time = task @@ -353,10 +353,13 @@ def main(server, eventHandler, params, tf = TerminalFilter): errconsole = logging.StreamHandler(sys.stderr) format_str = "%(levelname)s: %(message)s" format = bb.msg.BBLogFormatter(format_str) - if params.options.quiet: - bb.msg.addDefaultlogFilter(console, bb.msg.BBLogFilterStdOut, bb.msg.BBLogFormatter.WARNING) + if params.options.quiet == 0: + forcelevel = None + elif params.options.quiet > 2: + forcelevel = bb.msg.BBLogFormatter.ERROR else: - bb.msg.addDefaultlogFilter(console, bb.msg.BBLogFilterStdOut) + forcelevel = bb.msg.BBLogFormatter.WARNING + bb.msg.addDefaultlogFilter(console, bb.msg.BBLogFilterStdOut, forcelevel) bb.msg.addDefaultlogFilter(errconsole, bb.msg.BBLogFilterStdErr) console.setFormatter(format) errconsole.setFormatter(format) @@ -506,35 +509,47 @@ def main(server, eventHandler, params, tf = TerminalFilter): logger.info(event._message) continue if isinstance(event, bb.event.ParseStarted): + if params.options.quiet > 1: + continue if event.total == 0: continue parseprogress = new_progress("Parsing recipes", event.total).start() continue if isinstance(event, bb.event.ParseProgress): + if params.options.quiet > 1: + continue if parseprogress: parseprogress.update(event.current) else: bb.warn("Got ParseProgress event for parsing that never started?") continue if isinstance(event, bb.event.ParseCompleted): + if params.options.quiet > 1: + continue if not parseprogress: continue parseprogress.finish() pasreprogress = None - if not params.options.quiet: + if params.options.quiet == 0: print(("Parsing of %d .bb files complete (%d cached, %d parsed). %d targets, %d skipped, %d masked, %d errors." % ( event.total, event.cached, event.parsed, event.virtuals, event.skipped, event.masked, event.errors))) continue if isinstance(event, bb.event.CacheLoadStarted): + if params.options.quiet > 1: + continue cacheprogress = new_progress("Loading cache", event.total).start() continue if isinstance(event, bb.event.CacheLoadProgress): + if params.options.quiet > 1: + continue cacheprogress.update(event.current) continue if isinstance(event, bb.event.CacheLoadCompleted): + if params.options.quiet > 1: + continue cacheprogress.finish() - if not params.options.quiet: + if params.options.quiet == 0: print("Loaded %d entries from dependency cache." % event.num_entries) continue @@ -620,16 +635,22 @@ def main(server, eventHandler, params, tf = TerminalFilter): continue if isinstance(event, bb.event.ProcessStarted): + if params.options.quiet > 1: + continue parseprogress = new_progress(event.processname, event.total) parseprogress.start(False) continue if isinstance(event, bb.event.ProcessProgress): + if params.options.quiet > 1: + continue if parseprogress: parseprogress.update(event.progress) else: bb.warn("Got ProcessProgress event for someting that never started?") continue if isinstance(event, bb.event.ProcessFinished): + if params.options.quiet > 1: + continue if parseprogress: parseprogress.finish() parseprogress = None @@ -701,7 +722,7 @@ def main(server, eventHandler, params, tf = TerminalFilter): if return_value and errors: summary += pluralise("\nSummary: There was %s ERROR message shown, returning a non-zero exit code.", "\nSummary: There were %s ERROR messages shown, returning a non-zero exit code.", errors) - if summary and not params.options.quiet: + if summary and params.options.quiet == 0: print(summary) if interrupted: -- cgit 1.2.3-korg