[gitdm PATCH] reports.py: Add very basic rST output

Tom Rini trini at konsulko.com
Tue Jul 12 14:11:16 CEST 2022


Add a -R option to gitdm to allow for reStructuredText output and add
some very simple table generation.  We assume that whatever uses this
output will take care of adding a header, so we only concern ourselves
with making tables.  Given the longest section title is 58 characters,
we use 60 as the magic number to write/pad all of our first columns to,
and use "Amount" for the second column.

Signed-off-by: Tom Rini <trini at konsulko.com>
---
 gitdm      |  5 ++++-
 reports.py | 14 ++++++++++++++
 2 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/gitdm b/gitdm
index b837f0aafe27..3568d08f55af 100755
--- a/gitdm
+++ b/gitdm
@@ -59,6 +59,7 @@ FileReport = None
 # -D		Output date statistics
 # -f file	Write touched-files report to <file>
 # -h hfile	HTML output to hfile
+# -R rfile      reStructuredText output to rfile
 # -H file   Export individual developer raw data as CSV
 # -l count	Maximum length for output lists
 # -n        Use numstats instead of generated patch from git log
@@ -80,7 +81,7 @@ def ParseOpts():
     global ReportByFileType, ReportUnknowns, CompanyFilter, FileReport
     global HackersCSV
 
-    opts, rest = getopt.getopt(sys.argv[1:], 'ab:dC:c:Df:H:h:l:no:p:r:stUuwx:yz')
+    opts, rest = getopt.getopt(sys.argv[1:], 'ab:dC:c:Df:H:h:l:no:p:r:R:stUuwx:yz')
     for opt in opts:
         if opt[0] == '-a':
             AkpmOverLt = 1
@@ -111,6 +112,8 @@ def ParseOpts():
         elif opt[0] == '-r':
             print('Filter on "%s"' % (opt[1]))
             FileFilter = re.compile(opt[1])
+        elif opt[0] == '-R':
+            reports.SetrSTOutput(open(opt[1], 'w'))
         elif opt[0] == '-s':
             AuthorSOBs = 0
         elif opt[0] == '-t':
diff --git a/reports.py b/reports.py
index 39c237bdae00..3ed21f29c6ac 100644
--- a/reports.py
+++ b/reports.py
@@ -14,6 +14,7 @@ import sys
 
 Outfile = sys.stdout
 HTMLfile = None
+rSTfile = None
 ListCount = 999999
 
 
@@ -25,6 +26,10 @@ def SetHTMLOutput(file):
     global HTMLfile
     HTMLfile = file
 
+def SetrSTOutput(file):
+    global rSTfile
+    rSTfile = file
+
 def SetMaxList(max):
     global ListCount
     ListCount = max
@@ -44,6 +49,9 @@ def BeginReport(title):
     Outfile.write('\n%s\n' % title)
     if HTMLfile:
         HTMLfile.write(THead % title)
+    if rSTfile:
+        rSTfile.write('%s %s\n%-60s %s\n%s %s\n' %
+                ('=' * 60, '======', title, 'Amount', '=' * 60, '======'))
 
 TRow = ' <tr><td>%s</td><td align="right">%d</td><td align="right">%.1f%%</td></tr>\n'
 TRowStr = ' <tr><td>%s</td><td align="right">%d</td><td>%s</td></tr>\n'
@@ -54,6 +62,8 @@ def ReportLine(text, count, pct):
     Outfile.write ('%-25s %4d (%.1f%%)\n' % (text, count, pct))
     if HTMLfile:
         HTMLfile.write(TRow % (text, count, pct))
+    if rSTfile:
+        rSTfile.write("%-60s %4d (%.1f%%)\n" % (text.strip(), count, pct))
 
 def ReportLineStr(text, count, extra):
     if count == 0:
@@ -61,10 +71,14 @@ def ReportLineStr(text, count, extra):
     Outfile.write ('%-25s %4d %s\n' % (text, count, extra))
     if HTMLfile:
         HTMLfile.write(TRowStr % (text, count, extra))
+    if rSTfile:
+        rSTfile.write('* %s with %d %s\n' % (text, count, extra))
 
 def EndReport():
     if HTMLfile:
         HTMLfile.write('</table>\n\n')
+    if rSTfile:
+        rSTfile.write('%s ======\n\n' % ('=' * 60))
         
 #
 # Comparison and report generation functions.
-- 
2.25.1



More information about the U-Boot mailing list