#!/bin/bash -e

if [ "$1" == "--help" ] || [ "$1" == "" ] || [ "$2" == "" ] || [ "$3" == "" ]
then
  echo "Gerrit Code Review - release automation script"
  echo "----------------------------------------------"
  echo "Use: $0 <branch> <version> <next-version> [<test-migration-version>]"
  echo ""
  echo "Where: branch  Gerrit branch name where the release must be cut"
  echo "       version Gerrit semantic release number"
  echo "       next-version Next SNAPSHOT version after release"
  echo "       test-migration-version Test migration from an earlier Gerrit version"
  echo ""
  echo "Example: $0 stable-3.10 3.10.2 3.10.3-SNAPSHOT 3.9.6"
  echo ""
  echo "Environment variables:"
  echo "* GCLOUD_AUTH_TOKEN:"
  echo "     OAuth2 access token, used to upload artifacts and documentation to gcloud"
  echo "* GPG_KEY:"
  echo "     GPG key to be imported for signing"
  echo "* GPG_PASSPHRASE:"
  echo "     GPG passphrase"
  echo "* GS_GIT_USER:"
  echo "     Username for git operations targeting gerrit.googlesource.com"
  echo "* GS_GIT_PASS:"
  echo "     Password for git operations targeting gerrit.googlesource.com"
  echo "* OSSHR_USER:"
  echo "     Username used to upload artifacts to Maven Central"
  echo "* OSSHR_TOKEN:"
  echo "     API Token used to upload artifacts to Maven Central"
  echo "* DRY_RUN:"
  echo "     When set do any value, dry-run of the release process, without pushing changes or tags"
  echo ""
  exit 1
fi

export branch=$1
export version=$2
export nextversion=$3
export migrationversion=$4

export CLOUDSDK_AUTH_ACCESS_TOKEN="$GCLOUD_AUTH_TOKEN"

bazel_config=""
if [ "$branch" == "stable-3.11" ]; then
  bazel_config="--config=java21"
fi

echo "Setting java version for $branch"
. set-java.sh --branch "$branch"

if [ -d gerrit ]
then
  rm -Rf gerrit
fi

echo "Installing maven credentials"
mkdir -p "$HOME/.m2"
# shellcheck disable=SC2016
envsubst '$OSSHR_USER $OSSHR_TOKEN' < /tmp/m2.settings.xml.template > "$HOME/.m2/settings.xml"

echo "Installing git credentials..."
echo "machine gerrit.googlesource.com login $GS_GIT_USER password $GS_GIT_PASS" > "$HOME/.netrc"
chmod 600 "$HOME/.netrc"

if [ -n "$GPG_KEY" ]
then
  echo "Configuring GPG keys..."
  mkdir -p "$HOME/.gnupg"
  chmod 700 "$HOME/.gnupg"
  echo "allow-loopback-pinentry" >> "$HOME/.gnupg/gpg-agent.conf"
  echo "use-agent" >> "$HOME/.gnupg/gpg.conf"
  echo "pinentry-mode loopback" >> "$HOME/.gnupg/gpg.conf"

  gpgconf --kill gpg-agent || true

  echo "Import private key..."

  # The use of 'envsubst' allows to avoid the accidental display of the GPG key in the output
  echo '$GPG_KEY' | envsubst '$GPG_KEY' > "/tmp/gpg-key"
  gpg --batch --yes --import /tmp/gpg-key && rm -f /tmp/gpg-key

  echo "Configuring git to read GPG passphrase from file..."
  export GPG_PASSPHRASE_FILE="$HOME/.gnupg/gpg-passphrase"
  echo '$GPG_PASSPHRASE' | envsubst '$GPG_PASSPHRASE' > $GPG_PASSPHRASE_FILE
  git config --global gpg.program /usr/local/bin/gpg-loopback


  echo "Testing if GPG signature works"
  echo foo > /tmp/foo
  /usr/local/bin/gpg-loopback --sign /tmp/foo && /usr/local/bin/gpg-loopback --verify /tmp/foo.gpg
