diff options
author | Nat Goodspeed <nat@lindenlab.com> | 2013-01-09 20:39:06 -0500 |
---|---|---|
committer | Nat Goodspeed <nat@lindenlab.com> | 2013-01-09 20:39:06 -0500 |
commit | 34f231cc66bc746228fe367712447058d76757b3 (patch) | |
tree | 637f72962ef8f7ea36a6fee28455ec93ce2aefb5 /indra/viewer_components/updater/scripts/linux/xmenity | |
parent | bf55755262244c7c36df781d2e093b4109f6ecbf (diff) |
MAINT-1481: remove linux-updater; move logic to Linux update_install
Now that the viewer's own background updater logic is responsible for
downloading a new installer, the only functionality we still use in
linux-updater that couldn't be expressed more simply in bash is the UI. But
since most Linux distros capable of running SL at all have zenity, and all
will have xmessage, we can handle even the UI part. Add xmenity wrapper script
so update_install doesn't have to care which is present, and make the bash
script that used to launch linux-updater do the real work.
Diffstat (limited to 'indra/viewer_components/updater/scripts/linux/xmenity')
-rwxr-xr-x | indra/viewer_components/updater/scripts/linux/xmenity | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/indra/viewer_components/updater/scripts/linux/xmenity b/indra/viewer_components/updater/scripts/linux/xmenity new file mode 100755 index 0000000000..c0c033904c --- /dev/null +++ b/indra/viewer_components/updater/scripts/linux/xmenity @@ -0,0 +1,55 @@ +#!/bin/bash + +# @file xmenity +# @author Nat Goodspeed +# @date 2013-01-09 +# @brief Provide progress UI for bash scripts (e.g. update_install) using +# zenity if available, xmessage if not. +# +# $LicenseInfo:firstyear=2013&license=viewerlgpl$ +# Copyright (c) 2013, Linden Research, Inc. +# $/LicenseInfo$ + +# This script invokes either zenity --progress or, if zenity is unavailable, +# wraps xmessage in a zenity-like interface. That is its mutant power. +# Pass $1 as the title for your zenity box. It is ignored by xmessage. +# Send updates on stdin: +# A line containing only a decimal integer from 0 - 100 sets that progress. +# End with 100 to tell zenity to terminate. +# A line starting with '#' replaces the progress text. +# All other stdin lines are ignored. + +zenpath="$(which zenity)" +if [ -n "$zenpath" -a -x "$zenpath" ] +then # if executable zenity is on PATH, run that instead of this. + exec "$zenpath" --progress --title="$1" --auto-close --width=320 --height=120 +fi + +# Arriving here means we don't have zenity available. The remainder of this +# script is the xmessage wrapper. + +# We operate by leaving one background xmessage process running. This is the +# pid of that process. +xmpid="" + +function clear_message { + [ -n "$xmpid" ] && kill $xmpid + xmpid="" +} + +# Cancel any pending xmessage, regardless of how we exit. +trap 'clear_message' EXIT + +while read line +do # terminate like zenity --progress + [ "$line" == "100" ] && break + # ignore everything but replacement text + nohash="${line#'#'}" + # if stripping leading hash doesn't change line, it doesn't have one + [ "$nohash" == "$line" ] && continue + # clear any previous message + clear_message + # put up a new xmessage and capture its pid + xmessage -buttons OK:2 -center "$nohash" & + xmpid=$! +done |