diff --git a/.mailmap b/.mailmap new file mode 100644 index 0000000..78b378e --- /dev/null +++ b/.mailmap @@ -0,0 +1,2 @@ +Andrew Brown +Alex Headley diff --git a/contrib/contributors.py b/contrib/contributors.py new file mode 100755 index 0000000..9e97d22 --- /dev/null +++ b/contrib/contributors.py @@ -0,0 +1,51 @@ +#!/usr/bin/python2 +"""List contributors that are not yet in the contributor list + +Alias handling is done by git with .mailmap +""" + +import sys +from subprocess import Popen, PIPE + +def main(): + if len(sys.argv) > 1: + branch = sys.argv[1] + else: + branch = "master" + + contributors=[] + p_git = Popen(["git", "shortlog", "-se", branch], stdout=PIPE) + for line in p_git.stdout: + contributors.append({ + 'count': int(line.split("\t")[0].strip()), + 'name': line.split("\t")[1].split()[0:-1], + 'email': line.split("\t")[1].split()[-1] + }) + + old_contributors=[] + with open("CONTRIBUTORS.rst", "r") as contrib_file: + for line in contrib_file: + if "@" in line: + old_contributors.append({ + 'name': line.split()[1:-1], + 'email': line.split()[-1] + }) + # We don't access the name of old/listed contributors at all + # but that might change. + # So we parse it anyways and strip it off again. + old_emails = map(lambda x: x['email'], old_contributors) + + new_contributors=[] + for contributor in contributors: + if contributor["email"] not in old_emails: + new_contributors.append(contributor) + + # sort on the last word of the name + new_contributors = sorted(new_contributors, + key=lambda x: x['name'][-1].lower()) + for contributor in new_contributors: + print "{0:3d} {1:25s} {2}".format(contributor["count"], + " ".join(contributor["name"]), contributor["email"]) + +if __name__ == "__main__": + main()