fi

GPG_USER=$(gpg -K --with-colons | grep uid | cut -d ':' -f 10)
git config --global user.name "$(echo "$GPG_USER" | awk '{print $1" "$2}')"
git config --global user.email $(echo "$GPG_USER" | sed 's/.*<//' | sed 's/>//')

echo "Cloning and building Gerrit Code Review on branch $branch ..."
git config --global credential.helper cache
git clone https://gerrit.googlesource.com/gerrit && (cd gerrit && f=$(git rev-parse --git-dir)/hooks/commit-msg ; curl -Lo "$f" https://gerrit-review.googlesource.com/tools/hooks/commit-msg ; chmod +x "$f")

pushd gerrit

git checkout "$branch"
git fetch && git reset --hard origin/"$branch"
git submodule update --init

git clean -fdx
./tools/version.py "$version"
git commit -a -m 'Set version to '$version'

Release-Notes: skip'
test $DRY_RUN || git push origin HEAD:refs/for/"$branch"

git tag -f -s -m "v$version" "v$version"
git submodule foreach 'if [ "$path" != "modules/jgit" ]; then git tag -f -s -m "v$version" "v$version"; fi'

bazelisk build $bazel_config release Documentation:searchfree
./tools/maven/api.sh install $bazel_config

echo -n "Checking Gerrit version ... "

warVersion=$(java -jar bazel-bin/release.war --version)

if ! [ "$warVersion" == "gerrit version $version" ]
then
  echo "Version build is $warVersion but was expecting $version"
  exit 2
fi

echo "OK"

echo "Checking Gerrit plugins version ... "
java -jar bazel-bin/release.war init --list-plugins

if test "$migrationversion" '!=' ""
then
  cp bazel-bin/release.war gerrit-$version.war
  $(dirname $0)/gerrit-upgrade-test.sh $migrationversion $version
fi

echo "Publishing Gerrit WAR and APIs to Maven Central ..."
export VERBOSE=1
./tools/maven/api.sh war_deploy $bazel_config
./tools/maven/api.sh deploy $bazel_config

bearer_token=$(echo -n "$OSSHR_USER:$OSSHR_TOKEN" | base64)

# Manually upload to Maven Central
# https://central.sonatype.org/publish/publish-portal-ossrh-staging-api/#post-to-manualuploaddefaultrepositorynamespace
curl -X POST \
  'https://ossrh-staging-api.central.sonatype.com/manual/upload/defaultRepository/com.google.gerrit' \
  -H 'accept: */*' \
  -H "Authorization: Bearer $bearer_token" \
  -d "''" || {
    echo "manual upload endpoint failed. Aborting release."
    exit 4
  }
popd

cp -f gerrit/bazel-bin/Documentation/searchfree.zip .
cp -f gerrit/bazel-bin/release.war gerrit-"$version".war

echo "gerrit.war checksums"
shasum gerrit-"$version".war
shasum -a 256 gerrit-"$version".war
md5sum gerrit-"$version".war

echo "Pushing gerrit.war to gerrit-releases ..."
gcloud storage cp gerrit-"$version".war gs://gerrit-releases/gerrit-"$version".war

echo "Pushing gerrit documentation to gerrit-documentation ..."
unzip searchfree.zip
pushd Documentation
version_no_rc=$(echo "$version" | cut -d '-' -f 1)
gcloud storage cp --recursive . gs://gerrit-documentation/Documentation/"$version_no_rc"
popd

echo "Setting next version tag to $nextversion ..."
pushd gerrit
git clean -fdx
./tools/version.py "$nextversion"
git commit -a -m 'Set version to '$nextversion'

Release-Notes: skip'
test $DRY_RUN || git push origin HEAD:refs/for/"$branch"
popd

echo "Release completed"
