# shellcheck shell=dash

___x_cmd log init helpapp

___x_cmd_helpapp___main(){
    if [ 0 -eq "$#" ]; then
        ___x_cmd_helpapp___main_run
        return
    fi

    local op="$1";      shift
    case "$op" in
        -h|--help)      M='helpapp' help:ret:0 ;;
        -g|--generate)  ___x_cmd_helpapp_gen_help "$@" ;;

        --show)         ___x_cmd_x_cmd_help___show "$@" ;;
        -m)             ___x_cmd_helpapp_gen_help_mod "$@" ;;
        -c)             ___x_cmd_helpapp_context "$@" ;;

        *)              ___x_cmd_helpapp___main_run "$op" "$@" ;;
    esac
}

# Cannot create repo in gitee named help
___x_cmd_helpapp___main_run(){
    ___x_cmd advise gen_x_advise
    [ -f "$___X_CMD_ADVISE_MAN_CACHE_X_ADVISE_JSO" ] || N=help M="Not found x advise jso file[$___X_CMD_ADVISE_MAN_CACHE_X_ADVISE_JSO]" log:ret:1
    if ___x_cmd_is_stdout2tty && ___x_cmd_runmode_allow_chatty; then
        ___x_cmd_helpapp_app "$@"
    else
        ___x_cmd_helpapp_gen_help "$___X_CMD_ADVISE_MAN_CACHE_X_ADVISE_JSO" "$@"
    fi
}

___x_cmd_helpapp___color_init_(){
    # TODO: use ___x_cmd __termcolor_

    ___X_CMD_HELP_NAME_COLOR='\033[36m'
    # ___X_CMD_HELP_DESC_COLOR='\033[32m'
    ___X_CMD_HELP_TITLE_COLOR='\033[93m'
    ___X_CMD_HELP_RULE_COLOR='\033[90m'
    ___X_CMD_HELP_CMD_COLOR='\033[32m'
    # ___X_CMD_HELP_OTHER_NAME_COLOR='\033[36m'
    ___X_CMD_HELP_OTHER_DESC_COLOR='\033[35m'
    # ___X_CMD_HELP_TLDR_CMD_COLOR='\033[36m'
    ___X_CMD_HELP_TLDR_DESC_COLOR='\033[36m'
}

___x_cmd_helpapp___color_init_

___x_cmd_x_cmd_help___show(){
    if [ $# -eq 0 ]; then
        [ -n "$X_help_cmd" ] || {
            helpapp:error "No help command provided."
            return 1
        }
        eval "$X_help_cmd"
    else
        "$@"
    fi
}
