#!/bin/bash

# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

# Should we clean-up?
cleanup=1

clean_up_and_exit() {
  if [ "${cleanup}" -eq 1 ]; then
    echo
    git branch -D pr/${prId} >/dev/null 2>&1
    rm ${jsonTmp} ${tmpMessageFile} >/dev/null 2>&1
  fi
  exit $1
}

# Arguments
argument=$1
prId=${argument}
force=0
if [[ "${2}" == "--force" ]]; then
  force=1
fi

# Some of us got used to a git pr alias that you had to feed with the PR url
# Let's make this script backwards compatible with the previous one.
if [[ ${argument} =~ https://github.com.* ]]; then
  prId=$(echo "${argument}" | awk -F/ {'print $7'})
  echo "INFO: Found PR id ${prId} from url"
fi

# Check the arguments
if [ -z ${prId} ]; then
  echo "Usage: git pr pool-request-number [ --force ]"
  echo "Works for any Apache repository mirrored on GitHub'"
  echo "For instructions, see: https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=61311655"
  clean_up_and_exit 1
fi

# Vars we need
jsonTmp="${PWD}/${prId}.json"
tmpMessageFile="${PWD}/.git-tmp-message.txt"
repoName=$(basename `git rev-parse --show-toplevel`)

# We need UTF-8 to support the GitHub '...' 3-dots-in-1-char, for example.
export LANG="en_EN.UTF-8"

if [ "${prId}" -eq "${prId}" 2>/dev/null ]; then
  # Get json data from Github API
  curl -s https://api.github.com/repos/apache/${repoName}/pulls/${prId} > ${jsonTmp}
else
  echo "ERROR: Pull-request id must be an integer, not '${prId}'"
  clean_up_and_exit 1
fi

# Get vars from the GitHub API and parse the returned json
prAuthor=$(cat ${jsonTmp} | python -c "
try:
  import sys, json
  print json.load(sys.stdin)['user']['login'].encode('utf-8').decode('ascii','ignore')
except:
  print ''
")

prTitle=$(cat ${jsonTmp} | python -c "
try:
  import sys, json
  print json.load(sys.stdin)['title'].encode('utf-8').decode('ascii','ignore')
except:
  print ''
")

prBody=$(cat ${jsonTmp} | python -c "
try:
  import sys, json
  print json.load(sys.stdin)['body'].encode('utf-8').decode('ascii','ignore')
except:
  print ''
")

prOriginBranch=$(cat ${jsonTmp} | python -c "
try:
  import sys, json
  print json.load(sys.stdin)['head']['label'].encode('utf-8').decode('ascii','ignore')
except:
  print ''
" | sed -e "s/:/\//")

prState=$(cat ${jsonTmp} | python -c "
try:
  import sys, json
  print json.load(sys.stdin)['state'].encode('utf-8').decode('ascii','ignore')
except:
  print 'Unknown'
")

prMergeableState=$(cat ${jsonTmp} | python -c "
try:
  import sys, json
  print json.load(sys.stdin)['mergeable_state'].encode('utf-8').decode('ascii','ignore')
except:
  print 'Unknown'
")

prDestinationBranch=$(cat ${jsonTmp} | python -c "
try:
  import sys, json
  print json.load(sys.stdin)['base']['ref'].encode('utf-8').decode('ascii','ignore')
except:
  print 'Unknown'
")

prCommits=$(cat ${jsonTmp} | python -c "
try:
  import sys, json
  print json.load(sys.stdin)['commits']
except:
  print 'Unknown'
")

# Do some sanity checking
if [ ${#prAuthor} -eq 0 ]; then
  echo "ERROR: We couldn't grab the PR author. Something went wrong querying the GitHub API."
  clean_up_and_exit 1
fi

if [ ${#prTitle} -eq 0 ]; then
  echo "ERROR: We couldn't grab the PR title. Something went wrong querying the GitHub API."
  clean_up_and_exit 1
fi

if [ ${#prOriginBranch} -eq 0 ]; then
  echo "ERROR: We couldn't grab the PR branch name. Something went wrong querying the GitHub API."
  clean_up_and_exit 1
fi

currentBranch=$(git branch | grep "^*" | sed -e "s/^[*] //")
if [ "${prDestinationBranch}" != "${currentBranch}" ] && [ ${force} -lt 1 ]; then
  echo "ERROR: This PR is made against branch '${prDestinationBranch}' while your current checked out branch is '${currentBranch}'."
  echo "ERROR: Please make sure you're in the right branch and run this scipt again."
  clean_up_and_exit 1
elif [ "${prDestinationBranch}" != "${currentBranch}" ] && [ ${force} -eq 1 ]; then
  echo "WARNING: You used --force to merge to '${currentBranch}' while this PR is for branch '${prDestinationBranch}'."
fi

if [ "${prState}" != "open" ] && [ ${force} -lt 1 ]; then
  echo "ERROR: We couldn't merge the PR because the state is not 'open' but '${prState}'."
  echo "ERROR: In general it's a bad idea to merge closed PRs!"
  echo "ERROR: Run this script again with --force if you know what you're doing"
  echo "ERROR: (continuing work on an abandoned PR in which case you'd merge to a branch in your fork"
  echo "ERROR: and send that as a new PR). Ask for help on @dev if unsure."
  clean_up_and_exit 1
elif [ "${prState}" != "open" ] &&[ ${force} -eq 1 ]; then
  echo "WARNING: You used --force to merge a PR with state '${prState}'."
fi

if [ "${prMergeableState}" != "clean" ] && [ ${force} -lt 1 ]; then
  echo "ERROR: We couldn't merge the PR because it cannot be merged 'clean' (GitHub reports '${prMergeableState}')."
  echo "ERROR: This can be caused by a Travis build in progress, a failed Travis build or an unclean merge (conflicts)"
  echo "ERROR: Run this script again with --force if you know what you're doing. Ask for help on @dev if unsure."
  clean_up_and_exit 1
elif [ "${prMergeableState}" != "clean" ] && [ ${force} -eq 1 ]; then
  echo "WARNING: You used --force to merge a PR with non-clean merge state '${prMergeableState}'."
fi

github_remote=$(git remote -v | grep -E "apache/${repoName}(.git)?" | head -n 1 | cut -f1)
apache_remote=$(git remote -v | grep -E "git-wip-us\.apache\.org" | head -n 1 | cut -f1)
if [ ${#github_remote} -eq 0 ]; then
  echo "ERROR: We couldn't find a git remote pointing to 'apache/${repoName}.git' to merge the PR from."
  echo "INFO: Currently, your configured remotes are:"
  echo "INFO: ***********************************************************************************"
  git remote -v
  echo "INFO: ***********************************************************************************"
  echo "INFO: To merge a PR, we need access to two remotes: "
  echo "INFO: 1. Read-only access to GitHub mirror"
  echo "INFO: 2. Read/write access to Apache git"
  echo "INFO: Please add a remote like this: 'git remote add github https://github.com/apache/${repoName}.git'"
  echo "INFO: For more help, visit: https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=61311655"
  echo "INFO: Once done, run this script again."
  clean_up_and_exit 1
fi

echo "INFO: Using remote repository '${github_remote}' to fetch PR (should point to github.com/apache/${repoName}.git)"
echo "INFO: PR #${prId} against branch '${prDestinationBranch}' from '${prAuthor}': '${prTitle}'"
echo "INFO: has state '${prState}' and mergable state '${prMergeableState}', about to be merged in branch '${currentBranch}'."

# Construct commit merge message
echo "Merge pull request #${prId} from ${prOriginBranch}" > ${tmpMessageFile}
echo "" >> ${tmpMessageFile}
echo "${prTitle}${prBody}" >> ${tmpMessageFile}

# Are you sure?
echo "ATTENTION: Merging pull request #${prId} from ${prOriginBranch} into '${currentBranch}' branch in 5 seconds. CTRL+c to abort.."
sec=5
while [ $sec -ge 0 ]; do
  printf "${sec} "
  sec=$((sec-1))
  sleep 1
done
echo
echo "INFO: Executing the merge now.. Git output below:"
echo "INFO: ***********************************************************************************"

# Do the actual merge
git fetch ${github_remote} pull/${prId}/head:pr/${prId}
git merge --no-ff --log -m "$(cat ${tmpMessageFile})" pr/${prId}
if [ $? -eq 0 ]; then
  git commit --amend -s --allow-empty-message -m ''
else
  echo "ERROR: Merge failed, aborting."
  git merge --abort
  clean_up_and_exit 1
fi

# What's next
echo "INFO: ***********************************************************************************"
echo "INFO: Merged successfully! Please double check using 'git log -p' and 'git push' when you're sure."
echo "INFO: About commits: there should be ${prCommits} from the PR plus 1 merge commit."
echo "INFO: Actual diff in commits is: (running git log --pretty=oneline --abbrev-commit ${apache_remote}/${currentBranch}..${currentBranch})"
echo
git log --pretty=oneline --abbrev-commit ${apache_remote}/${currentBranch}..${currentBranch}

clean_up_and_exit 0
