X-Git-Url: http://git.onelab.eu/?p=util-vserver.git;a=blobdiff_plain;f=scripts%2Fvapt-get;h=324d1f1db4059200b688220506df2c38b978823b;hp=1a8daf2dc09d5ca3806074e3fa0b465eda3e5a6f;hb=2822ba293eb308225c50d346930c47bf98d9927b;hpb=2894fc5a4c8335e4d7221311fed0556f33f8047c diff --git a/scripts/vapt-get b/scripts/vapt-get index 1a8daf2..324d1f1 100755 --- a/scripts/vapt-get +++ b/scripts/vapt-get @@ -1,5 +1,5 @@ #! /bin/bash -# $Id: vapt-get 2335 2006-09-28 15:10:29Z dhozac $ +# $Id: vapt-get,v 1.14 2005/01/27 21:24:44 ensc Exp $ # Copyright (C) 2003 Enrico Scholz # @@ -31,7 +31,7 @@ function showHelp() $"Usage: $0 * [--all] -- + Report bugs to <$PACKAGE_BUGREPORT>." - exit 0 + exit $1 } function showVersion() @@ -40,35 +40,60 @@ function showVersion() $"vapt-get $PACKAGE_VERSION -- apt-get for vservers This program is part of $PACKAGE_STRING -Copyright (C) 2006 Enrico Scholz +Copyright (C) 2003 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 0 + exit $1 } -tmp=$(getopt -o +q --long help,version,debug,quiet,all -n "$0" -- "$@") || exit 1 -eval set -- "$tmp" +is_quiet= +declare -a vservers=() -declare -a send_through vsomething_opts - -while true; do +while test "$#" -ge 1; do case "$1" in - (--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 $"vapt-get: internal error; arg=='$1'" >&2; exit 1;; - esac - shift + --) shift; break;; + --help) showHelp 0;; + --quiet|-q) is_quiet=1 ;; + --all) + getAllVservers tmp + vservers=( "${vservers[@]}" "${tmp[@]}" ) + ;; + --version) + showVersion 0;; + *) vservers=( "${vservers[@]}" "$1" ) + esac + shift done -VSOMETHING_TITLE=vapt-get -VSOMETHING_WORKER=$_VAPT_GET_WORKER -VSOMETHING_PKGMGMT=1 +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 ] -export VSOMETHING_TITLE VSOMETHING_WORKER VSOMETHING_PKGMGMT + test -n "$is_quiet" || { + colorize bold echo -n "vaptget: operating on vserver " + colorize bold colorize emph echo "$i" + xtermTitle "vaptget: operating on vserver '$i' [$cnt/${#vservers[@]}]" + } + + if pkgmgmt.isInternal "$i"; then + $_VSERVER "$i" exec apt-get "$@" + else + callInNamespace "$i" \ + "$_VNAMESPACE" --new -- "$_VAPT_GET_WORKER" "$i" "$@" + fi + res=$? + + test $res -eq 0 -o -n "$is_quiet" || { + colorize error echo -n $"vapt-get failed on vserver '$i' with errorcode $res" + echo + } + + test -n "$is_quiet" || echo +done -test ${#vsomething_opts[@]} -eq 0 || vsomething_opts=( "${vsomething_opts[@]}" -- ) -exec $_VSOMETHING "${send_through[@]}" ${APT_GET:-apt-get} "${vsomething_opts[@]}" "$@" +test "$cnt" -ge 0 || echo "No vservers specified" >&2 +exit $res