diff options
author | Mike Frysinger <vapier@google.com> | 2021-02-23 17:34:35 -0500 |
---|---|---|
committer | Mike Frysinger <vapier@google.com> | 2021-02-25 20:13:18 +0000 |
commit | fbb95a43421eb925985223fffa3febc12e5dbe33 (patch) | |
tree | 176c095911f3cbaf57b82f621fb8702b240c0579 /progress.py | |
parent | 4e05f650e0b314fa80ea5811c0abe4b71ea0758c (diff) | |
download | git-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.py | 20 |
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, |