# shellcheck shell=dash

# Default
___x_cmd_cfgy_inner_get_(){
    local profile="$1"
    local prefix="$2"
    local key="$3"

    if [ -z "$profile" ]; then
        ! ___x_cmd_cfgy_inner_get_value_ "$prefix" CURRENT_profile || profile="$x_"
    fi

    x_=
    ___x_cmd_cfgy_inner_get_main_ "$prefix" "${profile:-X}" "$key"
}

___x_cmd_cfgy_inner_get_main_(){
    local prefix="$1"
    local profile="$2"
    local key="$3"

    ___x_cmd_cfgy_inner_get_profile_idx_ "$prefix" "$profile" || return $?
    ___x_cmd_cfgy_inner_get_with_profile_idx_ "$prefix" "$x_" "$key"
}

___x_cmd_cfgy_inner_get_profile_idx_(){
    [ $# -eq 2 ] || {
        cfgy:error "Invalid argument"
        return 64
    }

    local prefix="$1"
    local profile="$2"

    x_=; ___x_cmd_envy_get___list_id_ "${prefix}" name "$profile" || {
        cfgy:debug "Profile unfound from ${prefix}_L ==> ${profile}, x_='$x_'"
        return 1
    }
}

___x_cmd_cfgy_inner_get_with_profile_idx_(){
    local prefix="$1"
    local profile_idx="$2"
    local key="$3"
    x_=
    ___x_cmd_cfgy_inner_get_value_ "$prefix" "${profile_idx}_${key}"
}

___x_cmd_cfgy_inner_get_value_(){
    local prefix="$1"
    local key="$2"

    local varname=${prefix}_${key}

    eval "
    [ \"\${${varname}+1}\" = 1 ] || return 1
    x_=\"\$${varname}\"
    "
}


