Created
August 28, 2009 15:01
-
-
Save dmacvicar/177019 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#! /bin/sh | |
# by http://en.opensuse.org/User:Mvidner | |
# https://bugzilla.novell.com/show_bug.cgi?id=222757 | |
usage() { | |
cat >&2 <<EOF | |
$0 version 0.2 | |
Usage: | |
$0 --update ONE_NAME | |
$0 --remove ONE_NAME | |
$0 [--install [ONE_FILE]] | |
EOF | |
exit $1 | |
} | |
# quoted concatenation of arguments | |
function mkCmd() { | |
printf "%q" "$1" | |
shift | |
for ARG in "$@"; do | |
printf " %q" "$ARG" | |
done | |
} | |
function check_installed() | |
{ | |
rpm -q "$1" >/dev/null | |
return $? | |
} | |
function what_do_we_have() | |
{ | |
echo "Zlm: ${HAVE_ZLM}" | |
echo "openSUSE: ${HAVE_OPENSUSE}" | |
echo "KPackagekit: ${HAVE_KPACKAGEKIT}" | |
echo "GPackagekit: ${HAVE_GPACKAGEKIT}" | |
echo "KDE running: ${KDE_FULL_SESSION}" | |
} | |
# check what we have | |
HAVE_ZLM=false | |
check_installed "zen-updater" | |
if [ "$?" == "0" ] | |
then | |
HAVE_ZLM=true | |
fi | |
HAVE_OPENSUSE=false | |
check_installed "yast2-packager" | |
if [ $? == 0 ] | |
then | |
HAVE_OPENSUSE=true | |
fi | |
HAVE_KPACKAGEKIT=false | |
check_installed "kpackagekit" | |
if [ "$?" == "0" ] | |
then | |
HAVE_KPACKAGEKIT=true | |
fi | |
HAVE_GPACKAGEKIT=false | |
check_installed "gnome-packagekit" | |
if [ $? == 0 ] | |
then | |
HAVE_GPACKAGEKIT=true | |
fi | |
if $HAVE_ZLM; then | |
if $HAVE_OPENSUSE; then | |
if [ -f /etc/sysconfig/sw_management ]; then | |
. /etc/sysconfig/sw_management | |
PSMS="$PREFERRED_SW_MANAGER_STACK" | |
fi | |
if [ "x$PSMS" = "xzlm" ]; then | |
STACK=zlm | |
elif [ "x$PSMS" = "xopensuse" ]; then | |
STACK=opensuse | |
else | |
echo >&2 "/etc/sysconfig/sw_management:PREFERRED_SW_MANAGER_STACK should contain" | |
echo >&2 "'zlm' or 'opensuse'" | |
STACK=ugh | |
fi | |
else | |
STACK=zlm | |
fi | |
else | |
if $HAVE_OPENSUSE; then | |
STACK=opensuse | |
else | |
echo >&2 "No package manager installed?" | |
STACK=ugh | |
fi | |
fi | |
METHOD=yast | |
# determine what we can use | |
if $HAVE_KPACKAGEKIT && [ "$KDE_FULL_SESSION" ]; then | |
METHOD=kpackagekit | |
elif $HAVE_GPACKAGEKIT && [ "$WINDOWMANAGER" == "/usr/bin/gnome" ]; then | |
METHOD=gnome-packagekit | |
else | |
if [ "$STACK" == "zlm" ]; then | |
METHOD="zlm" | |
else | |
METHOD="yast" | |
fi | |
fi | |
echo $METHOD | |
xsu() { | |
# a copy of xdg-su. | |
package-manager-su -c "$(mkCmd "$@")" | |
} | |
# do_* fall back to yast for STACK=ugh | |
do_update() { | |
case "${METHOD}" in | |
yast) | |
xsu /sbin/yast2 --update "$@" | |
;; | |
zlm) | |
zen-updater --no-tray "$@" | |
;; | |
kpackagekit) | |
kpackagekit --updates "$@" | |
;; | |
gnome-packagekit) | |
/usr/bin/gpk-update-viewer2 "$@" | |
;; | |
esac | |
} | |
do_remove() { | |
# not all support remove | |
case "${METHOD}" in | |
yast|kpackagekit|gnome-packagekit) | |
xsu /sbin/yast2 --remove "$@" | |
;; | |
zlm) | |
zen-remover "$@" | |
;; | |
esac | |
} | |
do_install() { | |
case "${METHOD}" in | |
yast) | |
xsu /sbin/yast2 --install "$@" | |
;; | |
zlm) | |
zen-installer "$@" | |
;; | |
kpackagekit) | |
kpackagekit "$@" | |
;; | |
gnome-packagekit) | |
/usr/bin/gpk-install-local-file "$@" | |
;; | |
esac | |
} | |
if [ "x$1" = "x--update" -a $# = 2 ]; then | |
shift | |
do_update "$@" | |
elif [ "x$1" = "x--remove" -a $# = 2 ]; then | |
shift | |
do_remove "$@" | |
elif [ "x$1" = "x--install" ]; then | |
shift | |
do_install "$@" | |
elif [ $# = 0 ]; then | |
do_install | |
else | |
usage 1 | |
fi |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment