From 3877e5d8221d42811d376ddb560552684d34f5cc Mon Sep 17 00:00:00 2001 From: EUcancER Date: Thu, 17 Nov 2011 11:16:48 +0100 Subject: //punani: rm old punani, tightnani->punani --- punani/bin/punani | 323 +++++++++--------------------------------------------- 1 file changed, 53 insertions(+), 270 deletions(-) (limited to 'punani/bin') diff --git a/punani/bin/punani b/punani/bin/punani index 058331f1..8caf669e 100755 --- a/punani/bin/punani +++ b/punani/bin/punani @@ -1,276 +1,59 @@ -#! /bin/sh -# -# punani - filesystem scienteer -# -# Engineering Operations -# -E -i spec insert a package to the target filesystem -# -E -r spec remove a package -# +#!/bin/bash set -euf -godmode() { - if test "${nosudo-false}" != true -a `id -u` != 0; then - echo "!! we require god mode..." >&2 - exec sudo "$0" "$@" - exit 23 # go to hell - fi -} -# return the 'system' variable -# currently be: -# arch-like -# debian-like -guess_system() -{ - if [ -f "/etc/arch-release" ] ;then - system="${system+$system, }arch-like" - fi - if [ -f "/etc/lsb-release" -o -f "/etc/debian_version" ] ;then - system="${system+$system, }debian-like" +if [ $# -ne 2 ];then + echo "usage: `basename $0` (install|remove) PACKAGE" + exit 23 +fi + +PACKERS="yum!-y install remove +brew install remove +pacman!--noconfirm -S!--needed -Rcs +bauerbill!--noconfirm -S!--needed -Rcs +yaourt!--noconfirm -S!--needed -Rcs +packer!--noconfirm -S!--needed -Rcs +apt-get!--yes install remove +aptitude!--yes install remove" + +OIFS=$IFS +PACKER= +IFS=' +' + +TIGHTNANI_HOST="http://euer.krebsco.de:9111" +# Find suitable packer +for PACKER_LINE in $PACKERS; do + TRY_PACKER_CMD="$(echo "$PACKER_LINE" | cut -d ' ' -f 1)" + TRY_PACKER="$(echo "$TRY_PACKER_CMD" | cut -d '!' -f 1)" + if which $TRY_PACKER &>/dev/null; then + PACKER=$TRY_PACKER + PACKER_CMD="$(echo "$TRY_PACKER_CMD" | tr "!" " ")" + echo "you got $PACKER" + INSTALL_PARAM="$(echo "$PACKER_LINE" | cut -d ' ' -f 2 | tr "!" " ")" + REMOVE_PARAM="$(echo "$PACKER_LINE" | cut -d ' ' -f 3 | tr "!" " ")" fi - -} - -arch_aur_helper() -{ - # pacman is the last fallback helper - manager="yaourt clyde packer bauerbill tupac pacaur paktahn pbfetch aurget aurora cower powaur pacman" - for i in $manager;do - mgr=`which $i` - if [ "$mgr" ] ;then - echo $mgr - return 0 - fi - done - echo "!! no helper found, this should never happen(tm)." - return 1 -} - -handle_system () { - case "$system" in - (*arch-like*) - # dryrun - # TODO dryrun not dry enough for aur helper - if [ "${dryrun-}" ];then - pacman () { echo "pacman $@" ; } - pkgfile () { echo "pkgfile $@"; } - yaourt () { echo "yaourt $@" ; } - fi - - # get dependencies : - # we need pkgfile - if ! [ `which pkgfile` ] ; then - pacman -S --needed --noconfirm pkgtools - pkgfile -u - fi - punani_Scientist_update() { - pacman -Sy - pkgtool -u - } - punani_Scientist_search() { - pkgfile -s -b $1 - if [ "${hard-}" ] ; then - mgr=`arch_aur_helper` - $mgr -Ss $1 - fi - - } - - punani_Engineer_insert() { - # punani under archlinux first tries to load the packages with the given file name - # it needs pkgfile for that - # - # when trying harder it tries to load the package with the given name directly via yaourt - echo "** trying to find package with given file" - pkgs=$(pkgfile -s -b -r $1 | tr "\n" "|" ) - if [ "$pkgs" ];then - echo "** found one or more packages matching, skip the ones you do not need!" - OLDIFS=$IFS - IFS='|' - for to_install in $pkgs;do - if pacman -S --needed "$to_install"; then - echo "++ finished" - fi - done - IFS=$OLDIFS - else - echo "!! nothing found in base repos" - if [ "${hard-}" ] ; then - echo "** trying harder" - echo "** trying yaourt directly with given package" - mgr=`arch_aur_helper` - if $mgr -S $1 ;then - echo "++ finished" - return 0 - else - echo "!! giving up...i am sorry" - return 1 - fi - echo - else - echo "?? When in doubt try $0 -h -Ei $1 " - fi - fi - } - punani_Engineer_remove() { - pacman -Rcs "`pacman -Ql | grep $1$ | awk '{print $1}'`" - if [ "${hard-}" ] ; then - echo "** trying harder" - echo "** directly delete given package name" - pacman -Rcs "$1" - fi - } +done +IFS=$OIFS +if [ ! "$PACKER" ];then + echo "Could not find a supported packer for you, bailing out!" + exit 23 +fi + + +# find the package name +PKG="$2" +RESOLVED=`wget -O- $TIGHTNANI_HOST/$PACKER/$PKG 2>/dev/null` +if [ ! "$RESOLVED" ];then + echo "Could not resolve your requested package, bailing out!" + exit 23 +fi +case "$1" in + install) + exec $PACKER_CMD $INSTALL_PARAM $RESOLVED ;; - (*debian-like*) - #if [ "${dryrun-}" ]; then - # apt-file () { echo $@; } - # apt-get () { echo $@; } - #fi - if ! which apt-file; then - echo "** installing dependencies: apt-file" - apt-get install --yes apt-file - echo "** update the apt-file tool" - apt-file update - fi - punani_Scientist_update() { - apt-get update - apt-file update - } - - punani_Scientist_search() { - apt-file search -l -x $1\$ && exit 0 - if [ "${hard-}" ] ; then - apt-cache search $1 - fi - } - punani_Engineer_insert() { - echo "trying to install $1" - pkgs=$(apt-file search -l -x $1\$ | tr "\n" "|" ) - if [ "$pkgs" ];then - echo "** found one or more packages matching, skip the ones you do not need!" - OLDIFS=$IFS - IFS='|' - for to_install in $pkgs;do - if apt-get install $to_install;then - echo "++ finished" - fi - done - IFS=$OLDIFS - else - if [ "${hard-}" ] ; then - echo "** trying harder" - apt-get install $1 - fi - fi - } - punani_Engineer_remove() { - apt-get remove --purge "`apt-file search -l -x /$1\$`" - if [ "${hard-}" ] ; then - echo "** trying harder" - echo "** directly delete given package name" - apt-get remove --purge "$1" - fi - } + remove) + exec $PACKER_CMD $REMOVE_PARAM $RESOLVED ;; - (*) - email='krebs@syntax-fehler.de' - irc_host='irc.freenode.org' - irc_channel='#tincspasm' - cat >&2 <&2 - exit 23;; - esac;; - (Scientist) - case $OPT in - (s) command="${ns}_${role}_search";; - (y) command="${ns}_${role}_update";; - (*) - echo 'Error 1: You are made of stupid!' >&2 - exit 23;; - esac ;; - (undefined) - case $OPT in - (E) role=Engineer;; - (S) role=Scientist;; - (*) - exit 23;; - esac - ;; - (*) - echo 'Error 1: You are made of stupid!' >&2 - exit 23 - ;; - esac - done -} -punani $@ - -case $role in - (Engineer) godmode $@;; - (Scientist) - case $command in - (*_update) godmode $@;; - esac;; + *) + echo "usage: `basename $0` (install|remove) PACKAGE" esac - -shift `echo $OPTIND-1 | bc` - -guess_system -handle_system - -for name in "$@"; do - "$command" "$name" || echo "!! could not install $name" -done -- cgit v1.2.3 From 63df8cd12335300e5af7940a80fa04d660bb04ec Mon Sep 17 00:00:00 2001 From: tv Date: Sun, 20 Nov 2011 01:22:25 +0100 Subject: //punani: dispel $PACKER-magic --- punani/bin/punani | 61 ++++++++++++++++++++++++++----------------------------- 1 file changed, 29 insertions(+), 32 deletions(-) (limited to 'punani/bin') diff --git a/punani/bin/punani b/punani/bin/punani index 8caf669e..7be91db4 100755 --- a/punani/bin/punani +++ b/punani/bin/punani @@ -1,48 +1,45 @@ -#!/bin/bash +#! /bin/sh set -euf +TIGHTNANI_HOST="${TIGHTNANI_HOST-http://euer.krebsco.de:9111}" + if [ $# -ne 2 ];then echo "usage: `basename $0` (install|remove) PACKAGE" exit 23 fi -PACKERS="yum!-y install remove -brew install remove -pacman!--noconfirm -S!--needed -Rcs -bauerbill!--noconfirm -S!--needed -Rcs -yaourt!--noconfirm -S!--needed -Rcs -packer!--noconfirm -S!--needed -Rcs -apt-get!--yes install remove -aptitude!--yes install remove" - -OIFS=$IFS -PACKER= -IFS=' -' - -TIGHTNANI_HOST="http://euer.krebsco.de:9111" -# Find suitable packer -for PACKER_LINE in $PACKERS; do - TRY_PACKER_CMD="$(echo "$PACKER_LINE" | cut -d ' ' -f 1)" - TRY_PACKER="$(echo "$TRY_PACKER_CMD" | cut -d '!' -f 1)" - if which $TRY_PACKER &>/dev/null; then - PACKER=$TRY_PACKER - PACKER_CMD="$(echo "$TRY_PACKER_CMD" | tr "!" " ")" - echo "you got $PACKER" - INSTALL_PARAM="$(echo "$PACKER_LINE" | cut -d ' ' -f 2 | tr "!" " ")" - REMOVE_PARAM="$(echo "$PACKER_LINE" | cut -d ' ' -f 3 | tr "!" " ")" - fi -done -IFS=$OIFS -if [ ! "$PACKER" ];then - echo "Could not find a supported packer for you, bailing out!" +## find package manager +if ! :; then : # dummy, so the rest has a common format + +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' + +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' + REMOVE_PARAM='--needed -Rcs' + +elif for PACKER_CMD in aptitude apt-get + do type $PACKER_CMD 2>/dev/null 1>&2 && break; done; then + INSTALL_PARAM='--yes install' + REMOVE_PARAM='--yes remove' + +else + echo "Error 2: no known package manager found; no punani for you!" >&2 exit 23 fi # find the package name PKG="$2" -RESOLVED=`wget -O- $TIGHTNANI_HOST/$PACKER/$PKG 2>/dev/null` +RESOLVED=`wget -O- $TIGHTNANI_HOST/$PACKER_CMD/$PKG 2>/dev/null` if [ ! "$RESOLVED" ];then echo "Could not resolve your requested package, bailing out!" exit 23 -- cgit v1.2.3 From 98c73906645364805fe512bec3856db6706f6a78 Mon Sep 17 00:00:00 2001 From: tv Date: Sun, 20 Nov 2011 01:29:10 +0100 Subject: //punani: fix bug when wget (+ set -e) GETs no OK --- punani/bin/punani | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'punani/bin') diff --git a/punani/bin/punani b/punani/bin/punani index 7be91db4..b96539ff 100755 --- a/punani/bin/punani +++ b/punani/bin/punani @@ -9,7 +9,7 @@ if [ $# -ne 2 ];then fi ## find package manager -if ! :; then : # dummy, so the rest has a common format +if ! :; then : # dummy case, so the rest has a common format elif for PACKER_CMD in yum do type $PACKER_CMD 2>/dev/null 1>&2 && break; done; then @@ -36,14 +36,15 @@ else exit 23 fi - -# find the package name +## find package name PKG="$2" -RESOLVED=`wget -O- $TIGHTNANI_HOST/$PACKER_CMD/$PKG 2>/dev/null` +RESOLVED=`wget -O- $TIGHTNANI_HOST/$PACKER_CMD/$PKG 2>/dev/null || :` if [ ! "$RESOLVED" ];then - echo "Could not resolve your requested package, bailing out!" + echo "Error 2: could not resolve '$PKG'; no punany for you!" >&2 exit 23 fi + +## dispatch case "$1" in install) exec $PACKER_CMD $INSTALL_PARAM $RESOLVED -- cgit v1.2.3 From 82a089ca49712882baecad9244e2233c56b22075 Mon Sep 17 00:00:00 2001 From: Felix Richter Date: Sun, 20 Nov 2011 08:59:10 +0100 Subject: //punani: fix logic fuckup after refactoring,typo also, tightnani->punani --- punani/bin/punani | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'punani/bin') diff --git a/punani/bin/punani b/punani/bin/punani index b96539ff..1de743e2 100755 --- a/punani/bin/punani +++ b/punani/bin/punani @@ -1,7 +1,7 @@ #! /bin/sh set -euf -TIGHTNANI_HOST="${TIGHTNANI_HOST-http://euer.krebsco.de:9111}" +PUNANI_HOST="${PUNANI_HOST-http://euer.krebsco.de:9111}" if [ $# -ne 2 ];then echo "usage: `basename $0` (install|remove) PACKAGE" @@ -23,8 +23,8 @@ elif for PACKER_CMD in brew 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' - REMOVE_PARAM='--needed -Rcs' + INSTALL_PARAM='--noconfirm -S --needed' + REMOVE_PARAM='-Rcs' elif for PACKER_CMD in aptitude apt-get do type $PACKER_CMD 2>/dev/null 1>&2 && break; done; then @@ -38,9 +38,9 @@ fi ## find package name PKG="$2" -RESOLVED=`wget -O- $TIGHTNANI_HOST/$PACKER_CMD/$PKG 2>/dev/null || :` +RESOLVED=`wget -O- $PUNANI_HOST/$PACKER_CMD/$PKG 2>/dev/null || :` if [ ! "$RESOLVED" ];then - echo "Error 2: could not resolve '$PKG'; no punany for you!" >&2 + echo "Error 2: could not resolve '$PKG'; no punani for you!" >&2 exit 23 fi -- cgit v1.2.3 From 4b8fe23246540d1a9dded43d40f01bb093dbfb06 Mon Sep 17 00:00:00 2001 From: tv Date: Sun, 20 Nov 2011 11:33:47 +0100 Subject: //punani: set -x and then go sudo --- punani/bin/punani | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'punani/bin') diff --git a/punani/bin/punani b/punani/bin/punani index 1de743e2..a7e86d96 100755 --- a/punani/bin/punani +++ b/punani/bin/punani @@ -47,10 +47,12 @@ fi ## dispatch case "$1" in install) - exec $PACKER_CMD $INSTALL_PARAM $RESOLVED + set -x + exec sudo $PACKER_CMD $INSTALL_PARAM $RESOLVED ;; remove) - exec $PACKER_CMD $REMOVE_PARAM $RESOLVED + set -x + exec sudo $PACKER_CMD $REMOVE_PARAM $RESOLVED ;; *) echo "usage: `basename $0` (install|remove) PACKAGE" -- cgit v1.2.3 From 4c53eae0cd6d1644f5ad3e79e5eb5611975079a1 Mon Sep 17 00:00:00 2001 From: tv Date: Sun, 20 Nov 2011 11:49:00 +0100 Subject: //punani: allow multiple PACKAGE --- punani/bin/punani | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) (limited to 'punani/bin') diff --git a/punani/bin/punani b/punani/bin/punani index a7e86d96..4be74f77 100755 --- a/punani/bin/punani +++ b/punani/bin/punani @@ -2,11 +2,8 @@ set -euf PUNANI_HOST="${PUNANI_HOST-http://euer.krebsco.de:9111}" - -if [ $# -ne 2 ];then - echo "usage: `basename $0` (install|remove) PACKAGE" - exit 23 -fi +ACTION="$1"; shift +PKGS="$*" ## find package manager if ! :; then : # dummy case, so the rest has a common format @@ -37,15 +34,22 @@ else fi ## find package name -PKG="$2" -RESOLVED=`wget -O- $PUNANI_HOST/$PACKER_CMD/$PKG 2>/dev/null || :` -if [ ! "$RESOLVED" ];then - echo "Error 2: could not resolve '$PKG'; no punani for you!" >&2 - exit 23 +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 "$1" in +case "$ACTION" in install) set -x exec sudo $PACKER_CMD $INSTALL_PARAM $RESOLVED @@ -55,5 +59,6 @@ case "$1" in exec sudo $PACKER_CMD $REMOVE_PARAM $RESOLVED ;; *) - echo "usage: `basename $0` (install|remove) PACKAGE" + echo "usage: `basename $0` (install|remove) PACKAGE..." + exit 23 esac -- cgit v1.2.3