You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
depot_tools/recipe_modules/git_cl/api.py

42 lines
1.4 KiB
Python

# Copyright 2016 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.
from recipe_engine import recipe_api
class GitClApi(recipe_api.RecipeApi):
def __call__(self, subcmd, args, name=None, **kwargs):
if not name:
name = 'git_cl ' + subcmd
if kwargs.get('suffix'):
name = name + ' (%s)' % kwargs.pop('suffix')
if 'cwd' not in kwargs:
kwargs['cwd'] = (self.c and self.c.repo_location) or None
return self.m.step(
name, [self.package_repo_resource('git_cl.py'), subcmd] + args,
**kwargs)
def get_description(self, patch=None, codereview=None, **kwargs):
args = ['-d']
if patch or codereview:
assert patch and codereview, "Both patch and codereview must be provided"
args.append('--%s' % codereview)
args.append(patch)
return self('description', args, stdout=self.m.raw_io.output(), **kwargs)
def set_description(self, description, patch=None, codereview=None, **kwargs):
args = ['-n', '-']
if patch or codereview:
assert patch and codereview, "Both patch and codereview must be provided"
args.append(patch)
args.append('--%s' % codereview)
return self(
'description', args, stdout=self.m.raw_io.output(),
stdin=self.m.raw_io.input(data=description),
name='git_cl set description', **kwargs)