# shellcheck shell=dash

# $___X_CMD_HUB_DATA
# └── <username>
#     ├── accesskey
#     ├── data
#     ├── datakey
#     ├── encdata
#     └── keypair
# example:
#    ___x_cmd_hub_u_userdir_ <username> data => $___X_CMD_HUB_DATA/<username>/data
___x_cmd_hub_u_userdir_(){
    local username="$1"
    [ -n "$username" ] || M='Provide username' N=hub log:ret:64
    x_=

    if [ "$username" = "me" ]; then
        x_="$___X_CMD_HUB_DATA/me-${___X_CMD_HUB_LOCAL_PROFILE:-"X"}"
    else
        x_="$___X_CMD_HUB_DATA/${username}" || return
    fi

    hub:debug "user_dir => $* dir=$x_"
    ___x_cmd mkdirp "$x_"
}

# <username>:<remotefp> data        => <username>/data/<remotefp>
# <username>:<remotefp> encdata     => <username>/encdata/<remotefp>.enc
# <username>:<remotefp> datakey     => <username>/datakey/<remotefp>/filekey
___x_cmd_hub_u_remote2localfp(){
    local type="$1"
    local remotefp="$2"
    [ -n "$type" ]     || M='Provide type'     N=hub log:ret:64
    [ -n "$remotefp" ] || M='Provide remotefp' N=hub log:ret:64

    local username="${remotefp%%":"*}"
    local res=
    ___x_cmd ccmd 12h -- ___x_cmd hub account info -j | (
        ___x_cmd jo env .name
        if [ "$username" = "$name" ];then
            username="me"
        fi
        local x_= ; ___x_cmd_hub_u_userdir_ "$username" || return
        case "$type" in
            data)       res="$x_/data/${remotefp#*:}" || return ;;
            encdata)    res="$x_/encdata/${remotefp#*:}.enc" || return ;;
            datakey)    res="$x_/datakey/${remotefp#*:}/filekey" || return;;
            *)          ___x_cmd_ui_tf false "Unknown type=$type" >&2 ; return 1 ;;
        esac

        ___x_cmd mkdirp "${res%/*}"
        printf "%s" "$res"
    )
}
