#!/bin/sh # # get-authors # Copyright (c) 2009-2018 The CVC4 Project # # usage: get-authors [ files... ] # # This script uses git to get the original author # gituser="`git config user.name` <`git config user.email`>" if [ "$1" = "--email" ]; then strip_email=cat shift else strip_email="sed 's, *<[^>]*@[^>]*>,,g'" fi while [ $# -gt 0 ]; do f=$1 shift contributors= if [ -z "`grep " \*\* Top contributors" $f`" ] then header_lines=0 else header_lines=`grep "\*\*\/" $f -m 1 -n | cut -d ':' -f 1` if [ -z $header_lines ]; then header_lines=0; fi fi ((header_lines++)) total_lines=`wc -l "$f" | awk '{print$1}'` git blame -w -M -C --incremental -L $header_lines,$total_lines "$f" | \ gawk '/^[0-9a-f]+ [0-9]+ [0-9]+ [0-9]+$/ {nl=$4;} /^summary .*copyright/ {nl=0} /^author / {$1=""; author=$0;} /^author-mail / {mail=$2} /^filename / {while(nl--) {print author,mail}}' | \ sed "s,Not Committed Yet ,$gituser," | \ sed 's/PaulMeng/Paul Meng/' | \ sed 's/barrettcw/Clark Barrett/' | \ sed 's/Andres Nötzli/Andres Noetzli/' | \ sed 's/Andres Notzli/Andres Noetzli/' | \ sed 's/guykatzz/Guy/' | \ sed 's/Guy Katz/Guy/' | \ sed 's/Guy/Guy Katz/' | \ sed 's/Martin Brain/Martin/' | \ sed 's/Martin/Martin Brain/' | \ sed 's/justinxu421/Justin Xu/' | \ eval "$strip_email" | \ sort | uniq -c | sort -nr | head -n 3 | \ ( while read lines author; do contributors="${contributors:+$contributors, }$author" done; \ echo "$contributors") done