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

Version 0.20
This commit is contained in:
Leon Gaultier 2014-04-15 11:44:30 +02:00
parent 8afc21b90a
commit 480aa9c811
4 changed files with 48 additions and 27 deletions

View File

@ -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
}

View File

@ -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

View File

@ -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 <leongaultier@gmail.com>.\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
}

View File

@ -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
}