#!/usr/bin/env bash

# shellcheck shell=bash

# ``````````````````````````````````````````````````````````````````````````````
# Function name: set_config()
#
# Description:
#   Set config configuration.
#
# Usage:
#   set_config
#
# Examples:
#   set_config
#

function set_config() {

  # shellcheck disable=SC2034
  local _FUNCTION_ID="set_config"
  local _STATE=0

  # shellcheck disable=SC2034
  local _session_arg=("$@")
  local _session_key="${_session_arg[1]}"
  local _session_value="${_session_arg[*]:2}"

  # shellcheck disable=SC2154
  local _session_num="${#_variables_stack[@]}"
  local _acount=0
  local _bcount=0

  # shellcheck disable=SC2154
  for _svar in "${_variables_stack[@]}" ; do

    # shellcheck disable=SC2034
    _key_description=$(echo "$_svar" | awk -v FS="(;|;)" '{print $1}')
    # shellcheck disable=SC2034
    _key_values=$(echo "$_svar" | awk -v FS="(;|;)" '{print $2}')
    # shellcheck disable=SC2034
    _key_id=$(echo "$_svar" | awk -v FS="(;|;)" '{print $3}')
    # shellcheck disable=SC2034
    _key_var=$(echo "$_svar" | awk -v FS="(;|;)" '{print $4}')

    # For debug:
    # printf "%s , %s , %s , %s\n" \
    # "_session_key: $_session_key" \
    # "_key_description: $_key_description" \
    # "_key_values: $_key_values" \
    # "_key_id: $_key_id" \
    # "_key_var: $_key_var"

    if [[ "$_key_id" == "$_session_key" ]] ; then

      # shellcheck disable=SC2034
      _key_var="$_session_value"

      _variables_stack[$_acount]="${_key_description};${_key_values};${_key_id};${_key_var}"

    else

      _bcount=$((_bcount + 1))

    fi

    _acount=$((_acount + 1))

  done

  if [[ "$_session_num" -eq "$_bcount" ]] ; then

    printf "stdout: %s\\n" "unknown key"

  fi

  return $_STATE

}
