Scripts: add auto weekly change generator [1/1]
authorJiamin Ma <jiamin.ma@amlogic.com>
Mon, 13 May 2019 11:55:20 +0000 (19:55 +0800)
committerJiamin Ma <jiamin.ma@amlogic.com>
Tue, 14 May 2019 01:36:27 +0000 (09:36 +0800)
PD#SWPL-8487

Problem:
Manully generating weekly change is time wasting, we
need some helpers

Solution:
Add auto weekly change generator

Verify:
Locally pass

Change-Id: Ifafcd7d82eebcceaf45676056de4217260f18a5c
Signed-off-by: Jiamin Ma <jiamin.ma@amlogic.com>
MAINTAINERS
scripts/amlogic/weekly_change.py [new file with mode: 0755]

index 5d6b9982a85e5596626e5bb2e9117cc30019893c..0775fa6bfa3a6b72b650993279386279b68c47d0 100644 (file)
@@ -14920,3 +14920,7 @@ F:      arm64/boot/dts/amlogic/g12a_s905y2_u223_lp.dts
 AMLOGIC HYN_CST2XX TOUCHSCREEN
 M:     XINLIANG ZHANG <xinliang.zhang@amlogic.com>
 F:     drivers/amlogic/input/touchscreen/hyn_cst2xx/*
+
+AMLOGIC WEEKLY CHANGE GENERATOR
+M:     JIAMIN MA <jiamin.ma@amlogic.com>
+F:     scripts/amlogic/weekly_change.py
diff --git a/scripts/amlogic/weekly_change.py b/scripts/amlogic/weekly_change.py
new file mode 100755 (executable)
index 0000000..df981fc
--- /dev/null
@@ -0,0 +1,106 @@
+#!/usr/bin/python
+
+import sys
+import getopt
+import os
+import json
+
+PLAFORM_SH_MEMBERS = "Jianxin Pan, Tao Zeng, Hanjie Lin, Yan Wang, Jiamin Ma, Jianxiong Pan, \
+                  Qi Duan, Zhuo Wang, Yue Wang, He He, Yu Tu, \
+                  Qiufang Dai, Hong Guo, Zhiqiang Liang, Pan Yang, Shunzhou Jiang, Huan Biao"
+
+def usage():
+       print("\nweekly_change.py is a tool assisting at generating weekly change report")
+       print("usage:")
+       print("-s xxxx-xx-xx")
+       print("    specify the the starting date")
+       print("-e xxxx-xx-xx")
+       print("    specify the the ending date")
+       print("-p")
+       print("    highlight commit from SH PLATFORM MEMBER(kernel)")
+       print("-h")
+       print("    show this help info")
+
+def exec_cmd_rdata(cmd):
+    result = os.popen(cmd)
+    res = result.read()
+    res=res.strip('\n')
+
+    return res
+
+def is_sh_platform_commit(auther):
+       if auther in PLAFORM_SH_MEMBERS:
+               return True
+       return False
+
+def main():
+       start_date = ""
+       end_date = ""
+       git_commit_cmd = "git log --pretty=\"%h - %s\" --since="
+       git_commit_info = ""
+       html_out = "<div>"
+       gerrit_cmd_1 = "ssh -p 29418 scgit.amlogic.com gerrit query --format=JSON commit:"
+       highlight_shp = False
+       opts, args = getopt.getopt(sys.argv[1:], "hps:e:")
+       for op, value in opts:
+               if op == "-s":
+                       start_date = value
+               if op == "-e":
+                       end_date = value
+               if op == "-p":
+                       highlight_shp = True
+               if op == "-h":
+                       usage()
+                       sys.exit()
+
+       #print(start_date)
+       git_commit_cmd = git_commit_cmd+start_date
+       if end_date == "":
+               git_commit_cmd = git_commit_cmd + " --no-merges"
+       else:
+               git_commit_cmd = git_commit_cmd + " --until=" + end_date + " --no-merges"
+       #print(git_commit_cmd)
+       git_commit_info = exec_cmd_rdata(git_commit_cmd)
+       #print(git_commit_info)
+
+       # obtain gerrit url via gerrit query
+       for line in git_commit_info.splitlines():
+               #print(line)
+               commit = line.split(" - ")[0]
+               message = line.split(" - ")[1]
+               #print(commit+"-"+message)
+               gerrit_cmd = gerrit_cmd_1 + commit
+               #print(gerrit_cmd)
+               gerrit_info = exec_cmd_rdata(gerrit_cmd)
+               gerrit_info = gerrit_info.split("\n")[0]
+               #print(gerrit_info)
+               data = json.loads(gerrit_info)
+               #print(data['owner']["name"])
+               #print(data['url'])
+               owner_name = data['owner']["name"]
+               gerrit_url = data['url']
+
+               #
+               # we do not use any html library, which is too heavy
+               #
+               html_out = html_out + '<a title=\"' + gerrit_url + \
+                          '\"ass=\" external\" rel=\"external nofollow\" href=\"' + gerrit_url + '\" target=\"_blank\">' + \
+                          commit + '</a> - ' + message
+               if highlight_shp == True:
+                       if is_sh_platform_commit(owner_name) == True:
+                               html_out += ' (SH_PLATFORM_KERNEL)<br>'
+                       else:
+                               html_out += '<br>'
+               else:
+                       html_out += '<br>'
+               #print(html_out)
+       html_out = html_out + '</div>'
+       #print(html_out)
+
+       html = open("weekly_update.html", "w+")
+       html.write(html_out);
+       html.close
+
+if __name__ == "__main__":
+        main()
+