blob: 685c794641034b6df1a7d041b788ac480845ba53 [file] [log] [blame]
# Copyright 2019 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import json
DEPS = [
'dart',
'depot_tools/git',
'depot_tools/gitiles',
'recipe_engine/buildbucket',
'recipe_engine/context',
'recipe_engine/file',
'recipe_engine/json',
'recipe_engine/path',
'recipe_engine/properties',
]
COMMITS_JSON = 'commits.json'
def RunSteps(api):
repo = api.properties['repo']
assert(repo)
commit = api.buildbucket.gitiles_commit
assert(commit)
commit_hash = commit.id
url = 'https://%s/%s' % (commit.host, commit.project)
commit_log = api.gitiles.commit_log(url, commit_hash)
commit_url = '%s/+/%s' % (url, commit_hash)
message = commit_log['message']
message = '%s\n%s\n' % (message, commit_url)
commit_author = commit_log['author']
author = '%s <%s>' % (commit_author['name'], commit_author['email'])
author_date = commit_author['time']
api.git.checkout(repo, dir_path=api.path['cleanup'], use_git_cache=True)
with api.context(cwd=api.path['checkout']):
json_path = api.path['checkout'].join(COMMITS_JSON)
commits = {}
if api.path.exists(json_path):
result = api.json.read('read old commits', json_path,
step_test_data=lambda: api.json.test_api.output({
'another_repo': 'deadbeef'
})).json
commits = result.output
commits[commit.project] = commit_hash
pretty_json = json.dumps(commits, indent=2, separators=(',', ':'),
sort_keys=True)
api.file.write_text('update commits', json_path, pretty_json)
api.git('add', json_path)
api.git('commit', '--author=%s' % author, '--date=%s' % author_date,
'-m', message)
api.git('push', repo, 'HEAD:refs/heads/master')
def GenTests(api):
yield (api.test('base') +
api.properties.generic(
repo = 'https://dart.googlesource.com/a/linearized_history.git') +
api.buildbucket.ci_build(
git_repo = 'https://dart.googlesource.com/a/repo.git',
revision = 'deadbeef') +
api.step_data(
'commit log: %s' % 'deadbeef',
api.gitiles.make_commit_test_data('deadbeef', 'Subject\n\nMessage\n',
new_files=['foo/bar', 'baz/qux'])) +
api.path.exists(
api.path['checkout'].join(COMMITS_JSON)))