#!/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 changes that are pushed to Nordix Gerrit and push upstream to ONAP
# 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 ONAP Gerrit
#
set -o nounset
set -o pipefail

cd $WORKSPACE
echo "Retrieving information from commit to push towards ONAP"
project=$(git config --local remote.origin.url | awk -F "29418/" '{print $2}')
message=$(git show -s --pretty=%B | grep -vi 'Signed-off-by')
username=$(git show -s --pretty=%an)

pattern=" "
if [[ "$username" =~ $pattern ]]
then
    echo "Incorrect username, use Linux Foundation ID as git user.name when pushing to Nordix"
    exit 1
fi

echo "Setting user name and email"
git config user.email $(git show -s --pretty=%ae)
git config user.name $username

echo "Checking out branch on master with new changes"
git reset HEAD~1 --soft
git checkout -b delivery_branch origin/$BRANCH

git config --get remote.upstream.url
retVal=$?

if [[ $retVal -eq 0 ]]
then
  git remote rm upstream
  git remote add upstream "ssh://$username@gerrit.onap.org:29418/$project.git"
else
  git remote add upstream "ssh://$username@gerrit.onap.org:29418/$project.git"
fi

echo "Committing changes and pushing upstream"
git commit -as -m "$message"
git push upstream HEAD:refs/for/$BRANCH

retVal1=$?
if [[ $retVal1 -eq 0 ]]
then
  echo "Push upstream to ONAP succeeded"
else
  echo "Push upstream to ONAP failed"
  exit 2
fi

git checkout $BRANCH
git branch -D delivery_branch
