

# TODO: nohelp

___X_CMD_NANORC_X_CMD_RECOM="
################### X-CMD BEGIN ######################
set autoindent
set nonewlines
set locking
set linenumbers

bind ^z undo main
bind ^y redo main
bind ^f whereis main

bind F1 exit main
bind F2 savefile main
bind F3 findnext main
################### X-CMD END  ######################
"

___X_CMD_NANORC_SETUP="include $___X_CMD_NANORC_DATA/rc/*.nanorc    # boot up x-cmd."

___x_cmd_nanorc_url_(){
    x_="https://codeberg.org/x-cmd-sourcecode/nanorc/archive/master.tar.gz"
}

___x_cmd_nanorc_setup(){
    if [ -d "$___X_CMD_NANORC_DATA/rc" ]; then
        nanorc:info --tips-to-update 'x nanorc update' "RC Folders already existed."
    else
        ___x_cmd_nanorc_update || {
            nanorc:info "Abort setup because fail to update."
            return $?
        }
    fi

    ___x_cmd_nanorc_tdown || true

    ___x_cmd boot initrcfile1 "$___X_CMD_NANORC_SETUP"     "$___X_CMD_NANORC_FP"

    local x_
    ___x_cmd rat_ "$___X_CMD_NANORC_FP"

    ___x_cmd fprintf "$___X_CMD_NANORC_FP" "%s\n" "$___X_CMD_NANORC_X_CMD_RECOM" "$x_"
}

___x_cmd_nanorc_tdown(){
    local x_
    ___x_cmd rat_ "$___X_CMD_NANORC_FP"

    local ignore=0
    local content=""
    while read -r line; do
        case "$line" in
            "###"*" X-CMD BEGIN "*)     ignore=1  ; continue ;;
            "###"*" X-CMD END "*)       ignore="" ; continue ;;
        esac

        [ -z "$ignore" ] || continue

        case "$line" in
            *"# boot up x-cmd"*)        ;;
            *)                          content="${content}${line}${___X_CMD_UNSEENCHAR_NL}"
        esac
    done <<A
$x_
A

    ___x_cmd fprintf "$___X_CMD_NANORC_FP" "%s\n" "$content"

    nanorc:info "Teardown the rc instialzation in $___X_CMD_NANORC_FP successfully."
}

___x_cmd_nanorc_update(){
    nanorc:info "Updating data."

    local x_; ___x_cmd_nanorc_url_

    [ ! -d "$___X_CMD_NANORC_DATA/rctmp" ] || ___x_cmd rmrf "$___X_CMD_NANORC_DATA/rctmp"
    ___x_cmd mkdirp "$___X_CMD_NANORC_DATA/rctmp"

    ___x_cmd curl -o "$___X_CMD_NANORC_DATA/rctmp/master.tar.gz" "$x_"
    (
        ___x_cmd_cmds_cd "$___X_CMD_NANORC_DATA/rctmp"
        ___x_cmd uz master.tar.gz
    ) || {
        ___x_cmd rmrf "$___X_CMD_NANORC_DATA/rctmp"
        return 1
    }

    ___x_cmd rmrf "$___X_CMD_NANORC_DATA/rc"
    ___x_cmd_cmds mv "$___X_CMD_NANORC_DATA/rctmp/nanorc" "$___X_CMD_NANORC_DATA/rc"
    ___x_cmd rmrf "$___X_CMD_NANORC_DATA/rctmp"

    nanorc:info "nanorc updated sucessfully."
}
