diff options
author | Guido Günther <agx@sigxcpu.org> | 2011-11-15 19:30:03 +0100 |
---|---|---|
committer | Guido Günther <agx@sigxcpu.org> | 2011-11-20 14:24:24 +0100 |
commit | e7bbada49300f987ae129147fffe244d0d7a4cb6 (patch) | |
tree | 16c7ae029fc61c541eb21a2a2f2da37432ffedff /gbp/git/modifier.py | |
parent | 917a496fd8ffc7e857571ca747df01051ef12e35 (diff) |
Move GitModifier class to separate file
and introduce a new base exception for Git related errors.
Diffstat (limited to 'gbp/git/modifier.py')
-rw-r--r-- | gbp/git/modifier.py | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/gbp/git/modifier.py b/gbp/git/modifier.py new file mode 100644 index 00000000..c77bb4d1 --- /dev/null +++ b/gbp/git/modifier.py @@ -0,0 +1,78 @@ +# vim: set fileencoding=utf-8 : +# +# (C) 2011 Guido Guenther <agx@sigxcpu.org> +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +""" +Someone who modifiers something in git + +like committing changes or authoring a patch +""" + +from gbp.git.errors import GitError + + +class GitModifierError(GitError): + """Exception thrown by L{GitModifier}""" + pass + + +class GitModifier(object): + """Stores authorship/comitter information""" + def __init__(self, name=None, email=None, date=None): + self.name = name + self.email = email + self.date = date + + def _get_env(self, who): + """Get author or comitter information as env var dictionary""" + who = who.upper() + if who not in ['AUTHOR', 'COMMITTER']: + raise GitModifierError("Neither comitter nor author") + + extra_env = {} + if self.name: + extra_env['GIT_%s_NAME' % who] = self.name + if self.email: + extra_env['GIT_%s_EMAIL' % who] = self.email + if self.date: + extra_env['GIT_%s_DATE' % who] = self.date + return extra_env + + def get_author_env(self): + """ + Get env vars for authorship information + + >>> g = GitModifier("foo", "bar") + >>> g.get_author_env() + {'GIT_AUTHOR_EMAIL': 'bar', 'GIT_AUTHOR_NAME': 'foo'} + + @return: Author information suitable to use as environment variables + @rtype: C{dict} + """ + return self._get_env('author') + + def get_committer_env(self): + """ + Get env vars for comitter information + + >>> g = GitModifier("foo", "bar") + >>> g.get_committer_env() + {'GIT_COMMITTER_NAME': 'foo', 'GIT_COMMITTER_EMAIL': 'bar'} + + @return: Commiter information suitable to use as environment variables + @rtype: C{dict} + """ + return self._get_env('committer') + |