ACC SHELL

Path : /usr/bin/
File Upload :
Current File : //usr/bin/package-manager

#! /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 quote() {
  # formerly used 'printf %q' breaks UTF-8 strings
  echo -n "$@" | sed 's/\([]|&;<>()$`\" \t*?#~=%[]\)/\\\1/g'
}

function mkCmd() {
  quote "$1"
  shift
  for ARG in "$@"; do
    echo -n " $(quote "$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)
      if [ $# == 0 ]; then
          xsu /sbin/yast2 --install
      else
          kpackagekit "$@"
      fi
    ;;
    gnome-packagekit)
      if [ $# == 0 ]; then
          xsu /sbin/yast2 --install
      else
          /usr/bin/gpk-install-local-file "$@"
      fi
    ;;
    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

ACC SHELL 2018