# shellcheck shell=sh disable=SC2039,SC3043,SC2120,SC2154
# reference:   https://open.feishu.cn/document/ukTMukTMukTM/ucTM5YjL3ETO24yNxkjN#8b0f2a1b

xrc param http ui
___x_cmd log init feishu
xrc:mod:lib  feishu      util type abot/_index bot/_index cfg login react listen group/_index

___x_cmd_feishu___main(){
    arg:init feishu
    local ___X_CMD_FEISHU_LOCAL_CONFIG="${___X_CMD_FEISHU_LOCAL_CONFIG}"
    local ___X_CMD_FEISHU_LOCAL_PROFILE="${___X_CMD_FEISHU_LOCAL_PROFILE}"
    ___X_CMD_FEISHU_TMP="$___X_CMD_ROOT_TMP/feishu"
    ___X_CMD_FEISHU_BOT_PATH="$___X_CMD_ROOT_DATA/feishu/abot"
    ___X_CMD_FEISHU_BOT_DATA_DIR="$___X_CMD_FEISHU_BOT_PATH/data"
    ___x_cmd mkdirp "${___X_CMD_FEISHU_TMP}" "${___X_CMD_FEISHU_BOT_DATA_DIR}"

    while [ $# -gt 0 ]; do
        case "${1}" in
            --config)       ___X_CMD_FEISHU_LOCAL_CONFIG="$2";        arg:2:shift ;;
            @*)             ___X_CMD_FEISHU_LOCAL_CONFIG="${1#@}";    shift       ;;
            --profile)      ___X_CMD_FEISHU_LOCAL_PROFILE="$2";       arg:2:shift ;;
            :*)             ___X_CMD_FEISHU_LOCAL_PROFILE="${1#:}";   shift       ;;
            *)              break;;
        esac
    done

    param:advise feishu
    param:subcmd ___x_cmd_feishu                              \
        abot            "app bot"                             \
        bot             "feishu bot"                          \
        listen          "listen"                              \
        login           "login to create bot"                  \
        parse           "parse msg"                           \
        group           "manage group"                        \
        react           "react"                               \
        --isready       "check feishu is ready"                \
        --cfg           "manage configuration for feishu"     \
        --cur           "current configuration for feishu"    \
        init            "Interactive UI init configuration"

    param:subcmd:try

    param:subcmd ___x_cmd_feishu_bot    \
        send            "send msg"

    param:subcmd:try
    param:run

    ___x_cmd_feishu _param_help_doc
    return 1
}

___x_cmd_feishu_help(){
    ___x_cmd help -m feishu "$@" >&2
}
