#!/usr/bin/env bash
# to be included by install.sh

# Deconstruct a given path string, applies bash expansion and remove all
# remaining relative fragments (e.g. "." or "..").
# Writes the result in the two given variable names, first is the portion
# with the existing path and the second contains the structure relative to the
# existing path, that'd have to be created.
# usage:
#   sanitize_path "~/some/path/string" "EXISTING_VAR_NAME" "REL_NEW_PATH_NAME"
sanitize_path() {
  # apply bash expansion
  eval _path=$1

  _existing_path_var=$2
  _rel_new_segment_var=$3

  _new_segment=""
  _chk=1
  _test_cmd='test -d "$_path" -a -n "$_path"'

  $(eval $_test_cmd) && _chk=0

  while [ $_chk -ne 0 ] ; do
    # path doesn't exist, split it up
    _segment="$(basename $_path)/$_segment"
    _path="$(dirname $_path)"

    $(eval $_test_cmd) && _chk=0
  done

  # remove relative fragments
  _path="$(realpath $_path)/"

  log_dbg "pt1 - existing path: $_path"
  log_dbg "pt2 - new path: $_segment"

  eval "$_existing_path_var=\"$_path\""
  eval "$_rel_new_segment_var=\"$_segment\""
}
