# shellcheck shell=dash

___x_cmd log init busybox
xrc:mod:lib     busybox     util

___x_cmd_busybox___main(){
    [ "$#" -gt 0 ]  || set -- --help
    local op="$1"; shift
    case "$op" in
        isimpl)     ___x_cmd_busybox_isimpl         "$@" ;;
        scratch)    ___x_cmd_busybox_scratch        "$@" ;;

        --which)    ___x_cmd_busybox___which        "$@" ;;
        --exec|--)  ___x_cmd_busybox___exec         "$@" ;;
        *)          ___x_cmd_busybox___exec  "$op"  "$@" ;;
    esac
}

___x_cmd_busybox_init(){
    local tgt="${1:-$HOME/.x-cmd/.busybox}"
    x rmrf "$tgt"
    x mkdirp "$tgt"
    "$___X_CMD_BUSYBOX_BINPATH" --install "$tgt"
    PATH="$tgt:$PATH"
}

___x_cmd_busybox_fini()(
    local src="${1:-$HOME/.x-cmd/.busybox}"
    cd "$src" || return
    "$___X_CMD_BUSYBOX_BINPATH" --list-full | while read -r line; do
        [ -L "$line" ] || continue
        rm "$line"
    done
)


___x_cmd_busybox___exec(){
    if ___x_cmd_hascmd busybox; then
        ___x_cmd_cmds busybox "$@"
    else
        local x_; ___x_cmd_busybox___which_ || return 1
        local busyboxpath="$x_"
        [ -f "$busyboxpath" ] || N="busybox" M="not found [file=$busyboxpath]" log:ret:1
        "$busyboxpath" "$@"
    fi
}
