From 3ed6e5b8e28309cb51cb0b6b21542a0498ac0bfa Mon Sep 17 00:00:00 2001 From: fanyx Date: Wed, 28 Feb 2024 16:23:22 +0100 Subject: [PATCH] xif: complete command --- xif | 38 +++++++++++++++++++++++++++----------- 1 file changed, 27 insertions(+), 11 deletions(-) diff --git a/xif b/xif index 7e9a664..372e000 100755 --- a/xif +++ b/xif @@ -1,37 +1,53 @@ #!/bin/sh +# vim: set ts=4 sw=4 et: -[ -z "$@" ] && echo "xif: empty search term" && exit 1 +command -v fzf >/dev/null || sudo xbps-install -S fzf + +[ -z "$*" ] && echo "xif: empty search term" && exit 1 filter='/^.[i*]. /d' filter1='s/^...\? //' filter2='s/-[^- ]* / /' -# when available, use xrs(1) -# fallback to xbps-query -Rs XRS="xbps-query -Rs" command -v xrs >/dev/null && XRS="xrs" -# when available, use xi(1) -# fallback to xbps-install XI="xbps-install" command -v xi >/dev/null && XI="xi" +which_sudo() { + if [ "$(id -u)" = "0" ]; then + return + elif command -v sudo >/dev/null && sudo -l | grep -q -e ' ALL$' -e xbps-install; then + echo sudo + elif command -v doas >/dev/null && [ -f /etc/doas.conf ]; then + echo doas + else + echo su + fi +} + install() { - sudo $XI "$@" + echo "xif: $SUDO $XI $@" + echo + $SUDO $XI $@ } pkgs() { - $XRS "$@" | sed "$filter;$filter1;$filter2" | fzf --layout=reverse -m |\ + echo $@ | tr ' ' '\n' | xargs -i $XRS {} | uniq |\ + sed "$filter;$filter1;$filter2" | fzf --layout=reverse -m |\ cut -d' ' -f1 | tr '\n' ' ' | sed "s/ $//" } -PKGS="$(pkgs "$@")" -[ -z $PKGS ] && exit 130 +PKGS="$(pkgs $@)" +[ -z "$PKGS" ] && exit 130 + +SUDO=$(which_sudo) +install -S $PKGS -install -S "$PKGS" status=$? if [ $status -eq 16 ]; then install -u xbps && - install -S $(pkgs "$@") + install -S $PKGS else exit $status fi