[v2,1/3] utils: checkstyle.py: Add author property to Commit class
diff mbox series

Message ID 20240807121516.13608-2-laurent.pinchart@ideasonboard.com
State Accepted
Headers show
Series
  • utils: checkstyle.py: Improve trailer validation
Related show

Commit Message

Laurent Pinchart Aug. 7, 2024, 12:15 p.m. UTC
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 <laurent.pinchart@ideasonboard.com>
Reviewed-by: Stefan Klug <stefan.klug@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
---
Changes since v1:

- Wrap long line
- Drop .strip()
- Initialize _author to None
---
 utils/checkstyle.py | 19 +++++++++++++------
 1 file changed, 13 insertions(+), 6 deletions(-)

Patch
diff mbox series

diff --git a/utils/checkstyle.py b/utils/checkstyle.py
index 7d480bdf4a2f..e8451846c0c2 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)