
Collect options and pkg names to separate variables and check if any pkg name was given, not any argument.
76 lines
1.8 KiB
Bash
Executable File
76 lines
1.8 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
DOM0_UPDATES_DIR=/var/lib/qubes/dom0-updates
|
|
|
|
DOIT=0
|
|
GUI=1
|
|
OPTS=
|
|
PKGLIST=
|
|
while [ -n "$1" ]; do
|
|
case "$1" in
|
|
--doit)
|
|
DOIT=1
|
|
;;
|
|
--nogui)
|
|
GUI=0
|
|
;;
|
|
-*)
|
|
OPTS="$OPTS $1"
|
|
;;
|
|
*)
|
|
PKGLIST="$PKGLIST $1"
|
|
;;
|
|
esac
|
|
shift
|
|
done
|
|
|
|
if ! [ -d "$DOM0_UPDATES_DIR" ]; then
|
|
echo "Dom0 updates dir does not exists: $DOM0_UPDATES_DIR"
|
|
exit 1
|
|
fi
|
|
|
|
mkdir -p $DOM0_UPDATES_DIR/etc
|
|
cp /etc/yum.conf $DOM0_UPDATES_DIR/etc/
|
|
|
|
if [ "x$PKGLIST" = "x" ]; then
|
|
echo "Checking for dom0 updates..."
|
|
PKGLIST=`yum --installroot $DOM0_UPDATES_DIR $OPTS check-update -q | cut -f 1 -d ' '`
|
|
else
|
|
PKGS_FROM_CMDLINE=1
|
|
fi
|
|
|
|
if [ -z "$PKGLIST" ]; then
|
|
# No new updates
|
|
exit 0
|
|
fi
|
|
|
|
if [ "$DOIT" != "1" -a "$PKGS_FROM_CMDLINE" != "1" ]; then
|
|
PKGCOUNT=`echo $PKGLIST|wc -w`
|
|
zenity --question --title="Qubes Dom0 updates" \
|
|
--text="$PKGCOUNT updates for dom0 available. Do you want to download its now?" || exit 0
|
|
fi
|
|
|
|
if [ "$PKGS_FROM_CMDLINE" == 1 ]; then
|
|
OPTS="$OPTS --resolve"
|
|
GUI=0
|
|
fi
|
|
|
|
mkdir -p "$DOM0_UPDATES_DIR/packages"
|
|
|
|
set -e
|
|
|
|
if [ "$GUI" = 1 ]; then
|
|
( echo "1"
|
|
yumdownloader --destdir "$DOM0_UPDATES_DIR/packages" --installroot "$DOM0_UPDATES_DIR" $OPTS $PKGLIST
|
|
echo 100 ) | zenity --progress --pulsate --auto-close --auto-kill \
|
|
--text="Downloading updates for Dom0, please wait..." --title="Qubes Dom0 updates"
|
|
else
|
|
yumdownloader --destdir "$DOM0_UPDATES_DIR/packages" --installroot "$DOM0_UPDATES_DIR" $OPTS $PKGLIST
|
|
fi
|
|
|
|
if ls $DOM0_UPDATES_DIR/packages/*.rpm > /dev/null 2>&1; then
|
|
/usr/lib/qubes/qrexec_client_vm dom0 qubes.ReceiveUpdates /usr/lib/qubes/qfile-agent $DOM0_UPDATES_DIR/packages/*.rpm
|
|
else
|
|
echo "No packages downloaded"
|
|
fi
|