
# cfgs

# x hub cfgs pull
# x hub cfgs push

# x hub cfgs backup

# x hub cfgs sync -> first pull, check if there any conflict ?

___x_cmd_hub_cfgb(){
    :
}

___x_cmd_hub_cfgb_create(){
    local tmpfp="$___X_CMD_ROOT_TMP/hub/cfgb/enc/$$"    #

    ___x_cmd_hub_cfgb_export "$tmpfp"

    ___x_cmd rmrf "$tmpfp"
}

___x_cmd_hub_cfgb_recover(){
    local tmpfp="$___X_CMD_ROOT_TMP/hub/cfgb/enc/$$"

    # download to tmpfp

    ___x_cmd_cfg_import "$tmpfp"
}

xrc cfgy

___x_cmd_cfg_export(){
    local fp="$1"

    local x_
    ___x_cmd tmp mkdir_ --prefix x_cfg_backup
    local local_tmpdir="$x_"
    ___x_cmd mkdirp "$x_/home"

    local PWD
    local OLDPWD
    ___x_cmd_cd0 "$x_"

    ___x_cmd rmrf x-cmd-cfg
    ___x_cmd cp -rf "$___X_CMD_ROOT_CFG" x-cmd-cfg

    ___x_cmd_hub_cfgb_lshome | {
        local p
        local dirfolder
        while read -r p; do
            [ -e "$HOME/$p" ] || continue
            case "$p" in
                */*)        dirfolder="${p%/*}"
                            ___x_cmd mkdirp "$HOME/$dirfolder"
                            ___x_cmd cp -rf "$HOME/$p" "x-cmd-cfg/home/$p"
                            ;;
                *)          ___x_cmd cp -rf "$HOME/$p" "x-cmd-cfg/home"
            esac
        done
    }

    ___x_cmd zuz z "data.tar.xz"  x-cmd-cfg home

    ___x_cmd rmrf "$local_tmpdir"
}

___x_cmd_cfg_import(){
    :

    # If there is conflict . the importfilename should be   xxx.cfg.conflict.bak
}

___x_cmd_hub_cfgb_lshome(){
    local homecfg
    while read -r homecfg; do
        [ -n "$homecfg" ] || continue
        printf "%s\n" "$homecfg"
    done <<A
$___X_CMD_HUB_CFGB_USERCONFIG
A
}

# Actually, there is more.
___X_CMD_HUB_CFGB_MOD='gh
gt
cb
fjo
gitea
bwh
cf
openai
gemini
deepseek
moonshot
zhipu
qywx
dingtalk
telegram
'

___X_CMD_HUB_CFGB_USERCONFIG='
.ssh/config
.ssh/config.d
.gitconfig
.local/config
'

___x_cmd_hub_cfgb_ls(){
    local mod
    printf "x-cmd:\n"
    while read -r mod; do
        [ -n "$mod" ] || continue
        printf "  - %s\n" "$mod"
    done <<A
$___X_CMD_HUB_CFGB_MOD
A


    local homecfg
    printf "home:\n"
    while read -r homecfg; do
        [ -n "$homecfg" ] || continue
        printf "  - %s\n" "$homecfg"
    done <<A
$___X_CMD_HUB_CFGB_USERCONFIG
A
}
