#! /bin/sh

# 'strict' mode
set -euo pipefail

SOURCE_BRANCH=${1-aosp/metalava-main}

echo -n "Checking status"
STATUS=$(git status -s | grep -v "??" || true)
if [[ $STATUS ]]; then
  echo " - ERROR"
  echo
  echo "The following changed files would interfere with merge:"
  echo "$STATUS"
  exit 1
else
  echo " - OK"
fi

echo -n "Checking current branch"
BRANCH=$(git branch --show-current)
if [[ $BRANCH ]]; then
  echo " - OK ($BRANCH)"
else
  echo " - ERROR"
  echo
  echo "No branch found, please run 'repo start <branch>'."
  exit 1
fi

echo -n "Current upstream branch"
CURRENT_BRANCH=$(git rev-parse --abbrev-ref --symbolic-full-name @{u})
echo " - ${CURRENT_BRANCH}"

function output_only_on_failure() {
  set +e
  OUTPUT=$(eval "$@" 2>&1)
  EXIT_CODE=$?
  set -e
  if [[ $EXIT_CODE != 0 ]]; then
    echo " - ERROR"
    echo "Command: $@"
    echo $OUTPUT
    exit 1
  fi
}

# Make sure that ${SOURCE_BRANCH} is up to date.
echo -n "Making sure that ${SOURCE_BRANCH} is up to date"
SPLIT_REPOSITORY_BRANCH=${SOURCE_BRANCH/\// }
output_only_on_failure git fetch ${SPLIT_REPOSITORY_BRANCH}
echo " - OK"

echo -n "Checking to see if there is anything to merge"
MERGE_BASE=$(git merge-base HEAD ${SOURCE_BRANCH})
if [[ ${MERGE_BASE} == $(git rev-parse ${SOURCE_BRANCH}) ]]; then
  echo " - NOTHING TO DO"
  exit 0
else
  echo " - CHANGES FOUND"
fi

echo -n "Extracting bugs from merged in changes"
BUGS=$(git log ${MERGE_BASE}..${SOURCE_BRANCH} | (grep -E "^ *Bug: *[0-9]+" || true) | sed "s/Bug://" | sort -u)
echo " - DONE"

echo -n "Performing the merge"
MESSAGE_FILE=$(mktemp)
trap "rm -f ${MESSAGE_FILE}" EXIT

cat > ${MESSAGE_FILE} <<EOF
Merge remote-tracking branch '${SOURCE_BRANCH}' into '${CURRENT_BRANCH}'

Merge performed by:
  $0${1+ $@}

This merge includes a number of changes so this contains a list of all
the affected bugs.

$(for BUG in $BUGS; do echo "Bug: $BUG"; done)
Test: m checkapi
EOF

output_only_on_failure git merge ${SOURCE_BRANCH} --no-ff -F ${MESSAGE_FILE}

echo " - DONE"
echo "The merge commit has been created. Please do the following before uploading:"
echo "1. Verify the commit by running 'm checkapi'"
echo "2. Review the commit to make sure it includes what is expected"

