#!/bin/bash # Programmversion PROGNAME=`basename $0` VERSION="0.11a" QUIET=0 func_term_output () { ## Beginne mit der Ausgbe ## tty -s && clear echo -e "\033[44m \033[0m\033[1m $PROGNAME the Calibre-Autoupdate-Installer Version $VERSION\033[0m\n\033[44m \033[0m 2013-2014 by Leon Gaultier\n"; return 0 } func_usage () # Gibt Auskunft über Verwendung des Scriptes { echo "Verwendung: $PROGNAME [OPTION...]" echo -e "Verwende $PROGNAME --help oder $PROGNAME -h für mehr Informationen.\n" } func_help () # Listet alle Optionsschalter auf { func_term_output echo "Verwende: $PROGNAME [OPTION...]" echo "$PROGNAME -- Der Calibre-Autoupdate-Installer (CAUI)" echo "" echo "Options:" echo " -q, --quiet ohne Konsolenausgabe" echo " -h, --help zeigt die Hilfe an" echo " -V, --version gibt die Programmversion aus" echo " -i, --install installiert den Calibre-Autoupdater (CAU)" #echo " -u, --uninstall deinstalliert den Calibre-Autoupdater (CAU), soll kommen " echo "" echo -e "Sende Fehler an .\n"; } func_version () # Versionsauskunft des Installers { echo "$PROGNAME: Der Calibre-Autoupdate-Installer (CAUI) v$VERSION" echo "Leon Gaultier 2013-2014. Das Programm darf verteilt werden," echo "in der Hoffnung das es hilfreich ist, aber OHNR IRGENDEINE GARANTIE" } func_change_install_dir() # Funktion zur Abfrage des Installationsortes { read -p "Wo soll der Calibre-Autoupdater installiert werden? [default /usr/local] " UPDATER_INSTALL_LOCATION if [ -z $UPDATER_INSTALL_LOCATION ]; then UPDATER_INSTALL_LOCATION=/usr/local fi read -p "Wo befindet sich die Calibre Installation? [default /opt] " CALIBRE_INSTALL_LOCATION if [ -z $CALIBRE_INSTALL_LOCATION ]; then CALIBRE_INSTALL_LOCATION=/opt fi # Installationsfade in der Verzeichnishierarchie INC=$UPDATER_INSTALL_LOCATION/include/ ETC=$UPDATER_INSTALL_LOCATION/etc/ BIN=$UPDATER_INSTALL_LOCATION/bin/ } func_check_dir() # Install oder Update Calibre Updater, Check ob Calibre überhaupt installiert ist { if test ! -d $CALIBRE_INSTALL_LOCATION/calibre ; then echo -e "\n\033[31mKeine Calibre Installation unter $CALIBRE_INSTALL_LOCATION gefunden. Installation des Updaters nicht möglich.\e[m\n"; >&2 exit 1 fi if test -f $BIN/calibre-autoupdate ; then # Updater bereits installiert? while ((!gueltig)); do # beginn der Ja/Nein Abfrage echo -e "\033[1;34m" read -sn1 -t 30 -p "Der calibre-autoupdater ist bereits installiert. Möchtest Du ein Update durchführen? [j/n] " answer echo -e "\e[m" case "$answer" in [JjYy]) result=1; gueltig=1 ;; [Nn]) result=0; gueltig=1 ;; "") result=0; gueltig=1 ;; *) gueltig=0 ;; esac done echo if (( ! result )); then echo -e "\n\033[1;31mDie installation des Calibre-Autoupdaters wurde durch Dich beendet.\e[m\n" exit 1 fi fi } func_progressbar() { echo -e -n $'\033[34m------------------------------------------------------------------------- 100%\r' echo -e -n "\033[32m0% " for ((i=0; i<61; i++)); do echo -e -n "\033[32m=" case $i in 15) echo -e -n "25%" ;; 30) echo -e -n "50%" ;; 45) echo -e -n "75%" ;; 60) echo -e -n " 100%" ;; esac sleep 0.05 done echo -e "\e[m" } func_install() # Installiert den Calibre Updater { func_term_output func_change_install_dir func_check_dir # Ersetzen der Platzhaltervatiablen für die Installationsverzeichnisvariablen if [ -w "$BIN" ]; then echo -e "\n\033[1;34mDer Calibre-Autoupdater wird nun unter $UPDATER_INSTALL_LOCATION installiert...\e[m"; echo -e "\n\033[1;32mProgrammdatei wird nach $BIN kopiert\e[m"; sleep 3 cp calibre-autoupdate $BIN sed -i "s/_-INC-_/${INC//\//\/}/g" $BIN"calibre-autoupdate" sed -i "s/_-ETC-_/${ETC//\//\/}/g" $BIN"calibre-autoupdate" sed -i "s/_-BIN-_/${BIN//\//\/}/g" $BIN"calibre-autoupdate" sed -i "s/_-VERSION-_/${VERSION//\//\/}/g" $BIN"calibre-autoupdate" chmod 755 $BIN/calibre-autoupdate func_progressbar echo -e "\n\033[1;32mDie Header-Dateien werden nach $INC kopiert\e[m"; sleep 3 cp calibre-autoupdate.h calibre-autoupdate_checks.h $INC chmod 644 $INC/calibre-autoupdate.h $INC/calibre-autoupdate_checks.h func_progressbar echo -e "\n\033[1;32mDie Konfigurationsdatei wird nach $ETC kopiert\e[m"; sleep 3 cp calibre-autoupdate.conf $ETC sed -i "s/_-CALIBRE_INSTALL_LOCATION-_/${CALIBRE_INSTALL_LOCATION//\//\/}/g" $ETC"calibre-autoupdate.conf" chmod 644 $ETC/calibre-autoupdate.conf func_progressbar else echo -e "\n\033[1;34mDu hast kein Schreibrecht auf $UPDATER_INSTALL_LOCATION, daher wird SUDO versucht zu verwenden...\e[m"; sudo echo -e "\n\033[1;36mProgrammdatei wird nach $BIN kopiert\e[m\e[m" sudo cp calibre-autoupdate $BIN sudo sed -i "s/_-INC-_/${INC//\//\/}/g" $BIN"calibre-autoupdate" sudo sed -i "s/_-ETC-_/${ETC//\//\/}/g" $BIN"calibre-autoupdate" sudo sed -i "s/_-BIN-_/${BIN//\//\/}/g" $BIN"calibre-autoupdate" sudo sed -i "s/_-VERSION-_/${VERSION//\//\/}/g" $BIN"calibre-autoupdate" sudo chmod 755 $BIN"calibre-autoupdate" func_progressbar echo -e "\n\033[1;36mDie Header-Dateien werden nach $INC kopiert\e[m" sudo cp calibre-autoupdate.h calibre-autoupdate_checks.h $INC sudo chmod 644 $INC"calibre-autoupdate.h" $INC"calibre-autoupdate_checks.h" func_progressbar echo -e "\n\033[1;36mDie Konfigurationsdatei wird nach $ETC kopiert\e[m" sudo cp calibre-autoupdate.conf $ETC sudo sed -i "s/_-CALIBRE_INSTALL_LOCATION-_/${CALIBRE_INSTALL_LOCATION//\//\/}/g" $ETC"calibre-autoupdate.conf" sudo chmod 644 $ETC"calibre-autoupdate.conf"; func_progressbar fi echo -e "\n\n\n\033[1;36mDer Calibre-Autoupdater wurde erfolgreich installiert und" echo -e "kann nun mit calibre-update oder $BIN"calibre-update" aufgerufen werden\e[m\n" } func_uninstall() { echo # ist geplant } while test "$#" -gt 0 do arg="$1" shift case $arg in -*=*) optarg=`echo "$arg" | sed -e 's/[-_a-zA-Z0-9]*=//'` ;; *) optarg= ;; esac case "$arg" in --quiet | -q ) QUIET=1 ;; --help | -h ) func_help; exit 0 ;; --version | -V | -v ) func_version; exit 0 ;; --install | -i ) func_install; exit 0 ;; --uninstall | -u ) func_uninstall; exit 0;; esac done func_term_output func_usage exit 0