getmaintainer.sh: parse MAINTAINERS file to determine who should review changes to a particular file or directory
This commit is contained in:
parent
c7985808ae
commit
7181edf4b2
1 changed files with 58 additions and 0 deletions
58
hack/getmaintainer.sh
Executable file
58
hack/getmaintainer.sh
Executable file
|
@ -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
|
Loading…
Reference in a new issue