# shellcheck shell=dash

___x_cmd_shortcut_get(){
    local field_bytype="word"
    local format='human' # simple
    while [ "$#" -gt 0 ]; do
        case "$1" in
            -h|--help)  ___x_cmd help -m shortcut get; return ;;
            --by)       field_bytype="$2"; [ -n "$field_bytype" ] || N=shortcut M="Not found \"--by\" value, [word|category|cmd|x-cmd]" log:ret:64
                        shift 2 ;;
            --format)   format="$2"; [ -n "$format" ] || N=shortcut M="Not found \"--format\" value, [human|simple]" log:ret:64
                        shift 2 ;;
            *)          val="$1"; shift ; break ;;
        esac
    done
    ___x_cmd_shortcut_get___inner "$val" "$field_bytype" "$format"
}

___x_cmd_shortcut_get___inner(){
    local cfgfp="$___X_CMD_SHORTCUT_CONFIG"
    [ -f "$cfgfp" ] || N=shortcut M="Not found config file" log:ret:1

    local x_=; ___x_cmd_shortcut___get_platform_ || return $?

    GET_VAL="$1" \
    GET_BYTYPE="$2" \
    GET_FORMAT="$3" \
    GET_CURPLATFORM="$x_" \
    ___x_cmd cawk \
        -f "$___X_CMD_ROOT_MOD/awk/lib/re.awk"              \
        -f "$___X_CMD_ROOT_MOD/awk/lib/sh.awk"              \
        -f "$___X_CMD_ROOT_MOD/awk/lib/j/json.awk"          \
        -f "$___X_CMD_ROOT_MOD/awk/lib/j/jiter.awk"         \
        -f "$___X_CMD_ROOT_MOD/awk/lib/j/jcp.awk"           \
        -f "$___X_CMD_ROOT_MOD/yml/lib/yutil.awk"           \
        -f "$___X_CMD_ROOT_MOD/yml/lib/ystr.awk"            \
        -f "$___X_CMD_ROOT_MOD/yml/lib/yparse.value.awk"    \
        -f "$___X_CMD_ROOT_MOD/yml/lib/yparse.json.awk"     \
        -f "$___X_CMD_ROOT_MOD/yml/lib/yparse.awk"          \
        -f "$___X_CMD_ROOT_MOD/shortcut/lib/awk/util.awk"   \
        -f "$___X_CMD_ROOT_MOD/shortcut/lib/awk/get.awk" < "$cfgfp"
}

alias shortcut:get:data:init='local curword=""; local curcmd=""; local curstatus=""; local curcategory=""; local curplatform; local curadvise=""'
alias shortcut:get:parse:data='read -r curword && read -r curcmd && read -r curstatus && read -r curcategory && read -r curplatform && read -r curadvise'

___x_cmd_shortcut_get___check_word(){
    local word="$1"
    shortcut:get:data:init
    ___x_cmd_shortcut_get --by word "$word" --format simple | {
        while shortcut:get:parse:data; do
            [ -z "$curcmd" ] || continue
        done
        [ -n "$curcmd" ]
    }
}
