From fbb95a43421eb925985223fffa3febc12e5dbe33 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Tue, 23 Feb 2021 17:34:35 -0500 Subject: progress/sync: include active number of jobs Provide a bit more info to users that things are actively running. Bug: https://crbug.com/gerrit/11293 Change-Id: Ie8eeaa8804d1ca71cf5c78ad850fa2d17d26208c Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/297904 Reviewed-by: Michael Mortensen Tested-by: Mike Frysinger --- progress.py | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'progress.py') diff --git a/progress.py b/progress.py index 3764b9e2..d19fc5b1 100644 --- a/progress.py +++ b/progress.py @@ -34,6 +34,19 @@ class Progress(object): self._show = False self._units = units self._print_newline = print_newline + # Only show the active jobs section if we run more than one in parallel. + self._show_jobs = False + self._active = 0 + + def start(self, name): + self._active += 1 + if not self._show_jobs: + self._show_jobs = self._active > 1 + self.update(inc=0, msg='started ' + name) + + def finish(self, name): + self.update(msg='finished ' + name) + self._active -= 1 def update(self, inc=1, msg=''): self._done += inc @@ -55,10 +68,15 @@ class Progress(object): sys.stderr.flush() else: p = (100 * self._done) / self._total - sys.stderr.write('%s\r%s: %3d%% (%d%s/%d%s)%s%s%s' % ( + if self._show_jobs: + jobs = '[%d job%s] ' % (self._active, 's' if self._active > 1 else '') + else: + jobs = '' + sys.stderr.write('%s\r%s: %2d%% %s(%d%s/%d%s)%s%s%s' % ( CSI_ERASE_LINE, self._title, p, + jobs, self._done, self._units, self._total, self._units, ' ' if msg else '', msg, -- cgit v1.2.3-54-g00ecf