#!/bin/bash # Path to userinfo.xml USER_LIST="/data/src/gentoo/xml/htdocs/proj/en/devrel/roll-call/userinfo.xml" # Get committer info from CVS ,v files and format properly for parsecvs cvslog_authors() { grep "${1}" \ -r \ --include='*,v' \ -a \ -e '^date.*author.*state' \ | cut -d';' -f2 \ | cut -d' ' -f2 \ | sort \ | uniq } # Get the real name from an XML user file get_name() { local USER_LIST=$1 NAME=$2 grep \ ${USER_LIST} \ -C5 \ -e "username=\"$NAME\"" \ -e "$NAME" \ | grep fullname \ | cut -d\" -f2 } # Get the email address from an XML user file get_email() { local USER_LIST=$1 NAME=$2 while read line; do EMAIL="<$(echo $line | cut -d'>' -f2 | cut -d'<' -f1)>" if [[ ${EMAIL} =~ \<.*@gentoo.org\> ]]; then echo "${EMAIL}" return 0 fi done \ < <(grep \ $USER_LIST \ -A10 \ -e "username=\"$NAME\"" \ -e "$NAME" \ | grep "") # If we didn't find a primary role, return the last (and probably only) # one we did find echo $EMAIL } if [[ $# -eq 0 ]]; then ARGS= while read line; do ARGS="$ARGS $line" done set $ARGS fi #while read line; do # # Check for a missing real name & fix # if [[ $line = *=\<* ]]; then # ID=${line%%=*} # EMAIL=${line##*=} # NAME=$(get_name $USER_LIST $ID) # line="${ID}=${NAME} ${EMAIL}" # fi # # echo "$line" #done < <(changelog_authors $@) while read line; do ID=${line} EMAIL=$(get_email $USER_LIST $ID) NAME=$(get_name $USER_LIST $ID) line="${ID}=${NAME} ${EMAIL}" echo "$line" done < <(cvslog_authors "${1}")