Refactor nag functionality in to NagTimer class.

Add default 30 second nag timer to gclient subprocesses.

BUG=227537

Review URL: https://chromiumcodereview.appspot.com/14826003

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@198207 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/gclient_scm.py b/gclient_scm.py
index 26845b8..9ccc76f 100644
--- a/gclient_scm.py
+++ b/gclient_scm.py
@@ -116,6 +116,9 @@
 
   This is the abstraction layer to bind to different SCM.
   """
+  nag_timer = 30
+  nag_max = 3
+
   def __init__(self, url=None, root_dir=None, relpath=None):
     self.url = url
     self._root_dir = root_dir
@@ -195,6 +198,8 @@
     gclient_utils.CheckCallAndFilter(
         ['git', 'diff', merge_base],
         cwd=self.checkout_path,
+        nag_timer=self.nag_timer,
+        nag_max=self.nag_max,
         filter_fn=GitDiffFilterer(self.relpath).Filter)
 
   def UpdateSubmoduleConfig(self):
@@ -208,6 +213,8 @@
     cmd4 = ['git', 'config', 'fetch.recurseSubmodules', 'false']
     kwargs = {'cwd': self.checkout_path,
               'print_stdout': False,
+              'nag_timer': self.nag_timer,
+              'nag_max': self.nag_max,
               'filter_fn': lambda x: None}
     try:
       gclient_utils.CheckCallAndFilter(cmd, **kwargs)
@@ -852,6 +859,8 @@
     return subprocess2.check_output(
         ['git'] + args,
         stderr=subprocess2.PIPE,
+        nag_timer=self.nag_timer,
+        nag_max=self.nag_max,
         cwd=self.checkout_path).strip()
 
   def _UpdateBranchHeads(self, options, fetch=False):
@@ -879,6 +888,8 @@
   def _Run(self, args, options, **kwargs):
     kwargs.setdefault('cwd', self.checkout_path)
     kwargs.setdefault('print_stdout', True)
+    kwargs.setdefault('nag_timer', self.nag_timer)
+    kwargs.setdefault('nag_max', self.nag_max)
     stdout = kwargs.get('stdout', sys.stdout)
     stdout.write('\n________ running \'git %s\' in \'%s\'\n' % (
                  ' '.join(args), kwargs['cwd']))
@@ -928,6 +939,8 @@
         ['svn', 'diff', '-x', '--ignore-eol-style'] + args,
         cwd=self.checkout_path,
         print_stdout=False,
+        nag_timer=self.nag_timer,
+        nag_max=self.nag_max,
         filter_fn=SvnDiffFilterer(self.relpath).Filter)
 
   def update(self, options, args, file_list):
@@ -1225,6 +1238,8 @@
   def _Run(self, args, options, **kwargs):
     """Runs a commands that goes to stdout."""
     kwargs.setdefault('cwd', self.checkout_path)
+    kwargs.setdefault('nag_timer', self.nag_timer)
+    kwargs.setdefault('nag_max', self.nag_max)
     gclient_utils.CheckCallAndFilterAndHeader(['svn'] + args,
         always=options.verbose, **kwargs)