#!/bin/bash

# ============LICENSE_START====================================================
#  Copyright (C) 2019 The Nordix Foundation. All rights reserved.
# =============================================================================
# Licensed 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.
#
# SPDX-License-Identifier: Apache-2.0
# ============LICENSE_END======================================================
#
# This script will take the single commit form the given Nordix Gerrit review
# and push it, and all its ancestor commit till $GERRIT_BRANCH, to ORANSC Gerrit.
# Pre-requisites for script to run successfully:
# - Author name in Nordix Gerrit equals LFID
#   i.e. need to run "git config --global user.name <LFID>"
# - infra public key on build server needs to be added to your users SSH
#   Public Keys in ORANSC Gerrit
#
set -euxo pipefail

cd "$WORKSPACE"

oransc_gerrit_base='gerrit.o-ran-sc.org:29418'
echo >&2 "Collecting information about what and how to push towards ORANSC Gerrit"

# The git hash of the commit in the review this job runs on
commit_hash="$GERRIT_PATCHSET_REVISION"

# GERRIT_PROJECT is in the form of oransc/<oransc-project>
oransc_project=$(echo "$GERRIT_PROJECT" | cut -d/ -f2- )

# Unfortunately for the some of the Nordix users, the Nordix Gerrit username don't match
# the ORANSC Gerrit username for their LFID. The git author will be used
# to push the change to ORANSC Gerrit.
username=$(git show -s --pretty=%an)

oransc_remote_url="ssh://$username@$oransc_gerrit_base/$oransc_project"

# GERRIT_BRANCH is the _intended_ branch of the commit under review
# E.g. git push HEAD:refs/for/master => GERRIT_BRANCH='master'
# GERRIT_TOPIC is the rest of the refspec after GERRIT_BRANCH when the topic
# is set for the change.
if [ -z "${GERRIT_TOPIC:-}" ] ; then
    refspec="${commit_hash}:refs/for/${GERRIT_BRANCH}"
else
    refspec="${commit_hash}:refs/for/${GERRIT_BRANCH}%topic=${GERRIT_TOPIC}"
fi

echo >&2 "Pushing to ORANSC Gerrit"

# do not fail if git push fails as in case of no new changes we want to succeed. See below.
set +o pipefail

git push "$oransc_remote_url" "$refspec" 2>&1 | tee push_result.txt
push_result=${PIPESTATUS[0]}

# make the job a success if the above git push fails due to no new changes are needed
# to be created upstream. This will be useful when we switch to automatic triggering
# of the push-upstream for each patch set and jobs on different commits in a same chain
# will race with each other to push parts of the chain
if [ $push_result -ne 0 ]; then
    grep '(no new changes)' push_result.txt
fi
