summaryrefslogtreecommitdiffstats
path: root/progress.py
diff options
context:
space:
mode:
authorMike Frysinger <vapier@google.com>2021-02-23 17:34:35 -0500
committerMike Frysinger <vapier@google.com>2021-02-25 20:13:18 +0000
commitfbb95a43421eb925985223fffa3febc12e5dbe33 (patch)
tree176c095911f3cbaf57b82f621fb8702b240c0579 /progress.py
parent4e05f650e0b314fa80ea5811c0abe4b71ea0758c (diff)
downloadgit-repo-fbb95a43421eb925985223fffa3febc12e5dbe33.tar.gz
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 <mmortensen@google.com> Tested-by: Mike Frysinger <vapier@google.com>
Diffstat (limited to 'progress.py')
-rw-r--r--progress.py20
1 files changed, 19 insertions, 1 deletions
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):
34 self._show = False 34 self._show = False
35 self._units = units 35 self._units = units
36 self._print_newline = print_newline 36 self._print_newline = print_newline
37 # Only show the active jobs section if we run more than one in parallel.
38 self._show_jobs = False
39 self._active = 0
40
41 def start(self, name):
42 self._active += 1
43 if not self._show_jobs:
44 self._show_jobs = self._active > 1
45 self.update(inc=0, msg='started ' + name)
46
47 def finish(self, name):
48 self.update(msg='finished ' + name)
49 self._active -= 1
37 50
38 def update(self, inc=1, msg=''): 51 def update(self, inc=1, msg=''):
39 self._done += inc 52 self._done += inc
@@ -55,10 +68,15 @@ class Progress(object):
55 sys.stderr.flush() 68 sys.stderr.flush()
56 else: 69 else:
57 p = (100 * self._done) / self._total 70 p = (100 * self._done) / self._total
58 sys.stderr.write('%s\r%s: %3d%% (%d%s/%d%s)%s%s%s' % ( 71 if self._show_jobs:
72 jobs = '[%d job%s] ' % (self._active, 's' if self._active > 1 else '')
73 else:
74 jobs = ''
75 sys.stderr.write('%s\r%s: %2d%% %s(%d%s/%d%s)%s%s%s' % (
59 CSI_ERASE_LINE, 76 CSI_ERASE_LINE,
60 self._title, 77 self._title,
61 p, 78 p,
79 jobs,
62 self._done, self._units, 80 self._done, self._units,
63 self._total, self._units, 81 self._total, self._units,
64 ' ' if msg else '', msg, 82 ' ' if msg else '', msg,