#!/usr/bin/bash
# pkglayer combined shim. installed at /usr/lib/pkglayer/bin/<pm> for every supported PM.
# resolution order:
#   1) if user has a per-container shim (~/.local/bin/<pm>), use it (sudo drops to user first)
#   2) if a real system binary exists in /usr/bin or /bin, exec it (host's own pm)
#   3) prompt to install via pkglayer

NAME="$(basename "$0")"

if [[ $EUID -eq 0 && -n "${SUDO_USER:-}" ]]; then
    REAL_USER="$SUDO_USER"
    REAL_HOME=$(getent passwd "$SUDO_USER" | cut -d: -f6)
else
    REAL_USER="${USER:-$(id -un)}"
    REAL_HOME="$HOME"
fi

USER_SHIM="$REAL_HOME/.local/bin/$NAME"
if [[ -x "$USER_SHIM" && "$USER_SHIM" != "$0" ]]; then
    if [[ $EUID -eq 0 && -n "${SUDO_USER:-}" ]]; then
        exec sudo -u "$SUDO_USER" "$USER_SHIM" "$@"
    fi
    exec "$USER_SHIM" "$@"
fi

# host's own pm at standard locations wins over a placeholder prompt
for p in /usr/bin/"$NAME" /bin/"$NAME" /usr/sbin/"$NAME"; do
    if [[ -x "$p" && "$(readlink -f "$p")" != "$(readlink -f "$0")" ]]; then
        exec "$p" "$@"
    fi
done

if command -v gum >/dev/null 2>&1; then
    if gum confirm "$NAME is not installed. install it with pkglayer?"; then
        exec adjust pkglayer
    fi
else
    read -rp "$NAME is not installed. run pkglayer to install? [y/N] " ans
    case "$ans" in y|Y|yes) exec adjust pkglayer ;; esac
fi
exit 1
