#!/bin/bash

INF_FILE="test.inf"

## new line char
#nl=$( echo -e "\n" )
#echo "nl: [${nl}]"

function escape_string () {
#   printf '%s' "${1}" | sed -e 's/[][\\^*+.$-]/\\\1/g'
#   printf '%s' "${1}" | sed -e 's/\([][\\^*+.$-`"]\)/\\\1/g' | sed -e "s/\([']\)/\\\1/g"
#   printf '%s' "${1}" | sed -e 's/\([][\\^*+.$-`"'\'']\)/\\\1/g'
#   printf '%s' "${1}" | sed -e 's/\([`"'\'']\)/\\\1/g'
#   printf '%s' "${1}" | sed -e 's/\([`"'\'']\)/\\\\1/g'
   printf '%s' "${1}" | sed -e 's/\([`"'\'']\)/'\\\\\''/g'
}

#echo $(escape_string "[ ' ] * + . $ \" ' \`")
#exit


var_name=""
while IFS= read -r s ; do
    echo "Line: [${s}]"
    if echo "${s}" | grep -E '^[^[:space:]]+:[[:space:]]*.*$' > /dev/null 2>&1 ; then
        var_name=$( echo "${s}" | sed -re 's|^([^[:space:]]+):[[:space:]]*.*$|\1|' )
#        var_val=$(  echo "${s}" | sed -re 's|^[^[:space:]]+:[[:space:]]*(.*)$|\1|' )
        s=$(  echo "${s}" | sed -re 's|^[^[:space:]]+:[[:space:]]*(.*)$|\1|' )
        s=$( escape_string "${s}" )
#        eval ${var_name}=\'${var_val}\'
        eval ${var_name}=\'${s}\'
#        echo "New VAR: [${var_name}] -> [${var_val}]"
        echo "New VAR: [${var_name}] -> [${s}]"
        var_val=""
        continue
    elif echo "${s}" | grep -E '^[[:space:]]+.*$' > /dev/null 2>&1 ; then
        if [ -z "${var_name}" ] ; then
            echo "DBG#1: Error!"
            continue
        fi
#        var_val=${var_val}\\\n$(  echo "${s}" | sed -re 's|^[[:space:]]+(.*)$|\1|' )
        s=$(  echo "${s}" | sed -re 's|^[[:space:]]+(.*)$|\1|' )
        s=$( escape_string "${s}" )
#        var_val=$( escape_string "${var_val}" )
        var_val=${var_val}\\\n${s}
        echo "Cont VAR: ${var_name} -> [${var_val}]"
        eval ${var_name}=\'${var_val}\'
        eval echo -e \"Final VAR: ${var_name} = [\${${var_name}}]\"
    fi
done < "${INF_FILE}"
