#!/bin/bash
##############################################################################
#
#   Copyright (c) 2019 AT&T Intellectual Property.
#
#   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.
#
##############################################################################


ROOT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"

# Download it/dep common template charts
#git clone "https://gerrit.o-ran-sc.org/r/it/dep" ../dep
git clone --single-branch --branch r3 "https://gerrit.o-ran-sc.org/r/it/dep" ../dep

# Start Helm local repo if there isn't one
HELM_REPO_PID=$(ps -x | grep  "helm serve" | grep -v "grep" | awk '{print $1}')
if [ -z "$HELM_REPO_PID" ]; then
    nohup helm serve >& /dev/null &
fi

# Package ric-common and serve it using Helm local repo
HELM_HOME=$(helm home)
COMMON_CHART_VERSION=$(cat $ROOT_DIR/../dep/ric-common/Common-Template/helm/ric-common/Chart.yaml | grep version | awk '{print $2}')
helm package -d /tmp $ROOT_DIR/../dep/ric-common/Common-Template/helm/ric-common
cp /tmp/ric-common-$COMMON_CHART_VERSION.tgz $HELM_HOME/repository/local/

AUX_COMMON_CHART_VERSION=$(cat $ROOT_DIR/../dep/ric-common/Common-Template/helm/aux-common/Chart.yaml | grep version | awk '{print $2}')
helm package -d /tmp $ROOT_DIR/../dep/ric-common/Common-Template/helm/aux-common
cp /tmp/aux-common-$COMMON_CHART_VERSION.tgz $HELM_HOME/repository/local/



helm repo index $HELM_HOME/repository/local/


# Make sure that helm local repo is added
helm repo remove local
helm repo add local http://127.0.0.1:8879/charts


# Remove it/dep charts
rm -rf ../dep
