# shellcheck shell=dash disable=1090

___X_CMD_CFGY_LOAD_LOCAL=--local


# shellcheck disable=SC2142
# alias cfgy:load:local='eval "$(ARG_LOCAL=--local ___x_cmd_cfgy_obj___loadinner "$@")"'
___x_cmd_cfgy_obj_load(){
    local X_help_cmd="${X_help_cmd:-x help -m cfgy obj --load}"; help:arg:parse
    local x_=;  ___x_cmd_cfgy_obj___loadinner_ "$@" || return $?
    . "$x_"
}

___x_cmd_cfgy_obj_reload(){
    ___x_cmd_cfgy_obj_unload
    # TODO: Reload the current config filepath, not the default filepath
    ___x_cmd_cfgy_obj_load "$@"
}

___x_cmd_cfgy_obj_unload(){
    eval "
        eval \"\$${___X_CMD_CFGY_OBJ_PREFIX}_BACKUP\"
        unset \"${___X_CMD_CFGY_OBJ_PREFIX}_BACKUP\"
    "
}

# # Issue: https://github.com/x-bash/cfgy/issues/6
# # ___X_CMD_CFGY_OBJ_ENABLE_CACHE=1
___x_cmd_cfgy_obj___loadinner_(){
    local X_envy_compile_local=
    local X_envy_compile_backup=
    case "$1" in
        --local)    shift;  X_envy_compile_local=enable;    X_envy_compile_backup=disable   ;;
    esac

    local config="$1"
    config="${___X_CMD_CFGY_OBJ_CURRENT_CONFIG:-"$___X_CMD_CFGY_OBJ_DEFAULT_CONFIG"}"
    [ -f "$config" ] || N=cfgy M="Not found config file" log:ret:64

    X_envy_compile_kp="1.profile" \
    X_envy_compile_override="enable"   \
    X_envy_compile_perfix="$___X_CMD_CFGY_OBJ_PREFIX" \
    X_envy_compile_local="${X_envy_compile_local:-disable}"      \
    X_envy_compile_backup="${X_envy_compile_backup:-enable}"   \
    ___x_cmd_envy_getrc_ "$config" || return $?
}

___x_cmd_cfgy_obj_parse(){
    local x_=;  ___x_cmd_cfgy_obj___loadinner_ "$@" || return $?
    ___x_cmd rat "$x_"
}
