# shellcheck    shell=dash

___x_cmd_busybox_isimpl(){
    local cmd="$1"
    [ -f "$cmd" ]   || cmd="$(command -v "$cmd" 2>/dev/null)" \
                    || N=busybox M="cmd not found ==> $cmd" log:ret:64

    [ -L "$cmd" ]   || return 1
    [ "$(x readlink "$cmd")" = "/bin/busybox" ] || return 1
}


___X_CMD_BUSYBOX_VERSION=v0.0.1
___X_CMD_BUSYBOX_DOWLOAD_PATH="$___X_CMD_ROOT_DATA/busybox/binary/${___X_CMD_BUSYBOX_VERSION}"

___x_cmd_busybox___binary(){
    ___x_cmd os name_
    ___x_cmd os arch_
    local platform="$___X_CMD_OS_NAME_/$___X_CMD_OS_ARCH_"

    case "$platform" in
        win*)       x_=busybox.exe ;;
        linux*)     x_=busybox     ;;
        *)          N="busybox" M="Unsupported $platform" log:ret:1 ;;
    esac
}

___x_cmd_busybox_download(){
    local x_;
    ___x_cmd_busybox___binary || return
    local binary="$x_"
    local binaryfp="$___X_CMD_BUSYBOX_DOWLOAD_PATH/$binary"

    # download from x-cmd/busybox
    ___x_cmd ensurefp "$binaryfp"

    [ ! -f "$binaryfp" ] || return 0
    local url=
    if ___x_cmd websrc is cn; then
        url="https://gitee.com/x-cmd/busybox/raw/main/data/v0.0.1/$binary"
    else
        url="https://github.com/x-cmd/busybox/raw/main/data/v0.0.1/$binary"
    fi

    busybox:info --url $url "Download $binary"
    ___x_cmd curl -L --speed-time 5 --speed-limit 10 "$url" --output "$___X_CMD_BUSYBOX_DOWLOAD_PATH/$binary" || N="busybox" M="Download $binary failed" log:ret:1
    command chmod +x "$___X_CMD_BUSYBOX_DOWLOAD_PATH/$binary"
}

___x_cmd_busybox___which(){
    local x_
    ___x_cmd_busybox___which_ || return
    printf "%s\n" "$x_"
}

___x_cmd_busybox___which_(){
    ___x_cmd_busybox___binary
    local binary="$x_"

    x_="${___X_CMD_BUSYBOX_DOWLOAD_PATH}/$binary"
    [ ! -f "$x_" ] || return 0
    ___x_cmd_busybox_download
}
