#!/usr/bin/env bash

function parse_yaml {
   local prefix=$2
   local s='[[:space:]]*' w='[a-zA-Z0-9_]*' fs=$(echo @|tr @ '\034')
   sed -ne "s|^\($s\):|\1|" \
        -e "s|^\($s\)\($w\)$s:$s[\"']\(.*\)[\"']$s\$|\1$fs\2$fs\3|p" \
        -e "s|^\($s\)\($w\)$s:$s\(.*\)$s\$|\1$fs\2$fs\3|p"  $1 |
   awk -F$fs '{
      indent = length($1)/2;
      vname[indent] = $2;
      for (i in vname) {if (i > indent) {delete vname[i]}}
      if (length($3) > 0) {
         vn=""; for (i=0; i<indent; i++) {vn=(vn)(vname[i])("_")}
         printf("export %s%s%s=\"%s\"\n", "'config_$prefix'",vn, $2, $3);
      }
   }'
}

CWD=$(pwd)
WPLACE=$CWD/var/cache/container-orcherstration
COD=$CWD/vendor/gpupo/container-orchestration
COD_CONFIG=$CWD/.container-orchestration.yaml
touch $COD_CONFIG;
mkdir -pv $WPLACE;
parse_yaml $COD_CONFIG > $WPLACE/config.sh
source $WPLACE/config.sh;
cat ${COD}/build/${config_server_template}.yaml \
| sed s/config_server_domain/${config_server_domain}/ \
| sed s~config_server_namespace~${config_server_namespace}~g \
| sed s~config_version~${config_version}~g \
> $WPLACE/kubernetes.yaml;

printf "\n $WPLACE/kubernetes.yaml file builded...\n\n";

minikube start --cpus ${config_server_cpus} --memory ${config_server_memory} --mount --mount-string="${CWD}:/tmp/shared/app";

# If you can try mount with docker:docker owner
# minikube mount $PRD:/tmp/shared/app --9p-version=9p2000.L &

kubectl create -f $WPLACE/kubernetes.yaml
printf "# add to /etc/hosts:\n$(minikube ip) ${config_server_domain}\n\n"

#Change namespace:
kubectl config set-context $(kubectl config current-context) --namespace=${config_server_namespace}
