bin/try: add support for internal bots

Bug: skia:
Change-Id: Iae6b2dc1098c9763ceec0289129818e1948a974c
Reviewed-on: https://skia-review.googlesource.com/60543
Reviewed-by: Ravi Mistry <rmistry@google.com>
Commit-Queue: Eric Boren <borenet@google.com>
diff --git a/bin/try.py b/bin/try.py
index 24a0c25..ec1f891 100755
--- a/bin/try.py
+++ b/bin/try.py
@@ -15,17 +15,39 @@
 import re
 import subprocess
 import sys
+import tempfile
 
 
 BUCKET_SKIA_PRIMARY = 'skia.primary'
+BUCKET_SKIA_INTERNAL = 'skia.internal'
 CHECKOUT_ROOT = os.path.realpath(os.path.join(
     os.path.dirname(os.path.abspath(__file__)), os.pardir))
 INFRA_BOTS = os.path.join(CHECKOUT_ROOT, 'infra', 'bots')
 JOBS_JSON = os.path.join(INFRA_BOTS, 'jobs.json')
+REPO_INTERNAL = 'https://skia.googlesource.com/internal_test.git'
+TMP_DIR = os.path.join(tempfile.gettempdir(), 'sktry')
 
 sys.path.insert(0, INFRA_BOTS)
 
 import update_meta_config
+import utils
+
+
+def get_jobs(repo):
+  """Obtain the list of jobs from the given repo."""
+  # Maintain a copy of the repo in the temp dir.
+  if not os.path.isdir(TMP_DIR):
+    os.mkdir(TMP_DIR)
+  with utils.chdir(TMP_DIR):
+    dirname = repo.split('/')[-1]
+    if not os.path.isdir(dirname):
+      subprocess.check_call([
+          utils.GIT, 'clone', '--mirror', repo, dirname])
+    with utils.chdir(dirname):
+      subprocess.check_call([utils.GIT, 'remote', 'update'])
+      jobs = json.loads(subprocess.check_output([
+          utils.GIT, 'show', 'master:infra/bots/jobs.json']))
+      return (BUCKET_SKIA_INTERNAL, jobs)
 
 
 def main():
@@ -34,14 +56,19 @@
   parser = argparse.ArgumentParser(description=d)
   parser.add_argument('--list', action='store_true', default=False,
                       help='Just list the jobs; do not trigger anything.')
+  parser.add_argument('--internal', action='store_true', default=False,
+                      help=('If set, include internal jobs. You must have '
+                            'permission to view internal repos.'))
   parser.add_argument('job', nargs='?', default=None,
                       help='Job name or regular expression to match job names.')
   args = parser.parse_args()
 
-  # Load and filter the list of Skia jobs.
+  # Load and filter the list of jobs.
   jobs = []
   with open(JOBS_JSON) as f:
     jobs.append((BUCKET_SKIA_PRIMARY, json.load(f)))
+  if args.internal:
+    jobs.append(get_jobs(REPO_INTERNAL))
   jobs.extend(update_meta_config.CQ_INCLUDE_CHROMIUM_TRYBOTS)
   if args.job:
     new_jobs = []