diff options
| author | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
|---|---|---|
| committer | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
| commit | 3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch) | |
| tree | a44932296ef4a9b71d5f010906253d8c53727726 /doc/cla/stats.py | |
| parent | 0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff) | |
initial commit 2
Diffstat (limited to 'doc/cla/stats.py')
| -rwxr-xr-x | doc/cla/stats.py | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/doc/cla/stats.py b/doc/cla/stats.py new file mode 100755 index 00000000..c05f8198 --- /dev/null +++ b/doc/cla/stats.py @@ -0,0 +1,59 @@ +#!/usr/bin/python +# +# Runme From the repo toplevel directory +# +from __future__ import print_function +import subprocess +import glob +import re +import pprint + + +cla_glob = "doc/cla/*/*.md" +cla = ''.join(open(f).read() for f in glob.glob(cla_glob)) +cla = cla.lower() + +def cla_signed(email): + if re.match('.*(odoo|openerp|tinyerp).com$',email): + return True + if cla.find(email) != -1: + return True + return False + +def blamestat(ext='py'): + r = {} + ok = 0 + okl = [] + ko = 0 + kol = [] + p = subprocess.Popen("git ls-tree -r -z --name-only HEAD | grep -z '.%s$' | xargs -0 -n1 git blame --line-porcelain HEAD |grep '^author-mail ' |sort |uniq -c|sort -nr" % ext, shell=True, stdout = subprocess.PIPE) + for i in p.stdout.read().split('\n'): + mo = re.search('(\d+) author-mail <([^ @<]+@[^ @<]+)>',i) + if mo: + lines = int(mo.group(1)) + email = mo.group(2) + if cla_signed(email): + ok += lines + okl.append(i) + else: + ko += lines + kol.append(i) + print('-'*60) + print('Stats for ', ext) + print('-'*60) + print("\nCLA SIGNED %s/%s (%.0f%%)" % (ok, ok+ko, ok*100.0/(ok+ko))) + for i in okl: + print(i) + + print("\nCLA MISSING %s/%s (%.0f%%)\n" % (ko, ok+ko, ko*100.0/(ok+ko))) + for i in kol: + print(i) + print() + print() + +blamestat('md') +blamestat('rst') +blamestat('py') +blamestat('js') +blamestat('xml') +blamestat('csv') |
