From 06238a3e562fcb0840533a757ce53fae5784323e Mon Sep 17 00:00:00 2001 From: zhangjianqiang Date: Tue, 11 Dec 2018 01:07:14 +0800 Subject: [PATCH] generate report from a config file generate report from a config file --- gitreport.py | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 gitreport.py diff --git a/gitreport.py b/gitreport.py new file mode 100644 index 0000000..182693e --- /dev/null +++ b/gitreport.py @@ -0,0 +1,81 @@ + +import os +import re +import sys +import getopt +import datetime + +helpinfo = ("""Usage: gitreport [OPTION]... + -r, --repo= a space separated list of git repositories + line formart likes: + tag repository since until + gitinspectory https://github.com/ejwa/gitinspector.git 2018-01-01 2018-12-01 + gitinspectorycvs https://github.com/de2sl2pfds/gitinspector.git 2018-01-01 2018-12-01 + -o, --output= output filename of csv format + -h, --help display this help and exit +""") + +def report(repo,output): + if not os.path.isfile(repo): + print("repo config file not exists") + sys.exit(-3) + if os.path.isfile(output): + output = output + "." + datetime.datetime.today().strftime('%Y%m%d%H%M%S') + print("output file exists. new file name is : " + output) + else: + print("output file name is : " + output) + os.system("> " + output) + i = 0 + for line in open(repo): + a = re.compile("\s+").split(line.strip()) + if a[0].lower().strip() == 'tag': + print("title: " + line.strip()) + continue + if len(a) > 3 and a[1].lower().find('.git') > -1: + print("No.[" + str(i) + "] : " + line.strip()) + print(" repository info: tag=" + a[0] + " since=" + a[2] + " until=" + a[3] + " gitrepo=" + a[1]) + cmd = ("python gitinspector.py --since="+a[2]+" --until="+a[3]+" --tag="+a[0]+" -F csv "+ a[1] + ">> " + output) + print(" command: " + cmd) + os.system(cmd) + i += 1 + print("") + + + if i < 1: + print("no repository found.") + os.unlink(output) + else: + print("processed " + str(i) + " repositories.") + +def main(argv): + repofile = "repo.txt" + outputfile = "report.csv" + + try: + opts, args = getopt.getopt(argv, "h:r:o:", + ["help=","repo=","output="]) + except getopt.GetoptError: + print helpinfo + sys.exit(-1) + if len(argv) == 0: + print helpinfo + sys.exit(-2) + + for o, a in opts: + if o in("-h", "--help"): + print(helpinfo) + sys.exit(0) + elif o in("-r", "--repo"): + repofile = a + elif o in("-o", "--output"): + outputfile = a + else: + print(helpinfo) + sys.exit(0) + report(repofile,outputfile) + +if __name__ == "__main__": + main(sys.argv[1:]) + + +