diff options
author | Chris Larson <chris_larson@mentor.com> | 2010-12-06 21:06:13 -0700 |
---|---|---|
committer | Richard Purdie <rpurdie@linux.intel.com> | 2011-01-04 14:46:46 +0000 |
commit | 7ffd6f88b8b08e02665a3b29760e58c080322b44 (patch) | |
tree | e6abf2700e7cf5041763834d4e387c9d5f93120f /bitbake/lib/bb | |
parent | 7ea3c969386f10a37bd713326060e9bb4dbc1f1e (diff) | |
download | openembedded-core-7ffd6f88b8b08e02665a3b29760e58c080322b44.tar.gz openembedded-core-7ffd6f88b8b08e02665a3b29760e58c080322b44.tar.bz2 openembedded-core-7ffd6f88b8b08e02665a3b29760e58c080322b44.tar.xz openembedded-core-7ffd6f88b8b08e02665a3b29760e58c080322b44.zip |
knotty: shift non-interactive progress into a class
(Bitbake rev: c3d005cbbae3d56da9926666cfb1501c2bf96ea7)
Signed-off-by: Chris Larson <chris_larson@mentor.com>
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
Diffstat (limited to 'bitbake/lib/bb')
-rw-r--r-- | bitbake/lib/bb/ui/knotty.py | 48 |
1 files changed, 33 insertions, 15 deletions
diff --git a/bitbake/lib/bb/ui/knotty.py b/bitbake/lib/bb/ui/knotty.py index 0c0cdf1fe..00be2f844 100644 --- a/bitbake/lib/bb/ui/knotty.py +++ b/bitbake/lib/bb/ui/knotty.py @@ -30,8 +30,32 @@ from bb import ui from bb.ui import uihelper logger = logging.getLogger("BitBake") -widgets = ['Parsing recipes: ', progressbar.Percentage(), ' ', - progressbar.Bar(), ' ', progressbar.ETA()] +widgets = [progressbar.Percentage(), ' ', progressbar.Bar(), ' ', + progressbar.ETA()] + +class BBProgress(progressbar.ProgressBar): + def __init__(self, msg, maxval): + self.msg = msg + progressbar.ProgressBar.__init__(self, maxval, [self.msg + ": "] + widgets) + +class NonInteractiveProgress(object): + fobj = sys.stdout + + def __init__(self, msg, maxval): + self.msg = msg + self.maxval = maxval + + def start(self): + self.fobj.write("%s..." % self.msg) + self.fobj.flush() + return self + + def update(self, value): + pass + + def finish(self): + self.fobj.write("done.\n") + self.fobj.flush() class BBLogFormatter(logging.Formatter): """Formatter which ensures that our 'plain' messages (logging.INFO + 1) are used as is""" @@ -77,7 +101,7 @@ def init(server, eventHandler): print("XMLRPC Fault getting commandline:\n %s" % x) return 1 - pbar = None + parseprogress = None interactive = os.isatty(sys.stdout.fileno()) shutdown = 0 return_value = 0 @@ -135,23 +159,17 @@ def init(server, eventHandler): continue if isinstance(event, bb.event.ParseStarted): if interactive: - pbar = progressbar.ProgressBar(widgets=widgets, - maxval=event.total).start() + progress = BBProgress else: - sys.stdout.write("Parsing recipes...") - sys.stdout.flush() + progress = NonInteractiveProgress + parseprogress = progress("Parsing recipes", event.total).start() continue if isinstance(event, bb.event.ParseProgress): - if interactive: - pbar.update(event.current) + parseprogress.update(event.current) continue if isinstance(event, bb.event.ParseCompleted): - if interactive: - pbar.update(pbar.maxval) - else: - sys.stdout.write("done.\n") - sys.stdout.flush() - print(("\nParsing of %d .bb files complete (%d cached, %d parsed). %d targets, %d skipped, %d masked, %d errors." + parseprogress.finish() + 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 |