Add warning batching in gclient_utils
BUG=
Review URL: https://codereview.chromium.org/209393006
git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@258982 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/gclient.py b/gclient.py
index 8dcb93b..7a13a5d 100755
--- a/gclient.py
+++ b/gclient.py
@@ -1052,7 +1052,7 @@
scm = gclient_scm.CreateSCM(dep.url, self.root_dir, dep.name)
actual_url = scm.GetActualRemoteURL()
if actual_url and not scm.DoesRemoteURLMatch():
- print >> sys.stderr, ('''
+ gclient_utils.AddWarning('''
################################################################################
################################### WARNING! ###################################
################################################################################
@@ -1957,6 +1957,8 @@
except (gclient_utils.Error, subprocess2.CalledProcessError), e:
print >> sys.stderr, 'Error: %s' % str(e)
return 1
+ finally:
+ gclient_utils.PrintWarnings()
if '__main__' == __name__:
diff --git a/gclient_utils.py b/gclient_utils.py
index 7003fc8..44dba57 100644
--- a/gclient_utils.py
+++ b/gclient_utils.py
@@ -27,6 +27,9 @@
RETRY_INITIAL_SLEEP = 0.5
+_WARNINGS = []
+
+
class Error(Exception):
"""gclient exception class."""
def __init__(self, msg, *args, **kwargs):
@@ -36,6 +39,19 @@
super(Error, self).__init__(msg, *args, **kwargs)
+def PrintWarnings():
+ """Prints any accumulated warnings."""
+ if _WARNINGS:
+ print >> sys.stderr, '\n\nWarnings:'
+ for warning in _WARNINGS:
+ print >> sys.stderr, warning
+
+
+def AddWarning(msg):
+ """Adds the given warning message to the list of accumulated warnings."""
+ _WARNINGS.append(msg)
+
+
def SplitUrlRevision(url):
"""Splits url and returns a two-tuple: url, rev"""
if url.startswith('ssh:'):