bin/try: Add support for select Chromium trybots

These are hard-coded in update_meta_config.py, which is used to set the
list of trybots in Gerrit.

Bug: skia:
Change-Id: I6e512e4cb59974e27e8954cf5134c70068e716f3
Reviewed-on: https://skia-review.googlesource.com/60521
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 a5dc378..24a0c25 100755
--- a/bin/try.py
+++ b/bin/try.py
@@ -17,10 +17,15 @@
 import sys
 
 
-BUCKET = 'skia.primary'
+BUCKET_SKIA_PRIMARY = 'skia.primary'
 CHECKOUT_ROOT = os.path.realpath(os.path.join(
     os.path.dirname(os.path.abspath(__file__)), os.pardir))
-JOBS_JSON = os.path.join(CHECKOUT_ROOT, 'infra', 'bots', 'jobs.json')
+INFRA_BOTS = os.path.join(CHECKOUT_ROOT, 'infra', 'bots')
+JOBS_JSON = os.path.join(INFRA_BOTS, 'jobs.json')
+
+sys.path.insert(0, INFRA_BOTS)
+
+import update_meta_config
 
 
 def main():
@@ -33,19 +38,31 @@
                       help='Job name or regular expression to match job names.')
   args = parser.parse_args()
 
-  # Load and filter the list of jobs.
+  # Load and filter the list of Skia jobs.
+  jobs = []
   with open(JOBS_JSON) as f:
-    jobs = json.load(f)
+    jobs.append((BUCKET_SKIA_PRIMARY, json.load(f)))
+  jobs.extend(update_meta_config.CQ_INCLUDE_CHROMIUM_TRYBOTS)
   if args.job:
-    jobs = [j for j in jobs if re.search(args.job, j)]
+    new_jobs = []
+    for bucket, job_list in jobs:
+      filtered = [j for j in job_list if re.search(args.job, j)]
+      if len(filtered) > 0:
+        new_jobs.append((bucket, filtered))
+    jobs = new_jobs
 
   # Display the list of jobs.
   if len(jobs) == 0:
     print 'Found no jobs matching "%s"' % repr(args.job)
     sys.exit(1)
-  print 'Found %d jobs:' % len(jobs)
-  for j in jobs:
-    print '  %s' % j
+  count = 0
+  for bucket, job_list in jobs:
+    count += len(job_list)
+  print 'Found %d jobs:' % count
+  for bucket, job_list in jobs:
+    print '  %s:' % bucket
+    for j in job_list:
+      print '    %s' % j
   if args.list:
     return
 
@@ -55,15 +72,16 @@
     sys.exit(1)
 
   # Trigger the try jobs.
-  cmd = ['git', 'cl', 'try', '-B', BUCKET]
-  for j in jobs:
-    cmd.extend(['-b', j])
-  try:
-    subprocess.check_call(cmd)
-  except subprocess.CalledProcessError:
-    # Output from the command will fall through, so just exit here rather than
-    # printing a stack trace.
-    sys.exit(1)
+  for bucket, job_list in jobs:
+    cmd = ['git', 'cl', 'try', '-B', bucket]
+    for j in job_list:
+      cmd.extend(['-b', j])
+    try:
+      subprocess.check_call(cmd)
+    except subprocess.CalledProcessError:
+      # Output from the command will fall through, so just exit here rather than
+      # printing a stack trace.
+      sys.exit(1)
 
 
 if __name__ == '__main__':
diff --git a/infra/bots/update_meta_config.py b/infra/bots/update_meta_config.py
index 3a10d52..12ac26f 100644
--- a/infra/bots/update_meta_config.py
+++ b/infra/bots/update_meta_config.py
@@ -63,8 +63,14 @@
       f.write('\tbuilder = %s\n' % bot)
 
 
-def main(gitcookies, repo_name, tasks_json):
-  skia_repo = SKIA_REPO_TEMPLATE % repo_name
+def main():
+  parser = argparse.ArgumentParser()
+  parser.add_argument("--gitcookies")
+  parser.add_argument("--repo_name")
+  parser.add_argument("--tasks_json")
+  args = parser.parse_args()
+
+  skia_repo = SKIA_REPO_TEMPLATE % args.repo_name
   with git_utils.NewGitCheckout(repository=skia_repo):
     # Fetch and checkout the meta/config branch.
     subprocess.check_call(['git', 'fetch', skia_repo, 'refs/meta/config:cfg'])
@@ -72,7 +78,7 @@
 
     # Create list of tryjobs from tasks_json.
     tryjobs = []
-    with open(tasks_json) as tasks_json:
+    with open(args.tasks_json) as tasks_json:
       data = json.load(tasks_json)
       for job in data['jobs'].keys():
         if not job.startswith('Upload-'):
@@ -83,7 +89,7 @@
     buildbucket_config = os.path.join(os.getcwd(), 'buildbucket.config')
     with open(buildbucket_config, 'w') as f:
 
-      if repo_name == 'skia':
+      if args.repo_name == 'skia':
         addChromiumTrybots(f)
 
       # Adding all Skia jobs.
@@ -95,7 +101,7 @@
     config_dict = {
       'user.name': SKIA_COMMITTER_NAME,
       'user.email': SKIA_COMMITTER_EMAIL,
-      'http.cookiefile': gitcookies,
+      'http.cookiefile': args.gitcookies,
     }
     with git_utils.GitLocalConfig(config_dict):
       subprocess.check_call(['git', 'add', 'buildbucket.config'])
@@ -110,9 +116,4 @@
 
 
 if '__main__' == __name__:
-  parser = argparse.ArgumentParser()
-  parser.add_argument("--gitcookies")
-  parser.add_argument("--repo_name")
-  parser.add_argument("--tasks_json")
-  args = parser.parse_args()
-  main(args.gitcookies, args.repo_name, args.tasks_json)
+  main()