From 480aa9c811cd958e90596400aff8697f40518acc Mon Sep 17 00:00:00 2001 From: Leon Gaultier Date: Tue, 15 Apr 2014 11:44:30 +0200 Subject: [PATCH] =?UTF-8?q?Der=20Code=20wurde=20komplett=20=C3=BCberarbeit?= =?UTF-8?q?et=20und=20vieles=20neu=20geschrieben.=20Sauberer=20Code=20und?= =?UTF-8?q?=20weniger=20Abfragen.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Die Bedingungen und Schleifen wurden einfacher und logischer geschrieben Die Prüfung ob Calibre noch gestartet ist wenn ein Update gemacht wird ist nun simpler geschrieben, und es wird nicht mehr hart beendet sondern gewartet bis der Benutzer Calibre beendet Die Calibre Installation ist vom Installer in das Updaterskript gewandert, und im Zuge einer Calibre- installation wird automatisch die Konfigurationsdatei des Updaters angepasst (übergabe CalibreInstallOrt) Es wird wieder geprüft ob Calibre installiert ist bevor der Updater gestartet wird Version 0.20 --- CAU_Installer | 14 +++++++------- calibre-autoupdate | 19 +++++++++++++------ calibre-autoupdate.h | 25 +++++++++++++++++-------- calibre-autoupdate_checks.h | 17 +++++++++++------ 4 files changed, 48 insertions(+), 27 deletions(-) diff --git a/CAU_Installer b/CAU_Installer index 8549f34..c207e81 100755 --- a/CAU_Installer +++ b/CAU_Installer @@ -18,7 +18,7 @@ # Programmversion PROGNAME=`basename $0` -VERSION="0.19.99.9" +VERSION="0.20" ##### Variablen deklaration ##### # Downloadseite der Linuxinstallation @@ -81,17 +81,17 @@ func_install_root() { sudo echo -e "\n\033[1;36mDie Programm-Dateien werden nach $BIN kopiert\e[m\e[m" if [ ! -d $BIN ]; then sudo mkdir $BIN; fi; if [ ! -d $ETC ]; then sudo mkdir $ETC; fi; if [ ! -d $INC ]; then sudo mkdir $INC; fi sudo cp calibre-autoupdate $BIN; sudo chmod 755 $BIN"calibre-autoupdate" - sudo sed -i "s/_-ETC-_/${ETC//\//\/}/g" $BIN"calibre-autoupdate" - sudo sed -i "s/_-VERSION-_/${VERSION//\//\/}/g" $BIN"calibre-autoupdate" + sudo sed -i "s/_-ETC-_/${ETC//\//\/}/" $BIN"calibre-autoupdate" + sudo sed -i "s/_-VERSION-_/${VERSION//\//\/}/" $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 Konfigurations-Dateien werden nach $ETC kopiert\e[m" sudo cp calibre-autoupdate.conf $ETC; sudo chmod 644 $ETC"calibre-autoupdate.conf"; - sudo sed -i "s/_-INC-_/${INC//\//\/}/g" $ETC"calibre-autoupdate.conf" - sudo sed -i "s/_-BIN-_/${BIN//\//\/}/g" $ETC"calibre-autoupdate.conf" - sudo sed -i "s/_-CALIBRE_INSTALL_LOCATION-_/${CALIBRE_INSTALL_LOCATION//\//\/}/g" $ETC"calibre-autoupdate.conf" + sudo sed -i "s/_-INC-_/${INC//\//\/}/" $ETC"calibre-autoupdate.conf" + sudo sed -i "s/_-BIN-_/${BIN//\//\/}/" $ETC"calibre-autoupdate.conf" + sudo sed -i "s/_-CALIBRE_INSTALL_LOCATION-_/${CALIBRE_INSTALL_LOCATION//\//\/}/" $ETC"calibre-autoupdate.conf" func_progressbar return 0 } @@ -104,7 +104,7 @@ func_install_process() { # Installiert den Calibre Updater else func_install_root fi - echo -e "\n\n\033[1;34mDer Calibre-Autoupdater wurde erfolgreich installiert und" + echo -e "\n\n\033[1;32mDer Calibre-Autoupdater wurde erfolgreich installiert und" echo -e "kann nun mit \"calibre-update\" oder \"$BIN"calibre-update"\" aufgerufen werden\e[m\n" return 0 } diff --git a/calibre-autoupdate b/calibre-autoupdate index afef1f3..9ccdd30 100644 --- a/calibre-autoupdate +++ b/calibre-autoupdate @@ -82,6 +82,11 @@ # # v0.20 Der Code wurde komplett überarbeitet und vieles neu geschrieben. Sauberer Code und weniger Abfragen. # Die Bedingungen und Schleifen wurden einfacher und logischer geschrieben +# Die Prüfung ob Calibre noch gestartet ist wenn ein Update gemacht wird ist nun simpler geschrieben, +# und es wird nicht mehr hart beendet sondern gewartet bis der Benutzer Calibre beendet +# Die Calibre Installation ist vom Installer in das Updaterskript gewandert, und im Zuge einer Calibre- +# installation wird automatisch die Konfigurationsdatei des Updaters angepasst (übergabe CalibreInstallOrt) +# Es wird wieder geprüft ob Calibre installiert ist bevor der Updater gestartet wird # # TODO Auslesen der Download URL von der Download Seite # kontrolle ob alle benötigten programme für das skript vorhanden sind @@ -118,12 +123,14 @@ source $INC/calibre-autoupdate_checks.h ####################################################### ####################################################### +# Wenn eine grafische Oberfläche vorhanden ist, wird u.a. "notify-send" für Benachrichtigungen verwendet, ansonsten immer "echo" +NOTIFY="echo" +[ -n "$DISPLAY" ] && NOTIFY="notify-send -t 10000 -i /usr/share/icons/hicolor/256x256/apps/calibre-gui.png Calibre-Auto-Updater" + +####################################################### + func_update () { -# Wenn eine grafische Oberfläche vorhanden ist, wird u.a. "notify-send" für Benachrichtigungen verwendet, ansonsten immer "echo" - NOTIFY="echo" - [ -n "$DISPLAY" ] && NOTIFY="notify-send -t 10000 -i /usr/share/icons/hicolor/256x256/apps/calibre-gui.png Calibre-Auto-Updater" - func_term_output # ruft die Funktion für Konsolenausgabe auf func_check_stat # ruft die Funktion "check Status Netzwerk und Downloadadressen" auf CHECK_STATE_RESULT="$?" @@ -184,9 +191,9 @@ do func_check_prog; exit 0 ;; --uninstall | -U | -u ) func_uninstall; exit 0 ;; - --install_calibre ) + --install-calibre ) func_install_calibre; exit 0 ;; - --uninstall_calibre ) + --uninstall-calibre ) func_uninstall_calibre; exit 0 ;; esac done diff --git a/calibre-autoupdate.h b/calibre-autoupdate.h index 74fbd34..5857715 100644 --- a/calibre-autoupdate.h +++ b/calibre-autoupdate.h @@ -26,8 +26,8 @@ func_help () { echo " -V, --version gibt die Programmversion aus" echo " -c, --check kontrolliert ob benötigte Programme vorhanden sind" echo " -u, --uninstall deinstalliert den Calibre-Autoupdater" - echo " --install_calibre installiert Calibre in der aktuellsten Version" - echo " --uninstall_calibre deinstalliert das Calibre Programm" + echo " --install-calibre installiert Calibre in der aktuellsten Version" + echo " --uninstall-calibre deinstalliert das Calibre Programm" echo "" echo -e "Sende Fehler an .\n"; return 0 @@ -77,7 +77,7 @@ func_uninstall() { done if (( ! result )); then echo -e "\033[1;31mDie DeInstallation des Calibre-Autoupdaters wurde durch Dich abgebrochen.\e[m\n" - break + exit 0 fi echo -e "\033[1;31mDer Calibre-Autoupdater wird nun deinstalliert.\e[m" if [ -w "$CALIBRE_INSTALL_LOCATION" ]; then @@ -98,7 +98,7 @@ func_uninstall_calibre() { func_term_output if [ ! -d $CALIBRE_INSTALL_LOCATION/calibre ] ; then echo -e "\033[1;31mEs konnte keine Calibre Installation gefunden werden. Die DeInstallation wurde abgebrochen\e[m\n" - break + exit 0 fi while ((!gueltig)); do # beginn der Ja/Nein Abfrage echo -e "\033[1;34mMöchtest Du Calibre wirklich DeInstallieren? Calibre kann dann nicht mehr verwendet werden!" @@ -113,7 +113,7 @@ func_uninstall_calibre() { done if (( ! result )); then echo -e "\n\033[1;31mDie DeInstallation von Calibre wurde durch Dich abgebrochen.\e[m\n" - break + exit 0 fi echo -e "\033[1;34mCalibre wird nun deinstalliert.\e[m" if [ -w "$CALIBRE_INSTALL_LOCATION" ]; then @@ -127,6 +127,7 @@ func_uninstall_calibre() { func_install_calibre() { # Installationsort von Calibre + func_term_output read -p "Wohin soll Calibre installiert werden? [default /opt] " CALIBRE_INSTALL_LOCATION if [ -z $CALIBRE_INSTALL_LOCATION ]; then CALIBRE_INSTALL_LOCATION=/opt @@ -136,13 +137,21 @@ func_install_calibre() { read -p "Wohin soll Calibre installiert werden? [default /opt] " CALIBRE_INSTALL_LOCATION done if [ -w "$CALIBRE_INSTALL_LOCATION" ]; then - echo -e "\033[1;32mCalibre wird nun installiert...\n\e[m" + echo -e "\n\033[1;32mCalibre wird nun installiert...\n\e[m" wget -nv -O- $DOWNLOAD_URL | python -c "import sys; main=lambda x:sys.stderr.write('Download failed\n'); exec(sys.stdin.read()); main('$CALIBRE_INSTALL_LOCATION')" + if [ ! -w "$ECT" ]; then + echo -e "\033[1;34mDu hast kein Schreibrecht auf $ETC. Die Updater Konfigurationsdatei wird mit SUDO angepasst. Bitte gib hierzu Dein Userpasswort im Terminal ein...\n\e[m" + sudo sed -i "s/CALIBRE_INSTALL_LOCATION=.*/CALIBRE_INSTALL_LOCATION=${CALIBRE_INSTALL_LOCATION//\//\/}/" $ETC"calibre-autoupdate.conf" + else + sed -i "s/CALIBRE_INSTALL_LOCATION=.*/CALIBRE_INSTALL_LOCATION=${CALIBRE_INSTALL_LOCATION//\//\/}/" $ETC"calibre-autoupdate.conf" + fi else - echo -e "\033[1;34mDu hast kein Schreibrecht auf $CALIBRE_INSTALL_LOCATION. Calibre wird mit SUDO installiert. Bitte gib hierzu Dein Userpasswort ein...\n\e[m" + echo -e "\033[1;34mDu hast kein Schreibrecht auf $CALIBRE_INSTALL_LOCATION." + echo -e "Calibre wird mit SUDO installiert. Bitte gib hierzu Dein Userpasswort ein...\n\e[m" sudo -v && wget -nv -O- $DOWNLOAD_URL | sudo python -c "import sys; main=lambda x:sys.stderr.write('Download failed\n'); exec(sys.stdin.read()); main('$CALIBRE_INSTALL_LOCATION')" + sudo sed -i "s/CALIBRE_INSTALL_LOCATION=.*/CALIBRE_INSTALL_LOCATION=${CALIBRE_INSTALL_LOCATION//\//\/}/" $ETC"calibre-autoupdate.conf" fi - echo -e "\n\n\033[1;36mHerzlichen Glückwunsch. Calibre wurde unter $CALIBRE_INSTALL_LOCATION installiert" + echo -e "\n\n\033[1;32mHerzlichen Glückwunsch. Calibre wurde unter $CALIBRE_INSTALL_LOCATION installiert" echo -e "und kann nun mit \"calibre\" verwendet werden.\n\033[0m" return 0 } \ No newline at end of file diff --git a/calibre-autoupdate_checks.h b/calibre-autoupdate_checks.h index e7c8412..fdcb222 100644 --- a/calibre-autoupdate_checks.h +++ b/calibre-autoupdate_checks.h @@ -77,21 +77,26 @@ func_check_version () { return 0 } -func_check_prog () { - func_term_output +func_check_prog () { # Schaut ob Calibre und benötigte Programme installiert sind + func_term_output + if [ ! -d $CALIBRE_INSTALL_LOCATION/calibre ]; then + $NOTIFY "Check auf Calibre-Updates nicht möglich! Calibre ist gar nicht installiert. Bitte verwende calibre-autoupdate --install-calibre um Calibre zu installieren" + exit 0 + fi if [ ! -f $CURL ]; then $NOTIFY "Du hast Curl nich installiert, es wird aber für die Updatefunktion benötigt" - break + exit 0 fi if [ ! -f $AWK ]; then $NOTIFY "Du hast AWK nich installiert, es wird aber für die Updatefunktion benötigt" - break + exit 0 fi - if [ ! -f $NOTIFY ]; then + if [ ! -f /usr/bin/notify-send ]; then echo -e "\e[0;33mDu hast Notify-Send nich installiert, das Programm ist optional und wird\e[m" echo -e "für die Upatefunktion nicht unbedingt benötigt\n\e[m" sleep 10 - fi + fi echo -e "\033[32mAlle benötigten Programme sind installiert. Starte $PROGNAME ohne Optionen und" echo -e "es wird nach einer aktuellen Calibre Version gesucht\n\e[m"; + return 0 } \ No newline at end of file