diff options
Diffstat (limited to '.graveyard/punani/bin')
-rwxr-xr-x | .graveyard/punani/bin/punani | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/.graveyard/punani/bin/punani b/.graveyard/punani/bin/punani new file mode 100755 index 00000000..23ba5e00 --- /dev/null +++ b/.graveyard/punani/bin/punani @@ -0,0 +1,70 @@ +#! /bin/sh +set -euf + +PUNANI_HOST="${PUNANI_HOST-http://euer.krebsco.de:9111}" +ACTION="$1"; shift +PKGS="$*" + +## find package manager +if ! :; then : # dummy case, so the rest has a common format + +elif for PACKER_CMD in aptitude apt-get + do type $PACKER_CMD 2>/dev/null 1>&2 && break; done; then + INSTALL_PARAM='-y install' + REMOVE_PARAM='-y remove' + +elif for PACKER_CMD in bauerbill packer yaourt pacman + do type $PACKER_CMD 2>/dev/null 1>&2 && break; done; then + INSTALL_PARAM='--noconfirm -S --needed' + REMOVE_PARAM='-Rcs' + +elif for PACKER_CMD in yum + do type $PACKER_CMD 2>/dev/null 1>&2 && break; done; then + INSTALL_PARAM='-y install' + REMOVE_PARAM='-y remove' + +elif for PACKER_CMD in brew + do type $PACKER_CMD 2>/dev/null 1>&2 && break; done; then + INSTALL_PARAM='install' + REMOVE_PARAM='remove' + + + +else + echo "Error 2: no known package manager found; no punani for you!" >&2 + exit 23 +fi + +## find package name +if test -n "$PKGS"; then + for PKG in $PKGS; do + RES="`wget -O- $PUNANI_HOST/$PACKER_CMD/$PKG 2>/dev/null || :`" + if [ ! "$RES" ]; then + echo "Error 2: could not resolve '$PKG'; no punani for you!" >&2 + exit 23 + fi + RESOLVED="${RESOLVED+$RESOLVED }$RES" + done +else + echo "Error 1: no PACKAGE specified." >&2 + ACTION="usage" +fi + +## dispatch +case "$ACTION" in + install) + set -x + for PKG in $RESOLVED; do + sudo $PACKER_CMD $INSTALL_PARAM $PKG || echo "Cannot install $PKG!" + done + ;; + remove) + set -x + for PKG in $RESOLVED; do + sudo $PACKER_CMD $REMOVE_PARAM $PKG || echo "Cannot remove $PKG!" + done + ;; + *) + echo "usage: `basename $0` (install|remove) PACKAGE..." + exit 23 +esac |