getmaintainer.sh 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #!/usr/bin/env bash
  2. set -e
  3. if [ $# -ne 1 ]; then
  4. echo >&2 "Usage: $0 PATH"
  5. echo >&2 "Show the primary and secondary maintainers for a given path"
  6. exit 1
  7. fi
  8. set -e
  9. DEST=$1
  10. DESTFILE=""
  11. if [ ! -d $DEST ]; then
  12. DESTFILE=$(basename $DEST)
  13. DEST=$(dirname $DEST)
  14. fi
  15. MAINTAINERS=()
  16. cd $DEST
  17. while true; do
  18. if [ -e ./MAINTAINERS ]; then
  19. {
  20. while read line; do
  21. re='^([^:]*): *(.*)$'
  22. file=$(echo $line | sed -E -n "s/$re/\1/p")
  23. if [ ! -z "$file" ]; then
  24. if [ "$file" = "$DESTFILE" ]; then
  25. echo "Override: $line"
  26. maintainer=$(echo $line | sed -E -n "s/$re/\2/p")
  27. MAINTAINERS=("$maintainer" "${MAINTAINERS[@]}")
  28. fi
  29. else
  30. MAINTAINERS+=("$line");
  31. fi
  32. done;
  33. } < MAINTAINERS
  34. break
  35. fi
  36. if [ -d .git ]; then
  37. break
  38. fi
  39. if [ "$(pwd)" = "/" ]; then
  40. break
  41. fi
  42. cd ..
  43. done
  44. PRIMARY="${MAINTAINERS[0]}"
  45. PRIMARY_FIRSTNAME=$(echo $PRIMARY | cut -d' ' -f1)
  46. LGTM_COUNT=${#MAINTAINERS[@]}
  47. LGTM_COUNT=$((LGTM_COUNT%2 +1))
  48. firstname() {
  49. echo $1 | cut -d' ' -f1
  50. }
  51. echo "A pull request in $1 will need $LGTM_COUNT LGTM's to be merged."
  52. echo "--- $PRIMARY is the PRIMARY MAINTAINER of $1."
  53. for SECONDARY in "${MAINTAINERS[@]:1}"; do
  54. echo "--- $SECONDARY"
  55. done