diff --git a/bin/update-authors.py b/bin/update-authors.py new file mode 100755 index 000000000..a8c7fc37e --- /dev/null +++ b/bin/update-authors.py @@ -0,0 +1,46 @@ +#!/usr/bin/env python +""" +Update the authors.md file with the authors from the git log +""" + +import re +import subprocess + +AUTHORS = "docs/content/authors.md" +IGNORE = [ "nick@raig-wood.com" ] + +def load(): + """ + returns a set of emails already in authors.md + """ + with open(AUTHORS) as fd: + authors = fd.read() + emails = set(re.findall(r"<(.*?)>", authors)) + emails.update(IGNORE) + return emails + +def add_email(name, email): + """ + adds the email passed in to the end of authors.md + """ + print "Adding %s <%s>" % (name, email) + with open(AUTHORS, "a+") as fd: + print >>fd, " * %s <%s>" % (name, email) + subprocess.check_call(["git", "commit", "-m", "Add %s to contributors" % name, AUTHORS]) + +def main(): + out = subprocess.check_output(["git", "log", '--reverse', '--format=%an|%ae', "master"]) + + previous = load() + for line in out.split("\n"): + line = line.strip() + if line == "": + continue + name, email = line.split("|") + if email in previous: + continue + previous.add(email) + add_email(name, email) + +if __name__ == "__main__": + main()