#!/bin/bash

TOOLPACK_DIR="/lib/tb/toolpack"
TOOLPACK_SETUP_DIR="${TOOLPACK_DIR}/setup"
TOOLPACK_RELATIVE_CONFIG_PATH="service/config.txt"

print_toolpack_env() {
  echo "tb_setup_path:      $tb_setup_path"
  echo "oam_setup_path:     $oam_setup_path"
  echo "tb_setup_path_base: $tb_setup_path_base"
  echo "pkg_path:           $pkg_path"
  echo "tb_bin_path:        $tb_bin_path"
  echo "tb_version:         $tb_version"
  echo "tb_branch:          $tb_branch"
  echo "tb_major:           $tb_major"
  echo "tb_minor:           $tb_minor"
}

get_toolpack_env() {
config_file=""

####################################################
# Find the last modified toolpack with service/config.txt
####################################################
list_last_modified_gw_port_folder=`ls -Atd /lib/tb/toolpack/setup/* | sed -r '/^[^\/]+/d' | sed '/^$/d' | sed "s~\(${TOOLPACK_SETUP_DIR}[^:]*\):~\1~g"`
#IFS="\n"
while read -ra gw_dir; do
  config_backup_name="${gw_dir}/${TOOLPACK_RELATIVE_CONFIG_PATH}"
  config_is_present=`ls ${config_backup_name} 2> /dev/null`
  if [ -n "${config_is_present}" ]; then
    config_file=${config_backup_name}
    tb_setup_path_base=${gw_dir}
    break
  fi
done <<< "${list_last_modified_gw_port_folder}"

if [ -z "${config_file}" ]; then
  echo "Error : can't find Toolpack config file"
  exit 1
fi

####################################################
# Parse config_file to find "application =".../tboamapp_wd_cfg.ini"
####################################################
tboamapp_wd_cfg_file=`sed -n -r 's/^\s*application\s*=\s*(.*)\s*/\1/p' ${config_file}`

if [ -z ${tboamapp_wd_cfg_file} ]; then
  echo "Error : can't find tboamapp config file"
  exit 1
fi

tb_setup_path=`echo ${tboamapp_wd_cfg_file} | sed -r 's~(.*/apps/).*~\1~'`
oam_setup_path=`dirname ${tboamapp_wd_cfg_file}`

####################################################
# Parse tboamapp_wd_cfg.ini to find pkg_path
####################################################
PKG_PATH_VAR="TB_PKG_PATH"
APP_PATH_VAR="APPLICATION_PATH"
pkg_path=`sed -n -r "s/^\s*${PKG_PATH_VAR}\s*=\s*(.*)\s*/\1/p" ${tboamapp_wd_cfg_file}`
oam_app_path=`sed -n -r "s/^\s*${APP_PATH_VAR}\s*=\s*(.*)\s*/\1/p" ${tboamapp_wd_cfg_file}`

if [ -z ${pkg_path} -o -z ${oam_app_path} ]; then
  echo "Error : can't parse tboamapp config file"
  exit 1
fi

tb_bin_path=`echo ${oam_app_path} | sed -r "s~\@\{${PKG_PATH_VAR}\}(.*)~${pkg_path}\1~"`
tb_bin_path=`dirname ${tb_bin_path}`

if [ -z ${tb_bin_path} ]; then
  echo "Error : invalid values in tboamapp config file"
  exit 1
fi

tb_version=`basename ${pkg_path}`
tb_branch=`echo ${tb_version} | sed -r "s/([0-9]{1,3})\.[0-9]{1,3}\.[0-9]{1,3}/\1/"`
tb_major=`echo ${tb_version} | sed -r "s/[0-9]{1,3}\.([0-9]{1,3})\.[0-9]{1,3}/\1/"`
tb_minor=`echo ${tb_version} | sed -r "s/[0-9]{1,3}\.[0-9]{1,3}\.([0-9]{1,3})/\1/"`

if [ -z ${tb_version} ]; then
  echo "Error : invalid values in tboamapp config file"
  exit 1
fi
}
