diff --git a/hack/getmaintainer.sh b/hack/getmaintainer.sh new file mode 100755 index 0000000000..2c24bacc89 --- /dev/null +++ b/hack/getmaintainer.sh @@ -0,0 +1,58 @@ +#!/bin/sh + +if [ $# -ne 1 ]; then + echo >&2 "Usage: $0 PATH" + echo >&2 "Show the primary and secondary maintainers for a given path" + exit 1 +fi + +set -e + +DEST=$1 +DESTFILE="" +if [ ! -d $DEST ]; then + DESTFILE=$(basename $DEST) + DEST=$(dirname $DEST) +fi + +MAINTAINERS=() +cd $DEST +while true; do + if [ -e ./MAINTAINERS ]; then + { + while read line; do + re='^([^:]*): *(.*)$' + file=$(echo $line | sed -E -n "s/$re/\1/p") + if [ ! -z "$file" ]; then + if [ "$file" = "$DESTFILE" ]; then + echo "Override: $line" + maintainer=$(echo $line | sed -E -n "s/$re/\2/p") + MAINTAINERS=("$maintainer" "${MAINTAINERS[@]}") + fi + else + MAINTAINERS+=("$line"); + fi + done; + } < MAINTAINERS + fi + if [ -d .git ]; then + break + fi + if [ "$(pwd)" = "/" ]; then + break + fi + cd .. +done + +PRIMARY="${MAINTAINERS[0]}" +PRIMARY_FIRSTNAME=$(echo $PRIMARY | cut -d' ' -f1) + +firstname() { + echo $1 | cut -d' ' -f1 +} + +echo "--- $PRIMARY is the PRIMARY MAINTAINER of $1. Assign pull requests to him." +echo "$(firstname $PRIMARY) may assign pull requests to the following secondary maintainers:" +for SECONDARY in "${MAINTAINERS[@]:1}"; do + echo "--- $SECONDARY" +done