X-Git-Url: http://git.onelab.eu/?p=util-vserver.git;a=blobdiff_plain;f=scripts%2Fvrpm;h=2962353c518831c8f889ea318ec16d8603402c50;hp=1ae226ab3e6eb10386b86b499519cc43b56b2ca4;hb=ec4370f7ebd7fb0ce7f002f5bf2c74f03acd3ec1;hpb=2822ba293eb308225c50d346930c47bf98d9927b diff --git a/scripts/vrpm b/scripts/vrpm index 1ae226a..2962353 100755 --- a/scripts/vrpm +++ b/scripts/vrpm @@ -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 # @@ -24,14 +24,14 @@ test -e "$UTIL_VSERVER_VARS" || { . "$UTIL_VSERVER_VARS" . "$_LIB_FUNCTIONS" + function showHelp() { echo \ -$"Usage: $0 * [--all] [--quiet|-q] [--help] [--version] [--unify] -- + +$"Usage: $0 * [--all] -- + 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[@]}" "$@"