#! /bin/sh

___X_CMD_ROOT="${___X_CMD_ROOT:-$HOME/.x-cmd.root}"

## [BEGIN] Just in case
___X_CMD_ROOTBIN_X_XINVOKECOUNTER="${___X_CMD_ROOTBIN_X_XINVOKECOUNTER:-0}"
___X_CMD_ROOTBIN_X_XINVOKECOUNTER="$((___X_CMD_ROOTBIN_X_XINVOKECOUNTER + 1))"

___X_CMD_ROOTBIN_X_XINVOKECOUNTER_MAX=500

[ "$___X_CMD_ROOTBIN_X_XINVOKECOUNTER" -lt "$___X_CMD_ROOTBIN_X_XINVOKECOUNTER_MAX" ] || {
    printf "%s\n" "- E|x: too many recusive invocations in file => $___X_CMD_ROOT/bin/x" >&2
    exit 1
}
## [END]

___x_cmd_x_bin_xbin___unpack_and_bootinstall(){
    local srctgz="$1"
    local srcdir="$2"
    command mkdir -p "$srcdir"                  || return 1
    command tar -zxf "$srctgz" -C "$srcdir"     || return 1
    ___x_cmd_x_bin_xbin___bootinstall "$srcdir" || return 1
}
___x_cmd_x_bin_xbin___bootinstall(){
    local srcdir="$1"
    command mkdir -p "$___X_CMD_ROOT/v"                 || return 1
    command ln -sf "$srcdir" "$___X_CMD_ROOT/v/latest"  || return 1

    ___X_CMD_ROOT="$___X_CMD_ROOT"          \
    ___X_CMD_VERSION=latest                 \
    ___X_CMD_ROOT_CODE=""                   \
    ___X_CMD_ROOT_MOD=""                    \
    ___X_CMD_RUNMODE="$___X_CMD_RUNMODE"    \
    ___X_CMD_ADVISE_DISABLE=1               \
    sh -c '
        . "$___X_CMD_ROOT/v/$___X_CMD_VERSION/X";
        ___x_cmd boot init "$___X_CMD_ROOT" "$___X_CMD_VERSION";
    ' || {
        printf "%s\n" "I|x: No x-cmd setup in home folder -> $HOME/.x-cmd.root/X" >&2
        printf "%s\n" 'I|x: You could try -> eval "$(curl https://get.x-cmd.com)"' >&2
        return 1
    }

    . "$___X_CMD_ROOT/X";

    printf "%s\n" "I|x: You can now use x in the newly open posix shells."
    printf "%s\n" "I|x: Notice, if you want to use x in your current shell, please run the following command:  source ~/.x-cmd.root/X"
}

___x_cmd_x_bin_xbin(){
    case "$0" in
        */mod/x-cmd/lib/bin/x)
            ___X_CMD_ROOT_CODE="${0%/mod/x-cmd/lib/bin/x}"
            . "$___X_CMD_ROOT_CODE/X"
            ;;
        *)
            # ___X_CMD_ROOT_CODE="$___X_CMD_"
            # echo "error heree $0"
            # return 1

            if [ -f "$HOME/.x-cmd.root/X" ]; then
                . "$HOME/.x-cmd.root/X"
            elif [ -f "/usr/share/x-cmd/v/latest/X"         ]; then
                ___x_cmd_x_bin_xbin___bootinstall               "/usr/share/x-cmd/v/latest"
            elif [ -f "/usr/share/x-cmd/v/latest.tgz"       ]; then
                ___x_cmd_x_bin_xbin___unpack_and_bootinstall    "/usr/share/x-cmd/v/latest.tgz"         "/usr/share/x-cmd/v/latest"
            elif [ -f "/opt/homebrew/Cellar/x-cmd/latest/X"         ]; then
                ___x_cmd_x_bin_xbin___bootinstall               "/opt/homebrew/Cellar/x-cmd/latest"
            else
                printf "%s\n" "E|x: No x-cmd installation found in $HOME/.x-cmd.root or /usr/share/x-cmd" >&2
                printf "%s\n" 'I|x: You could try -> eval "$(curl https://get.x-cmd.com)"' >&2
                return 1
            fi
            ;;
    esac
}

___x_cmd_x_bin_xbin || exit $?

___X_CMD_XBINEXP_EXIT=1     # TODO: temporary fix, will replace in ___X_CMDEXE_SHELL= in the future

___x_cmd "$@"
