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

#Check for helm3
IS_HELM3=$(helm version -c --short|grep -e "^v3")

# 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
    if [ -z $IS_HELM3 ]
    then
      nohup helm serve >& /dev/null &
    else
      nohup helm servecm --port=8879 --context-path=/charts  --storage local >& /dev/null &
    fi
fi

# Check if servecm plugin is ready to serve request
command='curl --silent --output /dev/null  http://127.0.0.1:8879/charts'
for i in $(seq 1 5)
do $command && s=0 && break || s=$? && echo "Error connecting chartmuseum server. Retrying after 5s" && sleep 5;
done

if [ $s -gt 0 ]
then
        echo "Cmd to test chartmuseum failed with ($s): $command"
        exit $s
fi

# Package common templates and serve it using Helm local repo
if [ $IS_HELM3 ]
then 
  eval $(helm env |grep HELM_REPOSITORY_CACHE)
  HELM_LOCAL_REPO="${HELM_REPOSITORY_CACHE}/local/"
  mkdir -p $HELM_LOCAL_REPO
else 
  HELM_HOME=$(helm home)
  HELM_LOCAL_REPO="${HELM_HOME}/repository/local/"
fi

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

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

NONRTRIC_COMMON_CHART_VERSION=$(cat $ROOT_DIR/../ric-common/Common-Template/helm/nonrtric-common/Chart.yaml | grep version | awk '{print $2}')
helm package -d /tmp $ROOT_DIR/../ric-common/Common-Template/helm/nonrtric-common
cp /tmp/nonrtric-common-$NONRTRIC_COMMON_CHART_VERSION.tgz $HELM_LOCAL_REPO

helm repo index $HELM_LOCAL_REPO


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



