From 091f893625269fd12adadf7d1f60c21b4b83e779 Mon Sep 17 00:00:00 2001 From: Dave Borowitz Date: Tue, 23 Oct 2012 17:01:04 -0700 Subject: [PATCH] project: Support config args in git command callables Change-Id: I9d4d0d2b1aeebe41a6b24a339a154d258af665eb --- project.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/project.py b/project.py index 472b1d32..099d0b5a 100644 --- a/project.py +++ b/project.py @@ -1969,7 +1969,9 @@ class Project(object): Since we don't have a 'rev_parse' method defined, the __getattr__ will run. We'll replace the '_' with a '-' and try to run a git command. - Any other arguments will be passed to the git command. + Any other positional arguments will be passed to the git command, and the + following keyword arguments are supported: + config: An optional dict of git config options to be passed with '-c'. Args: name: The name of the git command to call. Any '_' characters will @@ -1979,8 +1981,17 @@ class Project(object): A callable object that will try to call git with the named command. """ name = name.replace('_', '-') - def runner(*args): - cmdv = [name] + def runner(*args, **kwargs): + cmdv = [] + config = kwargs.pop('config', None) + for k in kwargs: + raise TypeError('%s() got an unexpected keyword argument %r' + % (name, k)) + if config is not None: + for k, v in config.iteritems(): + cmdv.append('-c') + cmdv.append('%s=%s' % (k, v)) + cmdv.append(name) cmdv.extend(args) p = GitCommand(self._project, cmdv,