1fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot# Copyright 2014 The Chromium Authors. All rights reserved.
2fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot# Use of this source code is governed by a BSD-style license that can be
3fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot# found in the LICENSE file.
4fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
5fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot"""Create a CL to update the SKP version."""
6fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
7fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
8fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotimport argparse
9fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotimport os
10fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotimport subprocess
11fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotimport sys
12fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotimport urllib2
13fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
14fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotimport git_utils
15fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
16fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team RobotSKIA_COMMITTER_EMAIL = 'update-skps@skia.org'
17fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team RobotSKIA_COMMITTER_NAME = 'UpdateSKPs'
18fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team RobotCOMMIT_MSG = '''Update SKP version
19fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
20fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team RobotAutomatic commit by the RecreateSKPs bot.
21fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
22fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team RobotTBR=%s
23fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team RobotNO_MERGE_BUILDS
24fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot''' % SKIA_COMMITTER_EMAIL
25fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team RobotSKIA_REPO = 'https://skia.googlesource.com/skia.git'
26fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
27fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
28fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotdef main(target_dir, gitcookies):
29fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot  with git_utils.NewGitCheckout(repository=SKIA_REPO):
30fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    # First verify that there are no gen_tasks diffs.
31fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    gen_tasks = os.path.join(os.getcwd(), 'infra', 'bots', 'gen_tasks.go')
32fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    try:
33fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot      subprocess.check_call(['go', 'run', gen_tasks, '--test'])
34fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    except subprocess.CalledProcessError as e:
35fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot      print >> sys.stderr, (
36fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot         'gen_tasks.go failed, not uploading SKP update:\n\n%s' % e.output)
37fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot      sys.exit(1)
38fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
39fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    # Skip GCE Auth in depot_tools/gerrit_utils.py. Use gitcookies instead.
40fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    os.environ['SKIP_GCE_AUTH_FOR_GIT'] = 'True'
41fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    os.environ['GIT_COOKIES_PATH'] = gitcookies
42fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    os.environ['USE_CIPD_GCE_AUTH'] = 'True'
43fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    # Upload the new version, land the update CL as the update-skps user.
44fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    config_dict = {
45fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot      'user.name': SKIA_COMMITTER_NAME,
46fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot      'user.email': SKIA_COMMITTER_EMAIL,
47fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot      'http.cookiefile': gitcookies,
48fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    }
49fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    with git_utils.GitLocalConfig(config_dict):
50fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot      with git_utils.GitBranch(branch_name='update_skp_version',
51fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot                               commit_msg=COMMIT_MSG,
52fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot                               commit_queue=True):
53fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot        upload_script = os.path.join(
54fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot            os.getcwd(), 'infra', 'bots', 'assets', 'skp', 'upload.py')
55fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot        subprocess.check_call(['python', upload_script, '-t', target_dir])
56fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot        subprocess.check_call(['go', 'run', gen_tasks])
57fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot        subprocess.check_call([
58fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot            'git', 'add', os.path.join('infra', 'bots', 'tasks.json')])
59fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
60fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
61fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotif '__main__' == __name__:
62fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot  parser = argparse.ArgumentParser()
63fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot  parser.add_argument("--target_dir")
64fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot  parser.add_argument("--gitcookies")
65fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot  args = parser.parse_args()
66fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot  main(args.target_dir, args.gitcookies)
67