| #!/bin/bash |
| # Gan Shun Lim (ganshun@gmail.com) |
| # Copyright 2016 Google Inc |
| |
| # Use local branch name as the default topic unless overridden |
| GERRIT_TOPIC=`git symbolic-ref -q --short HEAD` |
| |
| GERRIT_REMOTE=gerrit |
| GERRIT_PUSH_COMMAND="git push $GERRIT_REMOTE HEAD:refs/for/master" |
| GERRIT_REVIEWERS_LINE="%" |
| |
| REVIEWERS="" |
| CC="" |
| |
| |
| if [ $# -ne 1 ] && [ $# -ne 3 ] && [ $# -ne 5 ] && [ $# -ne 7 ] |
| then |
| echo "Usage: adt mail [-m reviewer1,reviewer2...] [-cc cc1,cc2...] [-t topic]" |
| echo "Other functionalities are not yet supported" |
| exit -1 |
| fi |
| |
| if [ $1 != "mail" ] |
| then |
| echo "Only mail functionality is supported right now. Please do adt mail." |
| exit -1 |
| fi |
| |
| OLDIFS=$IFS |
| I=2 |
| while [ $I -lt $# ] |
| do |
| if [ ${!I} = "-t" ] |
| then |
| # Doesn't support multiple topics. not sure what gerrit will do. |
| (( I++ )) |
| GERRIT_TOPIC=${!I} |
| (( I++ )) |
| elif [ ${!I} = "-m" ] |
| then |
| (( I++ )) |
| IFS=$IFS"," |
| for R in ${!I} |
| do |
| IFS=$OLDIFS |
| if [ $GERRIT_REVIEWERS_LINE = "%" ] |
| then |
| GERRIT_REVIEWERS_LINE="${GERRIT_REVIEWERS_LINE}r=$R" |
| else |
| GERRIT_REVIEWERS_LINE="${GERRIT_REVIEWERS_LINE},r=$R" |
| fi |
| done |
| (( I++ )) |
| elif [ ${!I} = "-cc" ] |
| then |
| (( I++ )) |
| IFS=$IFS"," |
| for R in ${!I} |
| do |
| IFS=$OLDIFS |
| if [ $GERRIT_REVIEWERS_LINE = "%" ] |
| then |
| GERRIT_REVIEWERS_LINE="${GERRIT_REVIEWERS_LINE}cc=$R" |
| else |
| GERRIT_REVIEWERS_LINE="${GERRIT_REVIEWERS_LINE},cc=$R" |
| fi |
| done |
| (( I++ )) |
| else |
| echo "Unsupported flag ${!I}." |
| echo "Usage: adt mail [-m reviewer1,reviewer2...] [-cc cc1,cc2...] [-t topic]" |
| exit -1 |
| fi |
| done |
| |
| if [ "$GERRIT_TOPIC" != "" ] |
| then |
| # Append topic |
| GERRIT_PUSH_COMMAND="$GERRIT_PUSH_COMMAND/$GERRIT_TOPIC" |
| fi |
| |
| if [ $GERRIT_REVIEWERS_LINE != "%" ] |
| then |
| eval "$GERRIT_PUSH_COMMAND$GERRIT_REVIEWERS_LINE" |
| else |
| eval $GERRIT_PUSH_COMMAND |
| fi |
| |
| if [ "$?" -ne 0 ] |
| then |
| echo "Error occurred during git push. Please make sure that your remote for gerrit exists, and that GERRIT_REMOTE in this script is pointing to the correct remote." |
| exit -1 |
| fi |