diff --git a/gclient.py b/gclient.py index 8dcb93b6a..7a13a5d52 100755 --- a/gclient.py +++ b/gclient.py @@ -1052,7 +1052,7 @@ solutions = [ 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 @@ def Main(argv): 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 7003fc886..44dba57df 100644 --- a/gclient_utils.py +++ b/gclient_utils.py @@ -27,6 +27,9 @@ RETRY_MAX = 3 RETRY_INITIAL_SLEEP = 0.5 +_WARNINGS = [] + + class Error(Exception): """gclient exception class.""" def __init__(self, msg, *args, **kwargs): @@ -36,6 +39,19 @@ class Error(Exception): 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:'):