File install-geogebra-icons-oxygen of Package geogebra
#!/bin/bash
#---------------------------------------------
# Script to install GeoGebra application icons for Oxygen Icon Theme
#
# @author Christian Schött <schoett@gmx.de>
#---------------------------------------------
#---------------------------------------------
# Used environment variables:
#
# NAME=<name of geogebra start script> # If unset, 'geogebra' will be used. (Example: 'geogebra5-beta')
#
# INSTALL=<path of install macro> # If unset, './install-sh' will be used. (Distributors may want to set their own install macro.)
#
# CHMOD=<path of chmod macro> # If unset, 'chmod' will be used. (Distributors may want to set their own chmod macro.)
#
# BINDIR=<path for executable binary files> # If unset, 'usr/bin' will be used.
#
# DATADIR=<path for data files> # If unset, '/usr/share' will be used.
#
# DOCDIR=<path for doc files> # If unset, '/usr/share/doc/packages' will be used.
#
# LICENSEDIR=<path for license files> # If unset, "$DOCDIR" will be used.
#
# CREATE_UNINSTALLER=<boolean> # If unset, 'false' will be used. (Distributors normally have their own uninstaller.)
#
# VERBOSE_MODE=<boolean> # If unset, 'false' will be used.
#
# PREFIX=<path> # If unset, '' will be used.
#---------------------------------------------
# If $NAME not set, use 'geogebra'.
if [ -z "$NAME" ]; then
NAME='geogebra'
fi
#---------------------------------------------
# If $INSTALL not set, use './install-sh'.
if [ -z "$INSTALL" ]; then
INSTALL="./install-sh"
fi
#---------------------------------------------
# If $CHMOD not set, use 'chmod'.
if [ -z "$CHMOD" ]; then
CHMOD="chmod"
fi
#---------------------------------------------
# If $BINDIR not set, use '/usr/bin'.
if [ -z "$BINDIR" ]; then
BINDIR="/usr/bin"
fi
#---------------------------------------------
# If $DATADIR not set, use '/usr/share'.
if [ -z "$DATADIR" ]; then
DATADIR="/usr/share"
fi
#---------------------------------------------
# If $LICENSEDIR not set, but $DOCDIR set, use "$DOCDIR".
if [ -z "$LICENSEDIR" -a -n "$DOCDIR" ]; then
LICENSEDIR="$DOCDIR"
fi
#---------------------------------------------
# If $DOCDIR not set, use '/usr/share/doc/packages'.
if [ -z "$DOCDIR" ]; then
DOCDIR='/usr/share/doc/packages'
fi
#---------------------------------------------
# If $LICENSEDIR not set, use "$DOCDIR".
if [ -z "$LICENSEDIR" ]; then
LICENSEDIR="$DOCDIR"
fi
#---------------------------------------------
# If $CREATE_UNINSTALLER not set, use 'false'.
if [ -z "$CREATE_UNINSTALLER" ]; then
CREATE_UNINSTALLER='false'
fi
#---------------------------------------------
# If $VERBOSE_MODE not set, use 'false'.
if [ -z "$VERBOSE_MODE" ]; then
VERBOSE_MODE='false'
fi
#---------------------------------------------
# If $PREFIX not set, use ''.
if [ -z "$PREFIX" ]; then
PREFIX=''
fi
#---------------------------------------------
# Define usage function.
function func_usage
{
cat << _USAGE
Usage: install-geogebra-icons-oxygen [Options]
Install GeoGebra application icons for Oxygen Icon Theme
Options:
--help Print this help message
--name=<name of geogebra start script> If unset, '$NAME' will be used. (Example: 'geogebra5-beta')
--install=<path of install macro> If unset, '$INSTALL' will be used.
--chmod=<path of chmod macro> If unset, '$CHMOD' will be used.
--bindir=<path for executable binary files> If unset, '$BINDIR' will be used.
--datadir=<path for data files> If unset, '$DATADIR' will be used.
--docdir=<path for doc files> If unset, '$DOCDIR' will be used.
--licensedir=<path for license files> If unset, '$LICENSEDIR' will be used.
--create_uninstaller=<boolean> If unset, '$CREATE_UNINSTALLER' will be used.
--verbose_mode=<boolean> If unset, '$VERBOSE_MODE' will be used.
--prefix=<path> If unset, '$PREFIX' will be used.
_USAGE
}
#---------------------------------------------
# Check for options.
for i in "$@"; do
case "$i" in
--help | --hel | --he | --h )
func_usage; exit 0 ;;
esac
if [ $(expr match "$i" '.*--name=') -ne 0 ]; then
NAME=${i:7}
shift $((1))
elif [ $(expr match "$i" '.*--install=') -ne 0 ]; then
INSTALL=${i:10}
shift $((1))
elif [ $(expr match "$i" '.*--chmod=') -ne 0 ]; then
CHMOD=${i:8}
shift $((1))
elif [ $(expr match "$i" '.*--bindir=') -ne 0 ]; then
BINDIR=${i:9}
shift $((1))
elif [ $(expr match "$i" '.*--datadir=') -ne 0 ]; then
DATADIR=${i:10}
shift $((1))
elif [ $(expr match "$i" '.*--docdir=') -ne 0 ]; then
DOCDIR=${i:9}
shift $((1))
elif [ $(expr match "$i" '.*--licensedir=') -ne 0 ]; then
LICENSEDIR=${i:13}
shift $((1))
elif [ $(expr match "$i" '.*--create_uninstaller=') -ne 0 ]; then
CREATE_UNINSTALLER=${i:21}
shift $((1))
elif [ $(expr match "$i" '.*--verbose_mode=') -ne 0 ]; then
VERBOSE_MODE=${i:15}
shift $((1))
elif [ $(expr match "$i" '.*--prefix=') -ne 0 ]; then
PREFIX=${i:9}
shift $((1))
fi
done
#---------------------------------------------
# Install everything.
INSTALLED_DIRECTORIES=()
INSTALLED_FILES=()
function install_dir
{
if [ ! -w "$PREFIX$1" ]; then
"$INSTALL" -d -m 755 "$PREFIX$1"
fi
INSTALLED_DIRECTORIES[${#INSTALLED_DIRECTORIES[*]}]="$1"
}
function install_file
{
if [ -d "$PREFIX$2" ]; then
"$INSTALL" -m 644 "$1" "$PREFIX$2"
INSTALLED_FILES[${#INSTALLED_FILES[*]}]="$2/`basename $1`"
else
"$INSTALL" -m 644 "$1" "$PREFIX$2"
INSTALLED_FILES[${#INSTALLED_FILES[*]}]="$2"
fi
}
install_dir "$LICENSEDIR"
install_dir "$LICENSEDIR/$NAME-icons-oxygen"
install_file 'icons/oxygen/COPYING' "$LICENSEDIR/$NAME-icons-oxygen"
install_dir "$DOCDIR"
install_dir "$DOCDIR/$NAME-icons-oxygen"
install_file 'icons/oxygen/README' "$DOCDIR/$NAME-icons-oxygen"
install_dir "$DATADIR"
install_dir "$DATADIR/icons"
install_dir "$DATADIR/icons/oxygen"
for SIZE in 16x16 22x22 32x32 48x48 64x64 128x128 256x256; do
install_dir "$DATADIR/icons/oxygen/$SIZE"
install_dir "$DATADIR/icons/oxygen/$SIZE/apps"
install_file "icons/oxygen/$SIZE/apps/geogebra.png" "$DATADIR/icons/oxygen/$SIZE/apps/$NAME.png"
done
# Create uninstall script, if $CREATE_UNINSTALLER is not set 'false':
if [ "$CREATE_UNINSTALLER" != 'false' ]; then
install_dir "$BINDIR"
cat > "$PREFIX$BINDIR/uninstall-$NAME-icons-oxygen" << EOF
#!/bin/bash
#---------------------------------------------
# Script to uninstall GeoGebra application icons for Oxygen Icon Theme
#---------------------------------------------
# Define usage function:
function func_usage
{
cat << _USAGE
Usage: uninstall-$NAME-icons-oxygen [Options]
Uninstall GeoGebra application icons for Oxygen Icon Theme
Options:
--help Print this help message
--force Uninstall without asking questions
_USAGE
}
# Check for options:
FORCE='false'
for i in "\$@"; do
case "\$i" in
--help | --hel | --he | --h )
func_usage; exit 0 ;;
esac
if [ "\$i" = '--force' ]; then
FORCE='true'
fi
done
# Ask to continue, if option --force is not used:
if [ "\$FORCE" = 'false' ]; then
KDIALOG_possible='false'
QDBUS_possible='false'
ZENITY_possible='false'
XDIALOG_possible='false'
if [ "\$UID" != "0" ]; then
KDIALOG_possible='true'
QDBUS_possible='false'
ZENITY_possible='false'
XDIALOG_possible='false'
type -P kdialog &>/dev/null || KDIALOG_possible='false'
if [ "\$KDIALOG_possible" = 'true' ]; then
QDBUS_possible='true'
type -P qdbus &>/dev/null || QDBUS_possible='false'
else
ZENITY_possible='true'
type -P zenity &>/dev/null || ZENITY_possible='false'
if [ "\$ZENITY_possible" = 'false' ]; then
XDIALOG_possible='true'
type -P Xdialog &>/dev/null || XDIALOG_possible='false'
fi
fi
fi
ANSWER=1
if [ "\$KDIALOG_possible" = 'true' ]; then
kdialog --caption "GeoGebra application icons for Oxygen Icon Theme" --icon "$DATADIR/icons/hicolor/64x64/apps/$NAME.png" --warningcontinuecancel "This will uninstall GeoGebra application icons for Oxygen Icon Theme."
ANSWER=\$?
elif [ "\$ZENITY_possible" = 'true' ]; then
zenity --title="GeoGebra application icons for Oxygen Icon Theme" --window-icon="$DATADIR/icons/hicolor/64x64/apps/$NAME.png" --warning --text="This will uninstall GeoGebra application icons for Oxygen Icon Theme."
ANSWER=\$?
elif [ "\$XDIALOG_possible" = 'true' ]; then
Xdialog --title "GeoGebra application icons for Oxygen Icon Theme" --yesno "This will uninstall GeoGebra application icons for Oxygen Icon Theme.\n\nDo you want to continue?" 0 0
ANSWER=\$?
else
echo "This will uninstall GeoGebra application icons for Oxygen Icon Theme."
tput bold
read -p "Do you want to continue? [y/n]: "
tput sgr0
case "\$REPLY" in
y | Y | yes | Yes | YES )
ANSWER=0 ;;
esac
fi
if [ \$ANSWER != 0 ]; then
exit 0
fi
fi
# Uninstall files and show progressbar during uninstallation, if possible and option --force is not used:
if [ "\$KDIALOG_possible" = 'true' -a "\$QDBUS_possible" = 'true' -a "\$FORCE" = 'false' ]; then
DBUSREF=\`kdialog --caption "GeoGebra application icons for Oxygen Icon Theme" --progressbar "Uninstalling GeoGebra application icons for Oxygen Icon Theme." 1\`
fi
INSTALLED_FILES=(${INSTALLED_FILES[*]})
for ((i=\${#INSTALLED_FILES[@]}-1; i>=0; i--)); do
if [ -w "\${INSTALLED_FILES[\$i]}" ]; then
rm -f "\${INSTALLED_FILES[\$i]}"
fi
done
INSTALLED_DIRECTORIES=(${INSTALLED_DIRECTORIES[*]})
for ((i=\${#INSTALLED_DIRECTORIES[@]}-1; i>=0; i--)); do
case "\${INSTALLED_DIRECTORIES[\$i]}" in
"$BINDIR" | "$DATADIR" | "$DOCDIR" | "$LICENSEDIR" )
continue ;;
esac
if [ -w "\${INSTALLED_DIRECTORIES[\$i]}" ]; then
rmdir --ignore-fail-on-non-empty "\${INSTALLED_DIRECTORIES[\$i]}"
fi
done
if [ "\$KDIALOG_possible" = 'true' -a "\$QDBUS_possible" = 'true' -a "\$FORCE" = 'false' ]; then
qdbus \$DBUSREF Set "" value 1 >/dev/null
qdbus \$DBUSREF setLabelText "Uninstallation completed." >/dev/null
qdbus \$DBUSREF close >/dev/null
fi
# Selfdestruction:
if [ -w "$BINDIR/uninstall-$NAME-icons-oxygen" ]; then
rm -f "$BINDIR/uninstall-$NAME-icons-oxygen"
fi
EOF
INSTALLED_FILES[${#INSTALLED_FILES[*]}]="$BINDIR/uninstall-$NAME-icons-oxygen"
"$CHMOD" u+x "$PREFIX$BINDIR/uninstall-$NAME-icons-oxygen"
fi
# List pathes of installed files, if $VERBOSE_MODE is not set 'false':
if [ "$VERBOSE_MODE" != 'false' ]; then
echo "`tput smul`Files of package '$NAME-icons-oxygen'`tput sgr0`"
for FILEPATH in ${INSTALLED_FILES[*]}; do
if [ -e "$PREFIX$FILEPATH" ]; then
echo "$FILEPATH"
fi
done
fi