Kaynağa Gözat

getmaintainer.sh: parse MAINTAINERS file to determine who should review changes to a particular file or directory

Solomon Hykes 12 yıl önce
ebeveyn
işleme
7181edf4b2
1 değiştirilmiş dosya ile 58 ekleme ve 0 silme
  1. 58 0
      hack/getmaintainer.sh

+ 58 - 0
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