]> git.ipfire.org Git - thirdparty/patchwork.git/commitdiff
parser: Add patch_get_filenames()
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Sat, 28 Nov 2015 12:14:38 +0000 (10:14 -0200)
committerStephen Finucane <stephen.finucane@intel.com>
Tue, 19 Jan 2016 21:22:20 +0000 (21:22 +0000)
The function returns the list of files touched by a patch, after
stripping the leading component of the path name.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
Acked-by: Stephen Finucane <stephen.finucane@intel.com>
patchwork/parser.py

index 453b6e85a1251b4f9ddf5ce1d6d398d17a21690e..1993087abdebb38592cd398fcfc707e7e770149c 100644 (file)
@@ -246,6 +246,35 @@ def extract_tags(content, tags):
     return counts
 
 
+def patch_get_filenames(str):
+    # normalise spaces
+    str = str.replace('\r', '')
+    str = str.strip() + '\n'
+
+    filenames = {}
+
+    for line in str.split('\n'):
+
+        if len(line) <= 0:
+            continue
+
+        filename_match = _filename_re.match(line)
+        if not filename_match:
+            continue
+
+        filename = filename_match.group(2)
+        if filename.startswith('/dev/null'):
+            continue
+
+        filename = '/'.join(filename.split('/')[1:])
+        filenames[filename] = True
+
+    filenames = filenames.keys()
+    filenames.sort()
+
+    return filenames
+
+
 def main(args):
     from optparse import OptionParser
 
@@ -256,6 +285,8 @@ def main(args):
                       dest='print_comment', help='print parsed comment')
     parser.add_option('-#', '--hash', action='store_true',
                       dest='print_hash', help='print patch hash')
+    parser.add_option('-f', '--filenames', action='store_true',
+                      dest='print_filenames', help='print file names')
 
     (options, args) = parser.parse_args()
 
@@ -273,6 +304,10 @@ def main(args):
     if options.print_comment and comment:
         print("Comment: ----\n" + comment)
 
+    if options.print_filenames:
+        filenames = patch_get_filenames(content)
+        print("File names: ----\n" + '\n'.join(filenames))
+
 if __name__ == '__main__':
     import sys
     sys.exit(main(sys.argv))