merge with 0.30.213
[util-vserver.git] / scripts / vrpm
index 1ae226a..2962353 100755 (executable)
@@ -1,5 +1,5 @@
 #! /bin/bash
-# $Id: vrpm,v 1.13 2005/01/27 21:24:44 ensc Exp $
+# $Id: vrpm 2303 2006-09-12 12:39:00Z dhozac $
 
 # Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 #  
@@ -24,14 +24,14 @@ test -e "$UTIL_VSERVER_VARS" || {
 . "$UTIL_VSERVER_VARS"
 . "$_LIB_FUNCTIONS"
 
+
 function showHelp()
 {
     echo \
-$"Usage: $0 <vserver-name>* [--all] [--quiet|-q] [--help] [--version] [--unify] -- <rpm-params>+
+$"Usage: $0 <vserver-name>* [--all] -- <params>+
 
 Report bugs to <$PACKAGE_BUGREPORT>."
-
-    exit $1
+    exit 0
 }
 
 function showVersion()
@@ -40,71 +40,35 @@ function showVersion()
 $"vrpm $PACKAGE_VERSION -- rpm for vservers
 This program is part of $PACKAGE_STRING
 
-Copyright (C) 2003 Enrico Scholz
+Copyright (C) 2006 Enrico Scholz
 This program is free software; you may redistribute it under the terms of
 the GNU General Public License.  This program has absolutely no warranty."
-    
-    exit $1
+    exit 0
 }
 
-do_unify=
-is_quiet=
-declare -a vservers=()
+tmp=$(getopt -o +q --long help,version,debug,quiet,all -n "$0" -- "$@") || exit 1
+eval set -- "$tmp"
+
+declare -a send_through vsomething_opts
 
-while test "$#" -ge 1; do
+while true; do
     case "$1" in
-       --quiet|-q)
-           is_quiet=1
-           ;;
-       --all)
-           getAllVservers tmp
-           vservers=( "${vservers[@]}" "${tmp[@]}" )
-           ;;
-       --unify)
-           do_unify=1
-           ;;
-       --)
-           shift; break;;
-       --help)
-           showHelp 0;;
-       --version)
-           showVersion 0;;
-       *)  vservers=( "${vservers[@]}" "$1" )
-     esac
-     shift
+       (--help)        showHelp $0 ;;
+       (--version)     showVersion ;;
+       (--debug)       send_through=( "${send_through[@]}" "$1" ); set -x;;
+       (--quiet|-q)    send_through=( "${send_through[@]}" "$1" );;
+       (--all)         vsomething_opts=( "${vsomething_opts[@]}" "$1" );;
+       (--)            shift; break;;
+       (*)             echo $"vrpm: internal error; arg=='$1'" >&2; exit 1;;
+    esac
+    shift
 done
 
-test "$#" -ge 1 || showHelp 1 >&2
-test "${#vservers[@]}" -ne 1 || is_quiet=1
-
-cnt=0
-res=255
-
-for i in "${vservers[@]}"; do
-    cnt=$[ cnt + 1 ]
+VSOMETHING_TITLE=vrpm
+VSOMETHING_WORKER=$_VRPM_WORKER
+VSOMETHING_PKGMGMT=1
 
-    test -n "$is_quiet" || {
-       colorize bold echo -n "vrpm: operating on vserver "
-       colorize bold colorize emph echo "$i"
-       xtermTitle "vrpm: operating on vserver '$i'  [$cnt/${#vservers[@]}]"
-    }
-
-    if pkgmgmt.isInternal "$i"; then
-       $_VSERVER "$i" exec rpm "$@"
-    else
-       callInNamespace "$i" \
-           "$_VNAMESPACE" --new -- "$_VRPM_WORKER" "$i" "$@"
-    fi
-    res=$?
-
-    test $res -eq 0 -o "$is_quiet" || {
-       colorize error echo -n $"vrpm failed on vserver '$i' with errorcode $res"
-       echo
-    }
-
-    test -n "$is_quiet" || echo
-done
+export VSOMETHING_TITLE VSOMETHING_WORKER VSOMETHING_PKGMGMT
 
-test -z "$do_unify" || echo "unify currently unsupported" >&2
-test "$cnt" -ge 0   || echo "No vservers specified" >&2
-exit $res
+test ${#vsomething_opts[@]} -eq 0 || vsomething_opts=( "${vsomething_opts[@]}" -- )
+exec $_VSOMETHING "${send_through[@]}" rpm "${vsomething_opts[@]}" "$@"