From fd130ef21b7e52d0442ccbb26825dea300a8a70e Mon Sep 17 00:00:00 2001 From: Laurent Pinchart Date: Mon, 5 Aug 2024 20:36:42 +0300 Subject: utils: checkstyle.py: Add author property to Commit class Extend the Commit class with an author property, retrieved from the commit. It will be used to extend checkers. While at it, drop the unneeded .strip() call when retrieving the title for amendment commits. The call got carried over from code that initially needed it to strip the new line character, but that need disappeard with usage of .splitlines(). Signed-off-by: Laurent Pinchart Reviewed-by: Stefan Klug Reviewed-by: Kieran Bingham --- utils/checkstyle.py | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) (limited to 'utils') diff --git a/utils/checkstyle.py b/utils/checkstyle.py index 7d480bdf..e8451846 100755 --- a/utils/checkstyle.py +++ b/utils/checkstyle.py @@ -212,11 +212,12 @@ class CommitFile: class Commit: def __init__(self, commit): self.commit = commit + self._author = None self._trailers = [] self._parse() def _parse_trailers(self, lines): - for index in range(1, len(lines)): + for index in range(2, len(lines)): line = lines[index] if not line: break @@ -227,12 +228,13 @@ class Commit: def _parse(self): # Get the commit title and list of files. - ret = subprocess.run(['git', 'show', '--format=%s%n%(trailers:only,unfold)', '--name-status', - self.commit], + ret = subprocess.run(['git', 'show', '--format=%an <%ae>%n%s%n%(trailers:only,unfold)', + '--name-status', self.commit], stdout=subprocess.PIPE).stdout.decode('utf-8') lines = ret.splitlines() - self._title = lines[0] + self._author = lines[0] + self._title = lines[1] index = self._parse_trailers(lines) self._files = [CommitFile(f) for f in lines[index:] if f] @@ -240,6 +242,10 @@ class Commit: def files(self, filter='AMR'): return [f.filename for f in self._files if f.status in filter] + @property + def author(self): + return self._author + @property def title(self): return self._title @@ -282,12 +288,13 @@ class Amendment(Commit): def _parse(self): # Create a title using HEAD commit and parse the trailers. - ret = subprocess.run(['git', 'show', '--format=%H %s%n%(trailers:only,unfold)', + ret = subprocess.run(['git', 'show', '--format=%an <%ae>%n%H %s%n%(trailers:only,unfold)', '--no-patch'], stdout=subprocess.PIPE).stdout.decode('utf-8') lines = ret.splitlines() - self._title = 'Amendment of ' + lines[0].strip() + self._author = lines[0] + self._title = 'Amendment of ' + lines[1] self._parse_trailers(lines) -- cgit v1.2.1