1*0d24de9dSSimon Glass# Copyright (c) 2011 The Chromium OS Authors. 2*0d24de9dSSimon Glass# 3*0d24de9dSSimon Glass# See file CREDITS for list of people who contributed to this 4*0d24de9dSSimon Glass# project. 5*0d24de9dSSimon Glass# 6*0d24de9dSSimon Glass# This program is free software; you can redistribute it and/or 7*0d24de9dSSimon Glass# modify it under the terms of the GNU General Public License as 8*0d24de9dSSimon Glass# published by the Free Software Foundation; either version 2 of 9*0d24de9dSSimon Glass# the License, or (at your option) any later version. 10*0d24de9dSSimon Glass# 11*0d24de9dSSimon Glass# This program is distributed in the hope that it will be useful, 12*0d24de9dSSimon Glass# but WITHOUT ANY WARRANTY; without even the implied warranty of 13*0d24de9dSSimon Glass# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14*0d24de9dSSimon Glass# GNU General Public License for more details. 15*0d24de9dSSimon Glass# 16*0d24de9dSSimon Glass# You should have received a copy of the GNU General Public License 17*0d24de9dSSimon Glass# along with this program; if not, write to the Free Software 18*0d24de9dSSimon Glass# Foundation, Inc., 59 Temple Place, Suite 330, Boston, 19*0d24de9dSSimon Glass# MA 02111-1307 USA 20*0d24de9dSSimon Glass# 21*0d24de9dSSimon Glass 22*0d24de9dSSimon Glassimport re 23*0d24de9dSSimon Glass 24*0d24de9dSSimon Glass# Separates a tag: at the beginning of the subject from the rest of it 25*0d24de9dSSimon Glassre_subject_tag = re.compile('([^:]*):\s*(.*)') 26*0d24de9dSSimon Glass 27*0d24de9dSSimon Glassclass Commit: 28*0d24de9dSSimon Glass """Holds information about a single commit/patch in the series. 29*0d24de9dSSimon Glass 30*0d24de9dSSimon Glass Args: 31*0d24de9dSSimon Glass hash: Commit hash (as a string) 32*0d24de9dSSimon Glass 33*0d24de9dSSimon Glass Variables: 34*0d24de9dSSimon Glass hash: Commit hash 35*0d24de9dSSimon Glass subject: Subject line 36*0d24de9dSSimon Glass tags: List of maintainer tag strings 37*0d24de9dSSimon Glass changes: Dict containing a list of changes (single line strings). 38*0d24de9dSSimon Glass The dict is indexed by change version (an integer) 39*0d24de9dSSimon Glass cc_list: List of people to aliases/emails to cc on this commit 40*0d24de9dSSimon Glass """ 41*0d24de9dSSimon Glass def __init__(self, hash): 42*0d24de9dSSimon Glass self.hash = hash 43*0d24de9dSSimon Glass self.subject = None 44*0d24de9dSSimon Glass self.tags = [] 45*0d24de9dSSimon Glass self.changes = {} 46*0d24de9dSSimon Glass self.cc_list = [] 47*0d24de9dSSimon Glass 48*0d24de9dSSimon Glass def AddChange(self, version, info): 49*0d24de9dSSimon Glass """Add a new change line to the change list for a version. 50*0d24de9dSSimon Glass 51*0d24de9dSSimon Glass Args: 52*0d24de9dSSimon Glass version: Patch set version (integer: 1, 2, 3) 53*0d24de9dSSimon Glass info: Description of change in this version 54*0d24de9dSSimon Glass """ 55*0d24de9dSSimon Glass if not self.changes.get(version): 56*0d24de9dSSimon Glass self.changes[version] = [] 57*0d24de9dSSimon Glass self.changes[version].append(info) 58*0d24de9dSSimon Glass 59*0d24de9dSSimon Glass def CheckTags(self): 60*0d24de9dSSimon Glass """Create a list of subject tags in the commit 61*0d24de9dSSimon Glass 62*0d24de9dSSimon Glass Subject tags look like this: 63*0d24de9dSSimon Glass 64*0d24de9dSSimon Glass propounder: Change the widget to propound correctly 65*0d24de9dSSimon Glass 66*0d24de9dSSimon Glass Multiple tags are supported. The list is updated in self.tag 67*0d24de9dSSimon Glass 68*0d24de9dSSimon Glass Returns: 69*0d24de9dSSimon Glass None if ok, else the name of a tag with no email alias 70*0d24de9dSSimon Glass """ 71*0d24de9dSSimon Glass str = self.subject 72*0d24de9dSSimon Glass m = True 73*0d24de9dSSimon Glass while m: 74*0d24de9dSSimon Glass m = re_subject_tag.match(str) 75*0d24de9dSSimon Glass if m: 76*0d24de9dSSimon Glass tag = m.group(1) 77*0d24de9dSSimon Glass self.tags.append(tag) 78*0d24de9dSSimon Glass str = m.group(2) 79*0d24de9dSSimon Glass return None 80*0d24de9dSSimon Glass 81*0d24de9dSSimon Glass def AddCc(self, cc_list): 82*0d24de9dSSimon Glass """Add a list of people to Cc when we send this patch. 83*0d24de9dSSimon Glass 84*0d24de9dSSimon Glass Args: 85*0d24de9dSSimon Glass cc_list: List of aliases or email addresses 86*0d24de9dSSimon Glass """ 87*0d24de9dSSimon Glass self.cc_list += cc_list 88