blob: 0e9f3aad222eb525fc1045cb964f36001e20736e [file] [log] [blame]
# Copyright 2019 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Recipe for updating the code search super manifest project"""
from recipe_engine.recipe_api import Property
DEPS = [
'fuchsia/checkout',
'fuchsia/git',
'fuchsia/jiri',
'recipe_engine/buildbucket',
'recipe_engine/context',
'recipe_engine/file',
'recipe_engine/path',
'recipe_engine/step',
]
PROPERTIES = {
'manifest':
Property(kind=str, help='Jiri manifest to use.', default='flower'),
'project':
Property(
kind=str,
help='Jiri remote manifest project.',
default='integration'),
'remote':
Property(
kind=str,
help='Remote manifest repository.',
default='https://fuchsia.googlesource.com/integration'),
'super_manifest_project':
Property(
kind=str,
help='Super manifest project to update.',
default='https://fuchsia.googlesource.com/super')
}
GENERATE_SCRIPT = 'setup.sh'
def RunSteps(api, manifest, project, remote, super_manifest_project):
api.checkout.fuchsia_with_options(
build=api.buildbucket.build,
manifest=manifest,
project=project,
path=api.path['start_dir'],
remote=remote,
)
super_manifest_project_path = api.path['start_dir'].join('super')
api.file.ensure_directory('make dirs', super_manifest_project_path)
api.git.checkout(
url=super_manifest_project,
path=super_manifest_project_path,
submodules=False)
generate_script_path = super_manifest_project_path.join(GENERATE_SCRIPT)
with api.context(cwd=super_manifest_project_path):
# See https://fuchsia.googlesource.com/jiri/+/master/cmd/jiri/generate-gitmodules.go
# for details.
api.jiri('generate-gitmodules', '--redir-root', '--generate-script',
generate_script_path, '.gitmodules')
api.step('run %s' % GENERATE_SCRIPT, [generate_script_path])
api.file.remove('remove %s' % GENERATE_SCRIPT, generate_script_path)
# Add & Push updated submodules.
api.git('add', '.gitmodules')
# Only commit and push if we have a diff, otherwise commit fails.
if api.git('diff', '--cached', '--exit-code', ok_ret='any').retcode:
api.git.commit(message='Update submodules based on jiri manifest')
api.git('push', 'origin', 'HEAD:master')
def GenTests(api):
yield api.test('no_diff')
yield api.test('yes_diff') + api.step_data('git diff', retcode=1)