From 68194f42b0b0e59f206b8e997c26f6a16b74fd4f Mon Sep 17 00:00:00 2001 From: "Shawn O. Pearce" Date: Fri, 10 Apr 2009 16:48:52 -0700 Subject: Add a project progress meter to 'repo sync' This way users can see how much is left during fetch. Its especially useful when most syncs are no-ops but there are hundreds of repositories to poll. Signed-off-by: Shawn O. Pearce --- progress.py | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 progress.py (limited to 'progress.py') diff --git a/progress.py b/progress.py new file mode 100644 index 00000000..89d6c5ba --- /dev/null +++ b/progress.py @@ -0,0 +1,45 @@ +# +# Copyright (C) 2009 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import sys + +class Progress(object): + def __init__(self, title, total): + self._title = title + self._total = total + self._done = 0 + self._lastp = -1 + + def update(self, inc=1): + self._done += inc + p = (100 * self._done) / self._total + + if self._lastp != p: + self._lastp = p + sys.stderr.write('\r%s: %3d%% (%d/%d) ' % ( + self._title, + p, + self._done, + self._total)) + sys.stderr.flush() + + def end(self): + p = (100 * self._done) / self._total + sys.stderr.write('\r%s: %3d%% (%d/%d), done. \n' % ( + self._title, + p, + self._done, + self._total)) + sys.stderr.flush() -- cgit v1.2.3-54-g00ecf