Commit 1f7a3d1d authored by nasser@codeaurora.org's avatar nasser@codeaurora.org

Add progress indicator for sync

Review URL: http://codereview.chromium.org/564051

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@38104 0039d316-1c4b-4281-b951-d872f2087c98
parent ba551776
......@@ -72,6 +72,7 @@ import breakpad
import gclient_scm
import gclient_utils
from third_party.repo.progress import Progress
# default help text
DEFAULT_USAGE_TEXT = (
......@@ -684,7 +685,11 @@ class GClient(object):
deps_to_process.sort()
# First pass for direct dependencies.
if command == 'update' and not self._options.verbose:
pm = Progress('Syncing projects', len(deps_to_process))
for d in deps_to_process:
if command == 'update' and not self._options.verbose:
pm.update()
if type(deps[d]) == str:
url = deps[d]
entries[d] = url
......@@ -693,6 +698,8 @@ class GClient(object):
scm = gclient_scm.CreateSCM(url, self._root_dir, d)
scm.RunCommand(command, self._options, args, file_list)
self._options.revision = None
if command == 'update' and not self._options.verbose:
pm.end()
# Second pass for inherited deps (via the From keyword)
for d in deps_to_process:
......
This diff is collapsed.
Third party files from the repo tool.
See the project homepage at:
http://code.google.com/p/git-repo/
#
# 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
from time import time
class Progress(object):
def __init__(self, title, total=0):
self._title = title
self._total = total
self._done = 0
self._lastp = -1
self._start = time()
self._show = False
def update(self, inc=1):
self._done += inc
if not self._show:
if 0.5 <= time() - self._start:
self._show = True
else:
return
if self._total <= 0:
sys.stderr.write('\r%s: %d, ' % (
self._title,
self._done))
sys.stderr.flush()
else:
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):
if not self._show:
return
if self._total <= 0:
sys.stderr.write('\r%s: %d, done. \n' % (
self._title,
self._done))
sys.stderr.flush()
else:
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()
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment