From df14bffdee28cf14374d3efdd8e468fdde09842f Mon Sep 17 00:00:00 2001 From: Leon Gaultier Date: Tue, 8 Apr 2014 14:40:44 +0200 Subject: [PATCH 01/11] Neue Funktion im Installer, Check ob Verzeichnisstruktur vorhanden ist. /etc /bin /include, wenn nicht auf Nachfrage anlegen der Verzeichnisse --- CAU_Installer | 37 ++++++++++++++++++++-- calibre-autoupdate | 10 ++++-- calibre-autoupdate_checks.h | 62 +++++++++++++++++-------------------- 3 files changed, 71 insertions(+), 38 deletions(-) diff --git a/CAU_Installer b/CAU_Installer index db3afc1..c7b1abb 100755 --- a/CAU_Installer +++ b/CAU_Installer @@ -18,7 +18,7 @@ # Programmversion PROGNAME=`basename $0` -VERSION="0.14" +VERSION="0.14.99.1" ##### Variablen deklaration ##### # Downloadseite der Linuxinstallation @@ -84,7 +84,38 @@ ETC=$UPDATER_INSTALL_LOCATION/etc/ BIN=$UPDATER_INSTALL_LOCATION/bin/ } -func_check_dir() # Install oder Update Calibre Updater, Check ob Calibre überhaupt installiert ist +func_check_dir_structur() +{ + func_selection_query() + { + while ((!gueltig)); do # beginn der Ja/Nein Abfrage + echo -e "\033[1;34m" + read -sn1 -t 30 -p "Soll das Verzeichnis angelegt werden? [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;31mBitte Entschuldige, aber die Installation des Calibre-Autoupdaters" + echo -e "konnte nicht zu Ende geführt werden.\e[m\n" + exit 2 + fi + echo -e "\033[1;34mDas Verzeichnis wird angelegt!\e[m" + } + +if [ ! -d $BIN ] + echo -e "\033[1;34mEs konnte im Installationsort kein /bin Verzeichnis gefunden werden" + +fi + +} + +func_check_calibre_install() # 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.\033[1;34m" @@ -203,7 +234,7 @@ func_install_process() # Installiert den Calibre Updater { func_term_output func_change_install_dir -func_check_dir +func_check_calibre_install if [ -w "$BIN" ]; then func_install_noroot diff --git a/calibre-autoupdate b/calibre-autoupdate index 5fd5cea..cd10b72 100644 --- a/calibre-autoupdate +++ b/calibre-autoupdate @@ -71,7 +71,14 @@ # Die Funktion Installation des Updaters wurde aufgeteilt in root_install und noroot_install # Uninstall Funktion für den calibre-autoupdater mit gleichzeitiger nachfrage und eventueller # deinstallation vom Calibre Programm -# Der Code wurde überarbeitet, die Dialoge verbessert, Ergebnisse von Funktionsaufrufen in Variablen geschrieben +# Der Code wurde überarbeitet, die Dialoge verbessert, Ergebnisse von Funktionsaufrufen in Variablen +# geschrieben +# +# v0.15 die Funktion Versionsvergleich wurde mit der Funktion zum auslesen der Vorhanden Version und der verfügbaren +# Version +# zusammen gelegt. +# der Installer kontrolliert ob am Installationsort des Updaters die Verzeichnisstrucktur /bin /include /etc +# vorhanden ist und wenn nicht legt er sie an. # # TODO Auslesen der Download URL von der Download Seite # kontrolle ob alle benötigten programme für das skript vorhanden sind @@ -125,7 +132,6 @@ CHECK_STATE_RESULT="$?" case "$CHECK_STATE_RESULT" in 1) func_check_version - func_vercomp $CURRENT_VERSION $LATEST_VERSION # Funktion Versionvergleich CHECK_VERCOMP_RESULT="$?" case $CHECK_VERCOMP_RESULT in diff --git a/calibre-autoupdate_checks.h b/calibre-autoupdate_checks.h index 6e919ea..b3212df 100644 --- a/calibre-autoupdate_checks.h +++ b/calibre-autoupdate_checks.h @@ -40,37 +40,6 @@ else fi } -func_vercomp () { # Funktion zum Versionsvergleich - if [[ $1 == $2 ]] - then - return 0 - fi - local IFS=. - local i ver1=($1) ver2=($2) - # fill empty fields in ver1 with zeros - for ((i=${#ver1[@]}; i<${#ver2[@]}; i++)) - do - ver1[i]=0 - done - for ((i=0; i<${#ver1[@]}; i++)) - do - if [[ -z ${ver2[i]} ]] - then - # fill empty fields in ver2 with zeros - ver2[i]=0 - fi - if ((10#${ver1[i]} > 10#${ver2[i]})) - then - return 1 - fi - if ((10#${ver1[i]} < 10#${ver2[i]})) - then - return 2 - fi - done - return 0 -} - func_check_run_calibre () { CALIBRE_PID=`ps ax | grep /opt/calibre/bin/calibre | grep -v grep | awk '{printf $1}'` @@ -95,9 +64,36 @@ func_check_version () { LATEST_VERSION=`curl -s $CALIBRE_DOWNLOAD_PAGE | grep 'latest release of calibre' | sed 's/[^0-9.]*\([1-9]*[0-9]\.[1-9]*[0-9]\).*/\1/'` #Ermitteln der aktuell installierten Version. CURRENT_VERSION=`calibre --version | sed 's/[^0-9.]*\([0-9.]*\).*/\1/'` - return 0 -} + if [[ $CURRENT_VERSION == $LATEST_VERSION ]] + then + return 0 + fi + local IFS=. + local i ver1=($CURRENT_VERSION) ver2=($LATEST_VERSION) + # fill empty fields in ver1 with zeros + for ((i=${#ver1[@]}; i<${#ver2[@]}; i++)) + do + ver1[i]=0 + done + for ((i=0; i<${#ver1[@]}; i++)) + do + if [[ -z ${ver2[i]} ]] + then + # fill empty fields in ver2 with zeros + ver2[i]=0 + fi + if ((10#${ver1[i]} > 10#${ver2[i]})) + then + return 1 + fi + if ((10#${ver1[i]} < 10#${ver2[i]})) + then + return 2 + fi + done + return 0 +} func_check_prog () { func_term_output From afa930d6ed9a03cc551631bdf9204fcbee303644 Mon Sep 17 00:00:00 2001 From: Leon Gaultier Date: Wed, 9 Apr 2014 05:24:04 +0200 Subject: [PATCH 02/11] =?UTF-8?q?Unterfunktion=20in=20der=20Funktion=20f?= =?UTF-8?q?=C3=BCr=20die=20Verzeichnisstruktur=20geschrieben?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CAU_Installer | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/CAU_Installer b/CAU_Installer index c7b1abb..f67fec1 100755 --- a/CAU_Installer +++ b/CAU_Installer @@ -18,7 +18,7 @@ # Programmversion PROGNAME=`basename $0` -VERSION="0.14.99.1" +VERSION="0.14.99.2" ##### Variablen deklaration ##### # Downloadseite der Linuxinstallation @@ -101,18 +101,25 @@ func_check_dir_structur() done echo if (( ! result )); then - echo -e "\n\033[1;31mBitte Entschuldige, aber die Installation des Calibre-Autoupdaters" - echo -e "konnte nicht zu Ende geführt werden.\e[m\n" - exit 2 + echo -e "\n\033[1;31mBite wähle einen anderen Ort für die Installation aus. Es muß zwingend die" + echo -e "Verzeichnisstruktur /etc; /bin; /include vorhanden sein, oder angelegt werden\e[m\n" + func_install_process fi echo -e "\033[1;34mDas Verzeichnis wird angelegt!\e[m" } -if [ ! -d $BIN ] +if [ ! -d $BIN ]; then echo -e "\033[1;34mEs konnte im Installationsort kein /bin Verzeichnis gefunden werden" - + func_selection_query +fi +if [ ! -d $ETC ]; then + echo -e "\033[1;34mEs konnte im Installationsort kein /etc Verzeichnis gefunden werden" + func_selection_query +fi +if [ ! -d $INC ]; then + echo -e "\033[1;34mEs konnte im Installationsort kein /include Verzeichnis gefunden werden" + func_selection_query fi - } func_check_calibre_install() # Install oder Update Calibre Updater, Check ob Calibre überhaupt installiert ist @@ -233,10 +240,11 @@ func_install_root() func_install_process() # Installiert den Calibre Updater { func_term_output -func_change_install_dir +func_change_install_dir +func_check_dir_structur func_check_calibre_install - if [ -w "$BIN" ]; then + if [ -w "$UPDATER_INSTALL_LOCATION" ]; then func_install_noroot else func_install_root From 1d5c2088d22b845b3f64e23020b31f60931daa93 Mon Sep 17 00:00:00 2001 From: Leon Gaultier Date: Wed, 9 Apr 2014 06:23:11 +0200 Subject: [PATCH 03/11] =?UTF-8?q?Anlegen=20von=20nicht=20vorhandenen=20/bi?= =?UTF-8?q?n=20/etc=20Verzeichnissen=20eingef=C3=BCgt.=20Funktion=20daf?= =?UTF-8?q?=C3=BCr=20func=5Fcheck=5Fdir=5Fstructur?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CAU_Installer | 74 +++++++++++++++++++++++++++++---------------------- 1 file changed, 42 insertions(+), 32 deletions(-) diff --git a/CAU_Installer b/CAU_Installer index f67fec1..15313c1 100755 --- a/CAU_Installer +++ b/CAU_Installer @@ -84,42 +84,52 @@ ETC=$UPDATER_INSTALL_LOCATION/etc/ BIN=$UPDATER_INSTALL_LOCATION/bin/ } +func_selection_query() +{ + while ((!gueltig)); do # beginn der Ja/Nein Abfrage + echo -e "\033[1;34m" + read -sn1 -t 30 -p "Soll das Verzeichnis angelegt werden? [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;31mBite wähle einen anderen Ort für die Installation aus. Es muß zwingend die" + echo -e "Verzeichnisstruktur /etc; /bin; /include vorhanden sein, oder angelegt werden\e[m\n" + func_install_process + fi +} + func_check_dir_structur() { - func_selection_query() - { - while ((!gueltig)); do # beginn der Ja/Nein Abfrage - echo -e "\033[1;34m" - read -sn1 -t 30 -p "Soll das Verzeichnis angelegt werden? [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;31mBite wähle einen anderen Ort für die Installation aus. Es muß zwingend die" - echo -e "Verzeichnisstruktur /etc; /bin; /include vorhanden sein, oder angelegt werden\e[m\n" - func_install_process - fi - echo -e "\033[1;34mDas Verzeichnis wird angelegt!\e[m" - } + if [ ! -d $BIN ]; then + echo -e "\033[1;34mEs konnte unter $UPDATER_INSTALL_LOCATION kein /bin Verzeichnis gefunden werden" + func_selection_query + if [ ! -w $UPDATER_INSTALL_LOCATION ]; then + echo -e "Du hast kein Schreibrecht auf $UPDATER_INSTALL_LOCATION. Es wird SUDO verwendet!" + sudo mkdir $BIN + fi + mkdir $BIN + echo "Das Verzeichniss $BIN wurde unter $UPDATER_INSTALL_LOCATION angelegt" + fi -if [ ! -d $BIN ]; then - echo -e "\033[1;34mEs konnte im Installationsort kein /bin Verzeichnis gefunden werden" + if [ ! -d $ETC ]; then + echo -e "\033[1;34mEs konnte unter $UPDATER_INSTALL_LOCATION kein /ect Verzeichnis gefunden werden" func_selection_query -fi -if [ ! -d $ETC ]; then - echo -e "\033[1;34mEs konnte im Installationsort kein /etc Verzeichnis gefunden werden" - func_selection_query -fi -if [ ! -d $INC ]; then - echo -e "\033[1;34mEs konnte im Installationsort kein /include Verzeichnis gefunden werden" - func_selection_query -fi + if [ ! -w $UPDATER_INSTALL_LOCATION ]; then + echo -e "Du hast kein Schreibrecht auf $UPDATER_INSTALL_LOCATION. Es wird SUDO verwendet!" + sudo mkdir $ETC + fi + mkdir $ETC + echo "Das Verzeichniss $ETC wurde unter $UPDATER_INSTALL_LOCATION angelegt" + fi + + } func_check_calibre_install() # Install oder Update Calibre Updater, Check ob Calibre überhaupt installiert ist From 9a2cb9bee6069d0fd5fd7c39ac919dc5077826a9 Mon Sep 17 00:00:00 2001 From: Leon Gaultier Date: Wed, 9 Apr 2014 15:48:13 +0200 Subject: [PATCH 04/11] func_check_dir_structur() bereitet noch Probleme --- CAU_Installer | 86 ++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 64 insertions(+), 22 deletions(-) diff --git a/CAU_Installer b/CAU_Installer index 15313c1..fc1ea3e 100755 --- a/CAU_Installer +++ b/CAU_Installer @@ -18,7 +18,7 @@ # Programmversion PROGNAME=`basename $0` -VERSION="0.14.99.2" +VERSION="0.14.99.3" ##### Variablen deklaration ##### # Downloadseite der Linuxinstallation @@ -32,7 +32,7 @@ func_term_output () { # einheitliche Terminalausgabe ## 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\e[m"; - return 0 +return 0 } func_usage () # Gibt Auskunft über Verwendung des Scriptes @@ -40,6 +40,7 @@ func_usage () # Gibt Auskunft über Verwendung des Scriptes func_term_output echo "Verwendung: $PROGNAME [OPTION...]" echo -e "Verwende $PROGNAME --help oder $PROGNAME -h für mehr Informationen.\n" +return 0 } func_help () # Listet alle Optionsschalter auf @@ -54,7 +55,8 @@ func_help () # Listet alle Optionsschalter auf echo " -i, --install installiert den Calibre-Autoupdater (CAU)" echo " --install_calibre installiert Calibre in der aktuellsten Version" echo "" - echo -e "Sende Fehler an .\n"; + echo -e "Sende Fehler an .\n" +return 0 } func_version () # Versionsauskunft des Installers @@ -63,25 +65,64 @@ 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 -e "in der Hoffnung das es hilfreich ist, aber OHNR IRGENDEINE GARANTIE\n" - +return 0 } func_change_install_dir() # Funktion zur Abfrage des Installationsortes { -read -p "Wo soll der Calibre-Autoupdater installiert werden? [default /usr/local] " UPDATER_INSTALL_LOCATION + 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 + UPDATER_INSTALL_LOCATION=/usr/local fi -read -p "Wo befindet sich die Calibre Installation? [default /opt] " CALIBRE_INSTALL_LOCATION + if [ ! -d $UPDATER_INSTALL_LOCATION ]; then + echo -e "\n\033[1;31mDas von Dir angegebene Installationsverzeichnis $UPDATER_INSTALL_LOCATION existiert nicht\e[m" + while ((!gueltig)); do # beginn der Ja/Nein Abfrage + echo -e "\033[1;34m" + read -sn1 -t 30 -p "Möchtest Du einen neuen Installationsort angeben? [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 + if (( ! result )); then + echo -e "\n\033[1;31mDie Installation wurde durch Dich ebgebrochen\e[m\n" + exit 1 + fi + func_change_install_dir; return 0 + 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 -# Verzeichnishierarchie im Installationsort -INC=$UPDATER_INSTALL_LOCATION/include/ -ETC=$UPDATER_INSTALL_LOCATION/etc/ -BIN=$UPDATER_INSTALL_LOCATION/bin/ + if [ ! -d $CALIBRE_INSTALL_LOCATION ]; then + echo -e "\n\033[1;31mDas Calibre Installationsverzeichnis $CALIBRE_INSTALL_LOCATION existiert nicht\e[m" + while ((!gueltig)); do # beginn der Ja/Nein Abfrage + echo -e "\033[1;34m" + read -sn1 -t 30 -p "Sicherlich hast Du Dich verschrieben. Möchtest Du es erneut versuchen? [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 + if (( ! result )); then + echo -e "\n\033[1;31mDie Installation wurde durch Dich ebgebrochen\e[m\n" + exit 1 + fi + func_change_install_dir; return 0 + fi + # Verzeichnishierarchie im Installationsort + INC=$UPDATER_INSTALL_LOCATION/include/ + ETC=$UPDATER_INSTALL_LOCATION/etc/ + BIN=$UPDATER_INSTALL_LOCATION/bin/ +return 0 } func_selection_query() @@ -97,12 +138,12 @@ func_selection_query() *) gueltig=0 ;; esac done - echo if (( ! result )); then echo -e "\n\033[1;31mBite wähle einen anderen Ort für die Installation aus. Es muß zwingend die" echo -e "Verzeichnisstruktur /etc; /bin; /include vorhanden sein, oder angelegt werden\e[m\n" - func_install_process + exit 1 fi +return 0 } func_check_dir_structur() @@ -114,8 +155,8 @@ func_check_dir_structur() echo -e "Du hast kein Schreibrecht auf $UPDATER_INSTALL_LOCATION. Es wird SUDO verwendet!" sudo mkdir $BIN fi - mkdir $BIN - echo "Das Verzeichniss $BIN wurde unter $UPDATER_INSTALL_LOCATION angelegt" + mkdir $BIN + echo "Das Verzeichniss $BIN wurde angelegt" fi if [ ! -d $ETC ]; then @@ -125,11 +166,10 @@ func_check_dir_structur() echo -e "Du hast kein Schreibrecht auf $UPDATER_INSTALL_LOCATION. Es wird SUDO verwendet!" sudo mkdir $ETC fi - mkdir $ETC - echo "Das Verzeichniss $ETC wurde unter $UPDATER_INSTALL_LOCATION angelegt" + mkdir $ETC + echo "Das Verzeichniss $ETC wurde unter $UPDATER_INSTALL_LOCATION angelegt" fi - - +return 0 } func_check_calibre_install() # Install oder Update Calibre Updater, Check ob Calibre überhaupt installiert ist @@ -147,7 +187,7 @@ func_check_calibre_install() # Install oder Update Calibre Updater, Check ob Ca *) gueltig=0 ;; esac done - echo + #echo if (( ! result )); then echo -e "\n\033[1;31mDie installation des Calibre-Autoupdaters wurde durch Dich abgebrochen.\e[m\n" exit 1 @@ -155,7 +195,7 @@ func_check_calibre_install() # Install oder Update Calibre Updater, Check ob Ca echo -e "\033[1;34mNach der Calibre Installation wird die Installation des Calibre Autoupdaters durchgeführt\e[m" sleep 3 func_install_calibre - exit 0 + fi if test -f $BIN/calibre-autoupdate ; then # Updater bereits installiert? @@ -170,7 +210,7 @@ func_check_calibre_install() # Install oder Update Calibre Updater, Check ob Ca *) gueltig=0 ;; esac done - echo + #echo if (( ! result )); then echo -e "\n\033[1;31mDie installation des Calibre-Autoupdaters wurde durch Dich abgebrochen.\e[m\n" exit 1 @@ -253,6 +293,8 @@ func_term_output func_change_install_dir func_check_dir_structur func_check_calibre_install +echo "Rausgeflogen" +sleep 1000 if [ -w "$UPDATER_INSTALL_LOCATION" ]; then func_install_noroot From 60726764b86ae6713710a46b04ea214b1cb95dd8 Mon Sep 17 00:00:00 2001 From: Leon Gaultier Date: Thu, 10 Apr 2014 06:07:05 +0200 Subject: [PATCH 05/11] . --- CAU_Installer | 91 ++++++++++++--------------------------------------- 1 file changed, 21 insertions(+), 70 deletions(-) diff --git a/CAU_Installer b/CAU_Installer index fc1ea3e..e2b923a 100755 --- a/CAU_Installer +++ b/CAU_Installer @@ -90,7 +90,7 @@ func_change_install_dir() # Funktion zur Abfrage des Installationsortes done if (( ! result )); then echo -e "\n\033[1;31mDie Installation wurde durch Dich ebgebrochen\e[m\n" - exit 1 + exit 0 fi func_change_install_dir; return 0 fi @@ -114,7 +114,7 @@ func_change_install_dir() # Funktion zur Abfrage des Installationsortes done if (( ! result )); then echo -e "\n\033[1;31mDie Installation wurde durch Dich ebgebrochen\e[m\n" - exit 1 + exit 0 fi func_change_install_dir; return 0 fi @@ -125,53 +125,6 @@ func_change_install_dir() # Funktion zur Abfrage des Installationsortes return 0 } -func_selection_query() -{ - while ((!gueltig)); do # beginn der Ja/Nein Abfrage - echo -e "\033[1;34m" - read -sn1 -t 30 -p "Soll das Verzeichnis angelegt werden? [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 - if (( ! result )); then - echo -e "\n\033[1;31mBite wähle einen anderen Ort für die Installation aus. Es muß zwingend die" - echo -e "Verzeichnisstruktur /etc; /bin; /include vorhanden sein, oder angelegt werden\e[m\n" - exit 1 - fi -return 0 -} - -func_check_dir_structur() -{ - if [ ! -d $BIN ]; then - echo -e "\033[1;34mEs konnte unter $UPDATER_INSTALL_LOCATION kein /bin Verzeichnis gefunden werden" - func_selection_query - if [ ! -w $UPDATER_INSTALL_LOCATION ]; then - echo -e "Du hast kein Schreibrecht auf $UPDATER_INSTALL_LOCATION. Es wird SUDO verwendet!" - sudo mkdir $BIN - fi - mkdir $BIN - echo "Das Verzeichniss $BIN wurde angelegt" - fi - - if [ ! -d $ETC ]; then - echo -e "\033[1;34mEs konnte unter $UPDATER_INSTALL_LOCATION kein /ect Verzeichnis gefunden werden" - func_selection_query - if [ ! -w $UPDATER_INSTALL_LOCATION ]; then - echo -e "Du hast kein Schreibrecht auf $UPDATER_INSTALL_LOCATION. Es wird SUDO verwendet!" - sudo mkdir $ETC - fi - mkdir $ETC - echo "Das Verzeichniss $ETC wurde unter $UPDATER_INSTALL_LOCATION angelegt" - fi -return 0 -} - func_check_calibre_install() # Install oder Update Calibre Updater, Check ob Calibre überhaupt installiert ist { if test ! -d $CALIBRE_INSTALL_LOCATION/calibre ; then @@ -190,7 +143,7 @@ func_check_calibre_install() # Install oder Update Calibre Updater, Check ob Ca #echo if (( ! result )); then echo -e "\n\033[1;31mDie installation des Calibre-Autoupdaters wurde durch Dich abgebrochen.\e[m\n" - exit 1 + exit 0 fi echo -e "\033[1;34mNach der Calibre Installation wird die Installation des Calibre Autoupdaters durchgeführt\e[m" sleep 3 @@ -213,7 +166,7 @@ func_check_calibre_install() # Install oder Update Calibre Updater, Check ob Ca #echo if (( ! result )); then echo -e "\n\033[1;31mDie installation des Calibre-Autoupdaters wurde durch Dich abgebrochen.\e[m\n" - exit 1 + exit 0 fi fi } @@ -289,20 +242,18 @@ func_install_root() func_install_process() # Installiert den Calibre Updater { -func_term_output -func_change_install_dir -func_check_dir_structur -func_check_calibre_install -echo "Rausgeflogen" -sleep 1000 + func_term_output + func_change_install_dir +# func_check_dir_structur + func_check_calibre_install - if [ -w "$UPDATER_INSTALL_LOCATION" ]; then - func_install_noroot - else - func_install_root - fi - echo -e "\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" + if [ -w "$UPDATER_INSTALL_LOCATION" ]; then + func_install_noroot + else + func_install_root + fi + echo -e "\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_install_calibre() @@ -326,8 +277,8 @@ func_install_calibre() func_install_process } -while test "$#" -gt 0 -do + while test "$#" -gt 0 + do arg="$1" shift @@ -347,8 +298,8 @@ do func_install_calibre; exit 0 esac -done -func_term_output -func_usage -echo -e "\e[m" + done + func_term_output + func_usage + echo -e "\e[m" exit 0 \ No newline at end of file From 8db5d0e01fb6e7a2d13eb8a96f0089bd484b5334 Mon Sep 17 00:00:00 2001 From: Leon Gaultier Date: Thu, 10 Apr 2014 14:34:42 +0200 Subject: [PATCH 06/11] Installer komplett neu geschrieben. Besserer und sauberer Code, weniger abfragen. --- CAU_Installer | 376 +++++++++++++--------------------------- calibre-autoupdate | 10 +- calibre-autoupdate.conf | 4 +- calibre-autoupdate.h | 34 ++++ 4 files changed, 163 insertions(+), 261 deletions(-) diff --git a/CAU_Installer b/CAU_Installer index e2b923a..910a27c 100755 --- a/CAU_Installer +++ b/CAU_Installer @@ -18,288 +18,158 @@ # Programmversion PROGNAME=`basename $0` -VERSION="0.14.99.3" +VERSION="0.14.99.5" ##### Variablen deklaration ##### # Downloadseite der Linuxinstallation DOWNLOAD_URL=https://github.com/kovidgoyal/calibre/raw/master/setup/linux-installer.py +################################# +########### Einbinden der Headerfiles ################ +source CAU_Installer.h + ################################# - -func_term_output () { # einheitliche Terminalausgabe - ## 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\e[m"; -return 0 -} - -func_usage () # Gibt Auskunft über Verwendung des Scriptes +func_change_install_dir() # Funktion zur Abfrage der Installationsorte vom Updater und von Calibre { - func_term_output - echo "Verwendung: $PROGNAME [OPTION...]" - echo -e "Verwende $PROGNAME --help oder $PROGNAME -h für mehr Informationen.\n" -return 0 -} - -func_help () # Listet alle Optionsschalter auf -{ - func_term_output - echo "Verwende: $PROGNAME [OPTION...]" - echo "$PROGNAME -- Der Calibre-Autoupdate-Installer (CAUI)" - echo "" - echo "Options:" - echo " -h, --help zeigt die Hilfe an" - echo " -V, --version gibt die Programmversion aus" - echo " -i, --install installiert den Calibre-Autoupdater (CAU)" - echo " --install_calibre installiert Calibre in der aktuellsten Version" - echo "" - echo -e "Sende Fehler an .\n" -return 0 -} - -func_version () # Versionsauskunft des Installers -{ - func_term_output - echo "$PROGNAME: Der Calibre-Autoupdate-Installer (CAUI) v$VERSION" - echo "Leon Gaultier 2013-2014. Das Programm darf verteilt werden," - echo -e "in der Hoffnung das es hilfreich ist, aber OHNR IRGENDEINE GARANTIE\n" -return 0 -} - -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 - if [ ! -d $UPDATER_INSTALL_LOCATION ]; then - echo -e "\n\033[1;31mDas von Dir angegebene Installationsverzeichnis $UPDATER_INSTALL_LOCATION existiert nicht\e[m" - while ((!gueltig)); do # beginn der Ja/Nein Abfrage - echo -e "\033[1;34m" - read -sn1 -t 30 -p "Möchtest Du einen neuen Installationsort angeben? [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 - if (( ! result )); then - echo -e "\n\033[1;31mDie Installation wurde durch Dich ebgebrochen\e[m\n" - exit 0 - fi - func_change_install_dir; return 0 - 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 - if [ ! -d $CALIBRE_INSTALL_LOCATION ]; then - echo -e "\n\033[1;31mDas Calibre Installationsverzeichnis $CALIBRE_INSTALL_LOCATION existiert nicht\e[m" - while ((!gueltig)); do # beginn der Ja/Nein Abfrage - echo -e "\033[1;34m" - read -sn1 -t 30 -p "Sicherlich hast Du Dich verschrieben. Möchtest Du es erneut versuchen? [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 - if (( ! result )); then - echo -e "\n\033[1;31mDie Installation wurde durch Dich ebgebrochen\e[m\n" - exit 0 - fi - func_change_install_dir; return 0 - fi - # Verzeichnishierarchie im Installationsort - INC=$UPDATER_INSTALL_LOCATION/include/ - ETC=$UPDATER_INSTALL_LOCATION/etc/ - BIN=$UPDATER_INSTALL_LOCATION/bin/ -return 0 -} - -func_check_calibre_install() # 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.\033[1;34m" - while ((!gueltig)); do # beginn der Ja/Nein Abfrage - echo -e "\033[1;34m" - read -sn1 -t 30 -p "Möchtest Du Calibre jetzt installieren? [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 abgebrochen.\e[m\n" - exit 0 - fi - echo -e "\033[1;34mNach der Calibre Installation wird die Installation des Calibre Autoupdaters durchgeführt\e[m" - sleep 3 - func_install_calibre - + # Installationsort vom Updater + 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 - - 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 abgebrochen.\e[m\n" - exit 0 - 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.07 + while [ ! -d $UPDATER_INSTALL_LOCATION ]; do + echo -e "\n\033[1;31mDas Verzeichnis $UPDATER_INSTALL_LOCATION existiert nicht. Bitte gib ein existierendes Verzeichnis ein!\e[m" + read -p "Wo soll der Calibre-Autoupdater installiert werden? [default /usr/local] " UPDATER_INSTALL_LOCATION done - echo -e "\e[m" + # Installationsort von Calibre + read -p "Wo befindet sich die Calibre Installation? [default /opt] " CALIBRE_INSTALL_LOCATION + if [ -z $CALIBRE_INSTALL_LOCATION ]; then + CALIBRE_INSTALL_LOCATION=/opt + fi + while [ ! -d $CALIBRE_INSTALL_LOCATION ]; do + echo -e "\n\033[1;31mDas Verzeichnis $CALIBRE_INSTALL_LOCATION existiert nicht. Bitte gib ein existierendes Verzeichnis ein!\e[m" + read -p "Wo befindet sich die Calibre Installation? [default /opt] " CALIBRE_INSTALL_LOCATION + done + # Verzeichnishierarchie im Installationsort + INC=$UPDATER_INSTALL_LOCATION/include/ + ETC=$UPDATER_INSTALL_LOCATION/etc/ + BIN=$UPDATER_INSTALL_LOCATION/bin/ + return 0 } func_install_noroot() { -# Die sed Befehle ersetzen in den Programmdateien Platzhalter für den Installationsort. -# Grund hierfür sind die includes der Header unf Configfiles die den kompletten Fad benörigen - echo -e "\n\033[1;34mDer Calibre-Autoupdater wird nun unter $UPDATER_INSTALL_LOCATION installiert...\e[m"; - echo -e "\033[1;32mProgramm-Dateien wird nach $BIN kopiert\e[m" - cp calibre-autoupdate $BIN - sed -i "s/_-ETC-_/${ETC//\//\/}/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" - 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 Konfigurations-Dateien wird nach $ETC kopiert\e[m" - cp calibre-autoupdate.conf $ETC - sed -i "s/_-INC-_/${INC//\//\/}/g" $ETC"calibre-autoupdate.conf" - sed -i "s/_-BIN-_/${BIN//\//\/}/g" $ETC"calibre-autoupdate.conf" - sed -i "s/_-CALIBRE_INSTALL_LOCATION-_/${CALIBRE_INSTALL_LOCATION//\//\/}/g" $ETC"calibre-autoupdate.conf" - chmod 644 $ETC/calibre-autoupdate.conf - func_progressbar + echo -e "\n\033[1;36mDie Programm-Dateien werden nach $BIN kopiert\e[m\e[m" + if [ ! -d $BIN ]; then mkdir $BIN; fi; if [ ! -d $ETC ]; then mkdir $ETC; fi; if [ ! -d $INC ]; then mkdir $INC; fi + cp calibre-autoupdate $BIN; chmod 755 $BIN"calibre-autoupdate" + sed -i "s/_-VERSION-_/${VERSION//\//\/}/g" $BIN"calibre-autoupdate" # Der Installer übergibt die Versionsnummer + func_progressbar + echo -e "\n\033[1;36mDie Header-Dateien werden nach $INC kopiert\e[m" + 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;36mDie Konfigurations-Dateien werden nach $ETC kopiert\e[m" + cp calibre-autoupdate.conf $ETC; chmod 644 $ETC"calibre-autoupdate.conf"; + func_progressbar + return 0 } func_install_root() { -# Die sed Befehle ersetzen in den Programmdateien Platzhalter für den Installationsort. -# Grund hierfür sind die includes der Header unf Configfiles die den kompletten Fad benörigen - echo -e "\n\033[1;34mDu hast kein Schreibrecht auf $UPDATER_INSTALL_LOCATION, daher wird SUDO versucht zu verwenden...\e[m"; - sudo echo -e "\033[1;36mProgramm-Dateien wird nach $BIN kopiert\e[m\e[m" - sudo cp calibre-autoupdate $BIN - sudo sed -i "s/_-ETC-_/${ETC//\//\/}/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 Konfigurations-Dateien wird nach $ETC kopiert\e[m" - sudo cp calibre-autoupdate.conf $ETC - 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 chmod 644 $ETC"calibre-autoupdate.conf"; - func_progressbar + 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;36mProgramm-Dateien wird 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/_-VERSION-_/${VERSION//\//\/}/g" $BIN"calibre-autoupdate" # Der Installer übergibt die Versionsnummer + 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 wird nach $ETC kopiert\e[m" + sudo cp calibre-autoupdate.conf $ETC; sudo chmod 644 $ETC"calibre-autoupdate.conf"; + func_progressbar + return 0 } func_install_process() # Installiert den Calibre Updater { - func_term_output - func_change_install_dir -# func_check_dir_structur - func_check_calibre_install - - if [ -w "$UPDATER_INSTALL_LOCATION" ]; then - func_install_noroot - else - func_install_root - fi - echo -e "\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_install_calibre() -{ - if [ ! $CALIBRE_INSTALL_LOCATION ]; then func_term_output - read -p "Wohin soll Calibre installiert werden? [default /opt] " CALIBRE_INSTALL_LOCATION - fi - if [ -z $CALIBRE_INSTALL_LOCATION ]; then - CALIBRE_INSTALL_LOCATION=/opt - fi - if [ -w "$CALIBRE_INSTALL_LOCATION" ]; then - echo -e "\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')" - 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" - 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')" - fi - echo -e "\n\n\033[1;36mHerzlichen Glückwunsch. Calibre wurde installiert und kann nun mit "calibre" verwendet werden.\n\033[0m" - sleep 5 - func_install_process + func_change_install_dir + if [ -w "$UPDATER_INSTALL_LOCATION" ]; then + func_install_noroot + else + func_install_root + fi + echo -e "\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" + return 0 } - while test "$#" -gt 0 - do - arg="$1" - shift - case $arg in - -*=*) optarg=`echo "$arg" | sed -e 's/[-_a-zA-Z0-9]*=//'` ;; - *) optarg= ;; - esac +#### Main Funktion #### +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 - --help | -h ) + case "$arg" in + --help | -h ) func_help; exit 0 ;; - --version | -V | -v ) + --version | -V | -v ) func_version; exit 0 ;; - --install | -i | -I ) + --install | -i | -I ) func_install_process; exit 0 ;; - --install_calibre ) - func_install_calibre; exit 0 - esac + esac +done +func_term_output +func_usage +echo -e "\e[m" +exit 0 - done - func_term_output - func_usage - echo -e "\e[m" -exit 0 \ No newline at end of file + + + + + + + + + + + + + + + + + + + + +############################################################################### + +# Die sed Befehle ersetzen in den Programmdateien Platzhalter für den Installationsort. +# Grund hierfür sind die includes der Header unf Configfiles die den kompletten Fad benörigen +# echo -e "\n\033[1;34mDer Calibre-Autoupdater wird nun unter $UPDATER_INSTALL_LOCATION installiert...\e[m"; +# echo -e "\033[1;32mDie Programm-Dateien werden nach $BIN kopiert\e[m" +# cp calibre-autoupdate $BIN + # #sed -i "s/_-ETC-_/${ETC//\//\/}/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" +# 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 Konfigurations-Dateien wird nach $ETC kopiert\e[m" +# cp calibre-autoupdate.conf $ETC +# #sed -i "s/_-INC-_/${INC//\//\/}/g" $ETC"calibre-autoupdate.conf" +# #sed -i "s/_-BIN-_/${BIN//\//\/}/g" $ETC"calibre-autoupdate.conf" +# #sed -i "s/_-CALIBRE_INSTALL_LOCATION-_/${CALIBRE_INSTALL_LOCATION//\//\/}/g" $ETC"calibre-autoupdate.conf" +# chmod 644 $ETC/calibre-autoupdate.conf +# func_progressbar +# return 0 +################################################################################ \ No newline at end of file diff --git a/calibre-autoupdate b/calibre-autoupdate index cd10b72..4f51275 100644 --- a/calibre-autoupdate +++ b/calibre-autoupdate @@ -87,9 +87,6 @@ ###################################### ###################################### -# Installationsfade in der Verzeichnishierarchie -ETC=_-ETC-_ - # Programmversion PROGNAME=`basename $0` @@ -101,16 +98,17 @@ VERSION="_-VERSION-_" # bis Veränderungen auf der Internetseite durchgeführt wurden ################################# + # Einlesen des Configfiles mit den Variablen für die Calibre Downloadseite, Hauptseite # und den Installationsfaden in der Verzeichnishierarchie -source $ETC/calibre-autoupdate.conf +source ../etc/calibre-autoupdate.conf ################################# ##### Zusätzliche Funktionen aus Headerfiles laden ##### -source $INC/calibre-autoupdate.h -source $INC/calibre-autoupdate_checks.h +source ../include/calibre-autoupdate.h +source ../include/calibre-autoupdate_checks.h diff --git a/calibre-autoupdate.conf b/calibre-autoupdate.conf index 7a27e1a..b6ac210 100644 --- a/calibre-autoupdate.conf +++ b/calibre-autoupdate.conf @@ -20,6 +20,6 @@ NOTIFY=/usr/bin/notify-send AWK=/usr/bin/awk # Installationsfade in der Verzeichnishierarchie -INC=_-INC-_ -BIN=_-BIN-_ +#INC=_-INC-_ +#BIN=_-BIN-_ diff --git a/calibre-autoupdate.h b/calibre-autoupdate.h index 9329386..60af768 100644 --- a/calibre-autoupdate.h +++ b/calibre-autoupdate.h @@ -124,4 +124,38 @@ func_uninstall_calibre() fi echo -e "\n\033[1;32mCalibre würde DeInstalliert! Schade es ist ein tolles Programm zur eBookverwaltung :-)\n\e[m" return 0 +} + + + + + + + + + + + + + + +func_install_calibre() +{ + if [ ! $CALIBRE_INSTALL_LOCATION ]; then + func_term_output + read -p "Wohin soll Calibre installiert werden? [default /opt] " CALIBRE_INSTALL_LOCATION + fi + if [ -z $CALIBRE_INSTALL_LOCATION ]; then + CALIBRE_INSTALL_LOCATION=/opt + fi + if [ -w "$CALIBRE_INSTALL_LOCATION" ]; then + echo -e "\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')" + 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" + 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')" + fi + echo -e "\n\n\033[1;36mHerzlichen Glückwunsch. Calibre wurde installiert und kann nun mit "calibre" verwendet werden.\n\033[0m" + sleep 5 + } \ No newline at end of file From 476b2e87a6c5fc41426fb4e604b1b9e6fdffc0f9 Mon Sep 17 00:00:00 2001 From: Leon Gaultier Date: Thu, 10 Apr 2014 16:49:39 +0200 Subject: [PATCH 07/11] =?UTF-8?q?die=20sed=20Befehle=20m=C3=BCssen=20weder?= =?UTF-8?q?=20rein.=20Sonst=20funktioniert=20das=20Script=20nur=20wenn=20e?= =?UTF-8?q?s=20vom=20Installordner=20aus=20aufgerufen=20wird.=20Also=20wie?= =?UTF-8?q?der=20per=20sed=20die=20Installpfade=20eintragen=20lassen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CAU_Installer | 12 ++- calibre-autoupdate | 129 ++++++++++++------------- calibre-autoupdate.h | 154 ++++++++++++++--------------- calibre-autoupdate_checks.h | 188 ++++++++++++++++++++---------------- 4 files changed, 249 insertions(+), 234 deletions(-) diff --git a/CAU_Installer b/CAU_Installer index 910a27c..a7adbcb 100755 --- a/CAU_Installer +++ b/CAU_Installer @@ -18,7 +18,7 @@ # Programmversion PROGNAME=`basename $0` -VERSION="0.14.99.5" +VERSION="0.14.99.6" ##### Variablen deklaration ##### # Downloadseite der Linuxinstallation @@ -63,13 +63,14 @@ func_install_noroot() echo -e "\n\033[1;36mDie Programm-Dateien werden nach $BIN kopiert\e[m\e[m" if [ ! -d $BIN ]; then mkdir $BIN; fi; if [ ! -d $ETC ]; then mkdir $ETC; fi; if [ ! -d $INC ]; then mkdir $INC; fi cp calibre-autoupdate $BIN; chmod 755 $BIN"calibre-autoupdate" - sed -i "s/_-VERSION-_/${VERSION//\//\/}/g" $BIN"calibre-autoupdate" # Der Installer übergibt die Versionsnummer + sed -i "s/_-VERSION-_/${VERSION//\//\/}/g" $BIN"calibre-autoupdate" # Der Installer übergibt die Versionsnummer func_progressbar echo -e "\n\033[1;36mDie Header-Dateien werden nach $INC kopiert\e[m" 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;36mDie Konfigurations-Dateien werden nach $ETC kopiert\e[m" cp calibre-autoupdate.conf $ETC; chmod 644 $ETC"calibre-autoupdate.conf"; + sed -i "s/_-CALIBRE_INSTALL_LOCATION-_/${CALIBRE_INSTALL_LOCATION//\//\/}/g" $ETC"calibre-autoupdate.conf" # Ort der Calibreinstall func_progressbar return 0 } @@ -77,7 +78,7 @@ func_install_noroot() func_install_root() { 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;36mProgramm-Dateien wird nach $BIN kopiert\e[m\e[m" + 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/_-VERSION-_/${VERSION//\//\/}/g" $BIN"calibre-autoupdate" # Der Installer übergibt die Versionsnummer @@ -85,8 +86,9 @@ func_install_root() 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 wird nach $ETC kopiert\e[m" + 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/_-CALIBRE_INSTALL_LOCATION-_/${CALIBRE_INSTALL_LOCATION//\//\/}/g" $ETC"calibre-autoupdate.conf" # Ort der Calibreinstall func_progressbar return 0 } @@ -100,7 +102,7 @@ func_install_process() # Installiert den Calibre Updater else func_install_root fi - echo -e "\n\n\033[1;36mDer Calibre-Autoupdater wurde erfolgreich installiert und" + echo -e "\n\n\033[1;34mDer 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 4f51275..3e47356 100644 --- a/calibre-autoupdate +++ b/calibre-autoupdate @@ -80,118 +80,111 @@ # der Installer kontrolliert ob am Installationsort des Updaters die Verzeichnisstrucktur /bin /include /etc # vorhanden ist und wenn nicht legt er sie an. # +# 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 +# # TODO Auslesen der Download URL von der Download Seite # kontrolle ob alle benötigten programme für das skript vorhanden sind # # -###################################### -###################################### +########################################################## +########################################################## # Programmversion PROGNAME=`basename $0` VERSION="_-VERSION-_" + + ################################# ######### CONFIGURATION ######### # Diese Version funktioniert für alle Linuxsysteme nur so lange # bis Veränderungen auf der Internetseite durchgeführt wurden ################################# - # Einlesen des Configfiles mit den Variablen für die Calibre Downloadseite, Hauptseite # und den Installationsfaden in der Verzeichnishierarchie source ../etc/calibre-autoupdate.conf - ################################# ##### Zusätzliche Funktionen aus Headerfiles laden ##### source ../include/calibre-autoupdate.h source ../include/calibre-autoupdate_checks.h - - - ####################################################### ####################################################### -## main vom Script --- Start des Updater Skripts + 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" + 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="$?" -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="$?" + case "$CHECK_STATE_RESULT" in + 1) + func_check_version + CHECK_VERCOMP_RESULT="$?" -case "$CHECK_STATE_RESULT" in - 1) - func_check_version - CHECK_VERCOMP_RESULT="$?" - - case $CHECK_VERCOMP_RESULT in - 0) - $NOTIFY "Deine Calibre Version ist auf dem aktuellsten Stand ($CURRENT_VERSION).";; - 1) - $NOTIFY "Uh Oh! Deine Calibre Version ist aktueller wie die letzte Verfügbare! (Installiert: $CURRENT_VERSION, Letzte Verfügbare: $LATEST_VERSION)";; - 2) - $NOTIFY "Ein Calibre Update ist verfügbar. (Installiert: $CURRENT_VERSION, letzte Verfügbare: $LATEST_VERSION)" - # Installiert die aktuellste verfügbare Version von der Calibre Homepage - func_check_run_calibre # Aufruf der Funktion ob Calibre gestartet ist - - if [ -w "$CALIBRE_INSTALL_LOCATION" ]; then - $NOTIFY "Das Update wird nun installiert..." - echo -e "\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')" - else - $NOTIFY "Du hast kein Schreibrecht auf $CALIBRE_INSTALL_LOCATION. Das Update wird mit SUDO installiert. Bitte gib hierzu Dein Userpasswort im Terminalfenster ein..." - echo -e "\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')" - fi - $NOTIFY "Calibre wurde auf die neuste Version aktuallisiert." - ;; - esac - ;; - - 2) - $NOTIFY "Versionsvergleich fehlgeschlagen!!! Die Calibre Homepage $CHECK_CALIBRE_DOWNLOAD_PAGE ist nicht verfügbar!" - ;; - 3) - $NOTIFY "Update fehlgeschlagen!!! Die Download Seite $CHECK_DOWNLOAD_URL ist nicht verfügbar!" - ;; - 4) - $NOTIFY "Update und Versionsvergleich fehlgeschlagen!!! Kann kein Netzwerkinterface finden!" - ;; -esac -echo -e "\e[m" + case $CHECK_VERCOMP_RESULT in + 0) + $NOTIFY "Deine Calibre Version ist auf dem aktuellsten Stand ($CURRENT_VERSION).";; + 1) + $NOTIFY "Uh Oh! Deine Calibre Version ist aktueller wie die letzte Verfügbare! (Installiert: $CURRENT_VERSION, Letzte Verfügbare: $LATEST_VERSION)";; + 2) + $NOTIFY "Ein Calibre Update ist verfügbar. (Installiert: $CURRENT_VERSION, letzte Verfügbare: $LATEST_VERSION)" + # Installiert die aktuellste verfügbare Version von der Calibre Homepage + func_check_run_calibre # Aufruf der Funktion ob Calibre gestartet ist + if [ -w "$CALIBRE_INSTALL_LOCATION" ]; then + $NOTIFY "Das Update wird nun installiert..." + echo -e "\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')" + else + $NOTIFY "Du hast kein Schreibrecht auf $CALIBRE_INSTALL_LOCATION. Das Update wird mit SUDO installiert. Bitte gib hierzu Dein Userpasswort im Terminalfenster ein..." + echo -e "\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')" + fi + $NOTIFY "Calibre wurde auf die neuste Version aktuallisiert.";; + esac + ;; + 2) + $NOTIFY "Versionsvergleich fehlgeschlagen!!! Die Calibre Homepage $CHECK_CALIBRE_DOWNLOAD_PAGE ist nicht verfügbar!";; + 3) + $NOTIFY "Update fehlgeschlagen!!! Die Download Seite $CHECK_DOWNLOAD_URL ist nicht verfügbar!";; + 4) + $NOTIFY "Update und Versionsvergleich fehlgeschlagen!!! Kann kein Netzwerkinterface finden!";; + esac + echo -e "\e[m" + return 0 } +#### Main Funktion #### while test "$#" -gt 0 do - arg="$1" - shift + arg="$1" + shift + case $arg in + -*=*) optarg=`echo "$arg" | sed -e 's/[-_a-zA-Z0-9]*=//'` ;; + *) optarg= ;; + esac - case $arg in - -*=*) optarg=`echo "$arg" | sed -e 's/[-_a-zA-Z0-9]*=//'` ;; - *) optarg= ;; - esac - - case "$arg" in - --help | -h ) + case "$arg" in + --help | -h ) func_help; exit 0 ;; - --version | -V | -v ) + --version | -V | -v ) func_version; exit 0 ;; - --check | -C | -c ) + --check | -C | -c ) func_check_prog; exit 0 ;; - --uninstall | -U | -u ) + --uninstall | -U | -u ) func_uninstall; exit 0;; - --uninstall_calibre ) + --uninstall_calibre ) func_uninstall_calibre; exit 0 ;; - esac - + esac done func_check_prog func_update diff --git a/calibre-autoupdate.h b/calibre-autoupdate.h index 60af768..79cd9af 100644 --- a/calibre-autoupdate.h +++ b/calibre-autoupdate.h @@ -2,10 +2,20 @@ # Copyright (C) 2013-2014 Leon Gaultier # +func_term_output () +{ + ## Beginne mit der Ausgbe ## + tty -s && clear + echo -e "\033[44m \033[0m\033[1m $PROGNAME Version $VERSION\033[0m\n\033[44m \033[0m 2013-2014 by Leon Gaultier\n\e[m"; + return 0 +} + func_usage () { + func_term_output echo "Verwendung: $PROGNAME [OPTION...]" echo "Verwende '$PROGNAME --help' oder '$PROGNAME -h' für mehr Informationen." + return 0 } func_help () @@ -22,6 +32,7 @@ func_help () echo " --uninstall_calibre deinstalliert das Calibre Programm" echo "" echo -e "Sende Fehler an .\n"; + return 0 } func_version () @@ -30,14 +41,7 @@ func_version () echo "$PROGNAME: Der Calibre! autoupdater v$VERSION" echo "Leon Gaultier 2013-2014. Das Programm darf verteilt werden," echo -e "in der Hoffnung das es hilfreich ist, aber OHNR IRGENDEINE GARANTIE\n" - -} - -func_term_output () { - ## Beginne mit der Ausgbe ## - tty -s && clear - echo -e "\033[44m \033[0m\033[1m $PROGNAME Version $VERSION\033[0m\n\033[44m \033[0m 2013-2014 by Leon Gaultier\n\e[m"; - return 0 + return 0 } func_progressbar() @@ -47,38 +51,38 @@ func_progressbar() 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%" ;; + 15) + echo -e -n "25%" ;; + 30) + echo -e -n "50%" ;; + 45) + echo -e -n "75%" ;; + 60) + echo -e -n " 100%" ;; esac sleep 0.03 done echo -e "\e[m" return 0 } + func_uninstall() { - func_term_output - while ((!gueltig)); do # beginn der Ja/Nein Abfrage - echo -e "\033[1;34m" - read -sn1 -t 30 -p "Möchtest Du den Calibre-Autoupdater wirklich DeInstallieren? [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 + func_term_output + while ((!gueltig)); do # beginn der Ja/Nein Abfrage + echo -e "\033[1;34m" + read -sn1 -t 30 -p "Möchtest Du den Calibre-Autoupdater wirklich DeInstallieren? [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 if (( ! result )); then echo -e "\033[1;31mDie DeInstallation des Calibre-Autoupdaters wurde durch Dich abgebrochen.\e[m\n" - exit 1 + break fi echo -e "\033[1;31mDer Calibre-Autoupdater wird nun deinstalliert.\e[m" if [ -w "$CALIBRE_INSTALL_LOCATION" ]; then @@ -92,29 +96,30 @@ func_uninstall() fi func_progressbar echo -e "\n\033[1;32mDer Calibre-Autoupdater wurde deinstalliert. Schade das Du ihn nicht weiter verwendest\n\e[m" + return 0 } + func_uninstall_calibre() { - func_term_output - if test ! -d $CALIBRE_INSTALL_LOCATION/calibre ; then - echo -e "\033[1;31mEs konnte keine Calibre Installation gefunden werden. Die DeInstallation wurde abgebrochen\e[m\n" - exit 1 - 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!" - read -sn1 -t 30 -p "Deine Bücher und die Calibre Bibliothek bleiben erhalten. [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 + 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 + 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!" + read -sn1 -t 30 -p "Deine Bücher und die Calibre Bibliothek bleiben erhalten. [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 if (( ! result )); then echo -e "\n\033[1;31mDie DeInstallation von Calibre wurde durch Dich abgebrochen.\e[m\n" - exit 1 + break fi echo -e "\033[1;34mCalibre wird nun deinstalliert.\e[m" if [ -w "$CALIBRE_INSTALL_LOCATION" ]; then @@ -122,40 +127,29 @@ func_uninstall_calibre() else sudo calibre-uninstall fi - echo -e "\n\033[1;32mCalibre würde DeInstalliert! Schade es ist ein tolles Programm zur eBookverwaltung :-)\n\e[m" - return 0 + echo -e "\n\033[1;32mCalibre würde DeInstalliert! Schade es ist ein tolles Programm zur eBookverwaltung :-)\n\e[m" + return 0 } - - - - - - - - - - - - - func_install_calibre() { - if [ ! $CALIBRE_INSTALL_LOCATION ]; then - func_term_output - read -p "Wohin soll Calibre installiert werden? [default /opt] " CALIBRE_INSTALL_LOCATION - fi - if [ -z $CALIBRE_INSTALL_LOCATION ]; then - CALIBRE_INSTALL_LOCATION=/opt - fi - if [ -w "$CALIBRE_INSTALL_LOCATION" ]; then - echo -e "\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')" - 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" - 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')" - fi - echo -e "\n\n\033[1;36mHerzlichen Glückwunsch. Calibre wurde installiert und kann nun mit "calibre" verwendet werden.\n\033[0m" - sleep 5 - +# Installationsort von Calibre + read -p "Wo befindet sich die Calibre Installation? [default /opt] " CALIBRE_INSTALL_LOCATION + if [ -z $CALIBRE_INSTALL_LOCATION ]; then + CALIBRE_INSTALL_LOCATION=/opt + fi + while [ ! -d $CALIBRE_INSTALL_LOCATION ]; do + echo -e "\n\033[1;31mDas Verzeichnis $CALIBRE_INSTALL_LOCATION existiert nicht. Bitte gib ein existierendes Verzeichnis ein!\e[m" + read -p "Wo befindet sich die Calibre Installation? [default /opt] " CALIBRE_INSTALL_LOCATION + done + if [ -w "$CALIBRE_INSTALL_LOCATION" ]; then + echo -e "\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')" + 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" + 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')" + fi + echo -e "\n\n\033[1;36mHerzlichen 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 b3212df..fab694c 100644 --- a/calibre-autoupdate_checks.h +++ b/calibre-autoupdate_checks.h @@ -2,54 +2,67 @@ # Copyright (C) 2013-2014 Leon Gaultier # -func_http_status_code () { - echo -e "\033[1;34m Hole Status Code von $CHECK_CALIBRE_DOWNLOAD_PAGE. Bitte warten.\e[m" - stat_1=$(curl -o /dev/null --silent --head --write-out '%{http_code}' $CHECK_CALIBRE_DOWNLOAD_PAGE) - func_progressbar - echo -e "\033[32m Status Codes von $CHECK_CALIBRE_DOWNLOAD_PAGE erhalten\e[m" - echo -e "\n\033[1;34m Hole Status Code von $CHECK_DOWNLOAD_URL. Bitte warten.\e[m" - stat_2=$(curl -o /dev/null --silent --head --write-out '%{http_code}' $CHECK_DOWNLOAD_URL) - func_progressbar - echo -e "\033[32m Status Codes von $CHECK_DOWNLOAD_URL erhalten\e[m" - return 0 +func_http_status_code () +{ + echo -e "\033[1;34m Hole Status Code von $CHECK_CALIBRE_DOWNLOAD_PAGE. Bitte warten.\e[m" + stat_1=$(curl -o /dev/null --silent --head --write-out '%{http_code}' $CHECK_CALIBRE_DOWNLOAD_PAGE) + func_progressbar + echo -e "\033[32m Status Codes von $CHECK_CALIBRE_DOWNLOAD_PAGE erhalten\e[m" + echo -e "\n\033[1;34m Hole Status Code von $CHECK_DOWNLOAD_URL. Bitte warten.\e[m" + stat_2=$(curl -o /dev/null --silent --head --write-out '%{http_code}' $CHECK_DOWNLOAD_URL) + func_progressbar + echo -e "\033[32m Status Codes von $CHECK_DOWNLOAD_URL erhalten\e[m" + return 0 } -func_check_stat () { # Funktion zum Check Verfügbarkeit der Downloadseiten und der Internetverbindung -# Test for network conection -echo -e "\n\033[1;34m Suche nach vorhandenen Netzwerk für die Verbindung zum Internet :-)\e[m" -for INTERFACE in $(ls /sys/class/net/ | grep -v lo) -do - if [[ $(cat /sys/class/net/$INTERFACE/carrier) = 1 ]]; then - ONLINE=1 - fi -done -func_progressbar -if [ $ONLINE ]; then - echo -e "\033[32m Es wurde ein Netzwerkinterface gefunden. Verbinde über Interface $INTERFACE\n\e[m" - func_http_status_code - if [[ $stat_1 -eq 200 && $stat_2 -eq 200 ]]; then - return 1 - elif [[ $stat_1 -eq !200 ]]; then - return 2 - else - return 3 - fi -else - echo -e "\n\033[31m Fehler!!! Bitte schau Dir die Desktop Benachrichtigung an!\e[m" - return 4 -fi +func_check_stat () # Funktion zum Check Verfügbarkeit der Downloadseiten und der Internetverbindung +{ + # Test for network conection + echo -e "\n\033[1;34m Suche nach vorhandenen Netzwerk für die Verbindung zum Internet :-)\e[m" + for INTERFACE in $(ls /sys/class/net/ | grep -v lo); do + if [[ $(cat /sys/class/net/$INTERFACE/carrier) = 1 ]]; then + ONLINE=1 + fi + done + func_progressbar + if [ $ONLINE ]; then + echo -e "\033[32m Es wurde ein Netzwerkinterface gefunden. Verbinde über Interface $INTERFACE\n\e[m" + func_http_status_code + if [[ $stat_1 -eq 200 && $stat_2 -eq 200 ]]; then + return 1 + elif [[ $stat_1 -eq !200 ]]; then + return 2 + else + return 3 + fi + else + echo -e "\n\033[31m Fehler!!! Bitte schau Dir die Desktop Benachrichtigung an!\e[m" + return 4 + fi + return 0 } + + + + + + + + + + + + + func_check_run_calibre () { CALIBRE_PID=`ps ax | grep /opt/calibre/bin/calibre | grep -v grep | awk '{printf $1}'` - while [ $CALIBRE_PID ] - do + while [ $CALIBRE_PID ]; do $NOTIFY "Um das Update installieren zu können, muss Calibre beendet werden. Calibre wird in einer Minute vom Update Service beendet. !!!Bitte speichere alle wichtigen Daten!!!" sleep 3 echo "" - for (( i=60; i>0; i-- )) - do + for (( i=60; i>0; i-- )); do echo -e -n "\033[31m noch \033[32m>>$i<< \033[31m Sekunden bis zum Calibre Programmende\r\e[m" sleep 1 done @@ -59,60 +72,73 @@ func_check_run_calibre () { return 0 } -func_check_version () { - #Ermitteln der letzten aktuell verfügbaren Version - LATEST_VERSION=`curl -s $CALIBRE_DOWNLOAD_PAGE | grep 'latest release of calibre' | sed 's/[^0-9.]*\([1-9]*[0-9]\.[1-9]*[0-9]\).*/\1/'` - #Ermitteln der aktuell installierten Version. - CURRENT_VERSION=`calibre --version | sed 's/[^0-9.]*\([0-9.]*\).*/\1/'` - if [[ $CURRENT_VERSION == $LATEST_VERSION ]] - then - return 0 + + + + + + + + +func_check_version () { + #Ermitteln der letzten aktuell verfügbaren Version + LATEST_VERSION=`curl -s $CALIBRE_DOWNLOAD_PAGE | grep 'latest release of calibre' | sed 's/[^0-9.]*\([1-9]*[0-9]\.[1-9]*[0-9]\).*/\1/'` + #Ermitteln der aktuell installierten Version. + CURRENT_VERSION=`calibre --version | sed 's/[^0-9.]*\([0-9.]*\).*/\1/'` + + if [[ $CURRENT_VERSION == $LATEST_VERSION ]]; then + return 0 fi local IFS=. local i ver1=($CURRENT_VERSION) ver2=($LATEST_VERSION) # fill empty fields in ver1 with zeros - for ((i=${#ver1[@]}; i<${#ver2[@]}; i++)) - do - ver1[i]=0 + for ((i=${#ver1[@]}; i<${#ver2[@]}; i++)); do + ver1[i]=0 done - for ((i=0; i<${#ver1[@]}; i++)) - do - if [[ -z ${ver2[i]} ]] - then - # fill empty fields in ver2 with zeros - ver2[i]=0 - fi - if ((10#${ver1[i]} > 10#${ver2[i]})) - then - return 1 - fi - if ((10#${ver1[i]} < 10#${ver2[i]})) - then - return 2 - fi + for ((i=0; i<${#ver1[@]}; i++)); do + if [[ -z ${ver2[i]} ]]; then + # fill empty fields in ver2 with zeros + ver2[i]=0 + fi + if ((10#${ver1[i]} > 10#${ver2[i]})); then + return 1 + fi + if ((10#${ver1[i]} < 10#${ver2[i]})); then + return 2 + fi done return 0 } + + + + + + + + + + + + + func_check_prog () { - func_term_output - if test ! -f $CURL ; then - $NOTIFY "Du hast Curl nich installiert, es wird aber für die Updatefunktion benötigt" - exit 1 - fi - - if test ! -f $AWK ; then - $NOTIFY "Du hast AWK nich installiert, es wird aber für die Updatefunktion benötigt" - exit 1 - - if test ! -f $NOTIFY ; 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 + func_term_output + if [ ! -f $CURL ]; then + $NOTIFY "Du hast Curl nich installiert, es wird aber für die Updatefunktion benötigt" + break + fi + if [ ! -f $AWK ]; then + $NOTIFY "Du hast AWK nich installiert, es wird aber für die Updatefunktion benötigt" + break + fi + if [ ! -f $NOTIFY ]; 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 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"; } \ No newline at end of file From 5152778b4ed07275e1aac41aa78dd268968ccdc0 Mon Sep 17 00:00:00 2001 From: Leon Gaultier Date: Thu, 10 Apr 2014 16:50:02 +0200 Subject: [PATCH 08/11] =?UTF-8?q?die=20sed=20Befehle=20m=C3=BCssen=20weder?= =?UTF-8?q?=20rein.=20Sonst=20funktioniert=20das=20Script=20nur=20wenn=20e?= =?UTF-8?q?s=20vom=20Installordner=20aus=20aufgerufen=20wird.=20Also=20wie?= =?UTF-8?q?der=20per=20sed=20die=20Installpfade=20eintragen=20lassen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CAU_Installer.h | 65 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 CAU_Installer.h diff --git a/CAU_Installer.h b/CAU_Installer.h new file mode 100644 index 0000000..f786b71 --- /dev/null +++ b/CAU_Installer.h @@ -0,0 +1,65 @@ +# Calibre Auto Updater Header File +# Copyright (C) 2013-2014 Leon Gaultier +# + +func_term_output () { # einheitliche Terminalausgabe + ## Beginne mit der Ausgbe ## + tty -s && clear + echo -e "\033[44m \033[0m\033[1m $PROGNAME: Der Calibre-Autoupdate-Installer Version $VERSION\033[0m\n\033[44m \033[0m 2013-2014 by Leon Gaultier\n\e[m"; + return 0 +} + +func_usage () # Gibt Auskunft über Verwendung des Scriptes +{ + func_term_output + echo "Verwendung: $PROGNAME [OPTION...]" + echo -e "Verwende $PROGNAME --help oder $PROGNAME -h für mehr Informationen.\n" + return 0 +} + +func_help () # Listet alle Optionsschalter auf +{ + func_term_output + echo "Verwende: $PROGNAME [OPTION...]" + echo "$PROGNAME -- Der Calibre-Autoupdate-Installer (CAUI)" + echo "" + echo "Options:" + echo " -h, --help zeigt die Hilfe an" + echo " -V, --version gibt die Programmversion aus" + echo " -i, --install installiert den Calibre-Autoupdater (CAU)" + echo " --install_calibre installiert Calibre in der aktuellsten Version" + echo "" + echo -e "Sende Fehler an .\n" + return 0 +} + +func_version () # Versionsauskunft des Installers +{ + func_term_output + echo "$PROGNAME: Der Calibre-Autoupdate-Installer (CAUI) v$VERSION" + echo "Leon Gaultier 2013-2014. Das Programm darf verteilt werden," + echo -e "in der Hoffnung das es hilfreich ist, aber OHNR IRGENDEINE GARANTIE\n" + return 0 +} + +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.07 + done + echo -e "\e[m" + return 0 +} \ No newline at end of file From 7df25af7636e296f17da55af3e4d1a3e38c60d32 Mon Sep 17 00:00:00 2001 From: Leon Gaultier Date: Mon, 14 Apr 2014 14:36:17 +0200 Subject: [PATCH 09/11] . --- CAU_Installer | 63 +++++++------------------------------ CAU_Installer.h | 1 - calibre-autoupdate | 18 ++++++----- calibre-autoupdate.conf | 4 +-- calibre-autoupdate.h | 5 +-- calibre-autoupdate_checks.h | 46 +++++++++++++++++++-------- 6 files changed, 61 insertions(+), 76 deletions(-) diff --git a/CAU_Installer b/CAU_Installer index a7adbcb..eab7465 100755 --- a/CAU_Installer +++ b/CAU_Installer @@ -18,7 +18,7 @@ # Programmversion PROGNAME=`basename $0` -VERSION="0.14.99.6" +VERSION="0.19.99.7" ##### Variablen deklaration ##### # Downloadseite der Linuxinstallation @@ -63,14 +63,17 @@ func_install_noroot() echo -e "\n\033[1;36mDie Programm-Dateien werden nach $BIN kopiert\e[m\e[m" if [ ! -d $BIN ]; then mkdir $BIN; fi; if [ ! -d $ETC ]; then mkdir $ETC; fi; if [ ! -d $INC ]; then mkdir $INC; fi cp calibre-autoupdate $BIN; chmod 755 $BIN"calibre-autoupdate" - sed -i "s/_-VERSION-_/${VERSION//\//\/}/g" $BIN"calibre-autoupdate" # Der Installer übergibt die Versionsnummer + sed -i "s/_-ETC-_/${ETC//\//\/}/g" $BIN"calibre-autoupdate" + sed -i "s/_-VERSION-_/${VERSION//\//\/}/g" $BIN"calibre-autoupdate" func_progressbar echo -e "\n\033[1;36mDie Header-Dateien werden nach $INC kopiert\e[m" 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;36mDie Konfigurations-Dateien werden nach $ETC kopiert\e[m" cp calibre-autoupdate.conf $ETC; chmod 644 $ETC"calibre-autoupdate.conf"; - sed -i "s/_-CALIBRE_INSTALL_LOCATION-_/${CALIBRE_INSTALL_LOCATION//\//\/}/g" $ETC"calibre-autoupdate.conf" # Ort der Calibreinstall + sed -i "s/_-INC-_/${INC//\//\/}/g" $ETC"calibre-autoupdate.conf" + sed -i "s/_-BIN-_/${BIN//\//\/}/g" $ETC"calibre-autoupdate.conf" + sed -i "s/_-CALIBRE_INSTALL_LOCATION-_/${CALIBRE_INSTALL_LOCATION//\//\/}/g" $ETC"calibre-autoupdate.conf" func_progressbar return 0 } @@ -81,14 +84,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/_-VERSION-_/${VERSION//\//\/}/g" $BIN"calibre-autoupdate" # Der Installer übergibt die Versionsnummer + sudo sed -i "s/_-ETC-_/${ETC//\//\/}/g" $BIN"calibre-autoupdate" + sudo sed -i "s/_-VERSION-_/${VERSION//\//\/}/g" $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/_-CALIBRE_INSTALL_LOCATION-_/${CALIBRE_INSTALL_LOCATION//\//\/}/g" $ETC"calibre-autoupdate.conf" # Ort der Calibreinstall + 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" func_progressbar return 0 } @@ -129,49 +135,4 @@ done func_term_output func_usage echo -e "\e[m" -exit 0 - - - - - - - - - - - - - - - - - - - - - -############################################################################### - -# Die sed Befehle ersetzen in den Programmdateien Platzhalter für den Installationsort. -# Grund hierfür sind die includes der Header unf Configfiles die den kompletten Fad benörigen -# echo -e "\n\033[1;34mDer Calibre-Autoupdater wird nun unter $UPDATER_INSTALL_LOCATION installiert...\e[m"; -# echo -e "\033[1;32mDie Programm-Dateien werden nach $BIN kopiert\e[m" -# cp calibre-autoupdate $BIN - # #sed -i "s/_-ETC-_/${ETC//\//\/}/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" -# 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 Konfigurations-Dateien wird nach $ETC kopiert\e[m" -# cp calibre-autoupdate.conf $ETC -# #sed -i "s/_-INC-_/${INC//\//\/}/g" $ETC"calibre-autoupdate.conf" -# #sed -i "s/_-BIN-_/${BIN//\//\/}/g" $ETC"calibre-autoupdate.conf" -# #sed -i "s/_-CALIBRE_INSTALL_LOCATION-_/${CALIBRE_INSTALL_LOCATION//\//\/}/g" $ETC"calibre-autoupdate.conf" -# chmod 644 $ETC/calibre-autoupdate.conf -# func_progressbar -# return 0 -################################################################################ \ No newline at end of file +exit 0 \ No newline at end of file diff --git a/CAU_Installer.h b/CAU_Installer.h index f786b71..1b7b5ce 100644 --- a/CAU_Installer.h +++ b/CAU_Installer.h @@ -27,7 +27,6 @@ func_help () # Listet alle Optionsschalter auf echo " -h, --help zeigt die Hilfe an" echo " -V, --version gibt die Programmversion aus" echo " -i, --install installiert den Calibre-Autoupdater (CAU)" - echo " --install_calibre installiert Calibre in der aktuellsten Version" echo "" echo -e "Sende Fehler an .\n" return 0 diff --git a/calibre-autoupdate b/calibre-autoupdate index 3e47356..afef1f3 100644 --- a/calibre-autoupdate +++ b/calibre-autoupdate @@ -102,16 +102,18 @@ VERSION="_-VERSION-_" # Diese Version funktioniert für alle Linuxsysteme nur so lange # bis Veränderungen auf der Internetseite durchgeführt wurden ################################# +# Installationsfade in der Verzeichnishierarchie +ETC=_-ETC-_ # Einlesen des Configfiles mit den Variablen für die Calibre Downloadseite, Hauptseite # und den Installationsfaden in der Verzeichnishierarchie -source ../etc/calibre-autoupdate.conf +source $ETC/calibre-autoupdate.conf ################################# ##### Zusätzliche Funktionen aus Headerfiles laden ##### -source ../include/calibre-autoupdate.h -source ../include/calibre-autoupdate_checks.h +source $INC/calibre-autoupdate.h +source $INC/calibre-autoupdate_checks.h ####################################################### ####################################################### @@ -133,9 +135,9 @@ func_update () { case $CHECK_VERCOMP_RESULT in 0) - $NOTIFY "Deine Calibre Version ist auf dem aktuellsten Stand ($CURRENT_VERSION).";; + $NOTIFY "Deine Calibre Version ist auf dem aktuellsten Stand (Version $CURRENT_VERSION).";; 1) - $NOTIFY "Uh Oh! Deine Calibre Version ist aktueller wie die letzte Verfügbare! (Installiert: $CURRENT_VERSION, Letzte Verfügbare: $LATEST_VERSION)";; + $NOTIFY "Uh Oh! Deine Calibre Version ist aktueller wie die letzte Verfügbare! (Installiert: Version $CURRENT_VERSION, Letzte Verfügbare: Version $LATEST_VERSION)";; 2) $NOTIFY "Ein Calibre Update ist verfügbar. (Installiert: $CURRENT_VERSION, letzte Verfügbare: $LATEST_VERSION)" # Installiert die aktuellste verfügbare Version von der Calibre Homepage @@ -149,7 +151,7 @@ func_update () { echo -e "\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')" fi - $NOTIFY "Calibre wurde auf die neuste Version aktuallisiert.";; + $NOTIFY "Calibre wurde auf die neuste Version $LATEST_VERSION aktuallisiert.";; esac ;; 2) @@ -181,7 +183,9 @@ do --check | -C | -c ) func_check_prog; exit 0 ;; --uninstall | -U | -u ) - func_uninstall; exit 0;; + func_uninstall; exit 0 ;; + --install_calibre ) + func_install_calibre; exit 0 ;; --uninstall_calibre ) func_uninstall_calibre; exit 0 ;; esac diff --git a/calibre-autoupdate.conf b/calibre-autoupdate.conf index b6ac210..7a27e1a 100644 --- a/calibre-autoupdate.conf +++ b/calibre-autoupdate.conf @@ -20,6 +20,6 @@ NOTIFY=/usr/bin/notify-send AWK=/usr/bin/awk # Installationsfade in der Verzeichnishierarchie -#INC=_-INC-_ -#BIN=_-BIN-_ +INC=_-INC-_ +BIN=_-BIN-_ diff --git a/calibre-autoupdate.h b/calibre-autoupdate.h index 79cd9af..c12a9aa 100644 --- a/calibre-autoupdate.h +++ b/calibre-autoupdate.h @@ -29,6 +29,7 @@ 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 "" echo -e "Sende Fehler an .\n"; @@ -134,13 +135,13 @@ func_uninstall_calibre() func_install_calibre() { # Installationsort von Calibre - read -p "Wo befindet sich die Calibre Installation? [default /opt] " CALIBRE_INSTALL_LOCATION + read -p "Wohin soll Calibre installiert werden? [default /opt] " CALIBRE_INSTALL_LOCATION if [ -z $CALIBRE_INSTALL_LOCATION ]; then CALIBRE_INSTALL_LOCATION=/opt fi while [ ! -d $CALIBRE_INSTALL_LOCATION ]; do echo -e "\n\033[1;31mDas Verzeichnis $CALIBRE_INSTALL_LOCATION existiert nicht. Bitte gib ein existierendes Verzeichnis ein!\e[m" - read -p "Wo befindet sich die Calibre Installation? [default /opt] " CALIBRE_INSTALL_LOCATION + 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" diff --git a/calibre-autoupdate_checks.h b/calibre-autoupdate_checks.h index fab694c..b34ef13 100644 --- a/calibre-autoupdate_checks.h +++ b/calibre-autoupdate_checks.h @@ -68,6 +68,38 @@ func_check_run_calibre () { done kill -15 $CALIBRE_PID return 0 + + + + + + + # Installationsort vom Updater + 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 + while [ ! -d $UPDATER_INSTALL_LOCATION ]; do + echo -e "\n\033[1;31mDas Verzeichnis $UPDATER_INSTALL_LOCATION existiert nicht. Bitte gib ein existierendes Verzeichnis ein!\e[m" + read -p "Wo soll der Calibre-Autoupdater installiert werden? [default /usr/local] " UPDATER_INSTALL_LOCATION + done + # Installationsort von Calibre + read -p "Wo befindet sich die Calibre Installation? [default /opt] " CALIBRE_INSTALL_LOCATION + if [ -z $CALIBRE_INSTALL_LOCATION ]; then + CALIBRE_INSTALL_LOCATION=/opt + fi + while [ ! -d $CALIBRE_INSTALL_LOCATION ]; do + echo -e "\n\033[1;31mDas Verzeichnis $CALIBRE_INSTALL_LOCATION existiert nicht. Bitte gib ein existierendes Verzeichnis ein!\e[m" + read -p "Wo befindet sich die Calibre Installation? [default /opt] " CALIBRE_INSTALL_LOCATION + done + + + + + + + + done return 0 } @@ -81,6 +113,7 @@ func_check_run_calibre () { + func_check_version () { #Ermitteln der letzten aktuell verfügbaren Version LATEST_VERSION=`curl -s $CALIBRE_DOWNLOAD_PAGE | grep 'latest release of calibre' | sed 's/[^0-9.]*\([1-9]*[0-9]\.[1-9]*[0-9]\).*/\1/'` @@ -111,19 +144,6 @@ func_check_version () { return 0 } - - - - - - - - - - - - - func_check_prog () { func_term_output if [ ! -f $CURL ]; then From 8afc21b90aaac2b24e1aeb6dfd97ca2fc4a47534 Mon Sep 17 00:00:00 2001 From: Leon Gaultier Date: Tue, 15 Apr 2014 06:22:11 +0200 Subject: [PATCH 10/11] =?UTF-8?q?Calibre=20Installort=20ersetzen=20nach=20?= =?UTF-8?q?der=20Installation=20mu=C3=9F=20noch=20als=20Funktion=20eingeba?= =?UTF-8?q?ut=20werden?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CAU_Installer | 14 +++---- CAU_Installer.h | 13 +++---- calibre-autoupdate.conf | 8 ++-- calibre-autoupdate.h | 24 ++++-------- calibre-autoupdate_checks.h | 75 ++----------------------------------- 5 files changed, 26 insertions(+), 108 deletions(-) diff --git a/CAU_Installer b/CAU_Installer index eab7465..8549f34 100755 --- a/CAU_Installer +++ b/CAU_Installer @@ -18,7 +18,7 @@ # Programmversion PROGNAME=`basename $0` -VERSION="0.19.99.7" +VERSION="0.19.99.9" ##### Variablen deklaration ##### # Downloadseite der Linuxinstallation @@ -31,8 +31,7 @@ source CAU_Installer.h ################################# -func_change_install_dir() # Funktion zur Abfrage der Installationsorte vom Updater und von Calibre -{ +func_change_install_dir() { # Funktion zur Abfrage der Installationsorte vom Updater und von Calibre # Installationsort vom Updater read -p "Wo soll der Calibre-Autoupdater installiert werden? [default /usr/local] " UPDATER_INSTALL_LOCATION if [ -z $UPDATER_INSTALL_LOCATION ]; then @@ -58,8 +57,7 @@ func_change_install_dir() # Funktion zur Abfrage der Installationsorte vom Upd return 0 } -func_install_noroot() -{ +func_install_noroot() { echo -e "\n\033[1;36mDie Programm-Dateien werden nach $BIN kopiert\e[m\e[m" if [ ! -d $BIN ]; then mkdir $BIN; fi; if [ ! -d $ETC ]; then mkdir $ETC; fi; if [ ! -d $INC ]; then mkdir $INC; fi cp calibre-autoupdate $BIN; chmod 755 $BIN"calibre-autoupdate" @@ -78,8 +76,7 @@ func_install_noroot() return 0 } -func_install_root() -{ +func_install_root() { 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;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 @@ -99,8 +96,7 @@ func_install_root() return 0 } -func_install_process() # Installiert den Calibre Updater -{ +func_install_process() { # Installiert den Calibre Updater func_term_output func_change_install_dir if [ -w "$UPDATER_INSTALL_LOCATION" ]; then diff --git a/CAU_Installer.h b/CAU_Installer.h index 1b7b5ce..bf15280 100644 --- a/CAU_Installer.h +++ b/CAU_Installer.h @@ -9,16 +9,14 @@ func_term_output () { # einheitliche Terminalausgabe return 0 } -func_usage () # Gibt Auskunft über Verwendung des Scriptes -{ +func_usage () { # Gibt Auskunft über Verwendung des Scriptes func_term_output echo "Verwendung: $PROGNAME [OPTION...]" echo -e "Verwende $PROGNAME --help oder $PROGNAME -h für mehr Informationen.\n" return 0 } -func_help () # Listet alle Optionsschalter auf -{ +func_help () { # Listet alle Optionsschalter auf func_term_output echo "Verwende: $PROGNAME [OPTION...]" echo "$PROGNAME -- Der Calibre-Autoupdate-Installer (CAUI)" @@ -32,8 +30,8 @@ func_help () # Listet alle Optionsschalter auf return 0 } -func_version () # Versionsauskunft des Installers -{ +func_version () { # Versionsauskunft des Installers + func_term_output echo "$PROGNAME: Der Calibre-Autoupdate-Installer (CAUI) v$VERSION" echo "Leon Gaultier 2013-2014. Das Programm darf verteilt werden," @@ -41,8 +39,7 @@ func_version () # Versionsauskunft des Installers return 0 } -func_progressbar() -{ +func_progressbar() { echo -e -n $'\033[34m------------------------------------------------------------------------- 100%\r' echo -e -n "\033[32m0% " for ((i=0; i<61; i++)); do diff --git a/calibre-autoupdate.conf b/calibre-autoupdate.conf index 7a27e1a..d91a94d 100644 --- a/calibre-autoupdate.conf +++ b/calibre-autoupdate.conf @@ -3,10 +3,10 @@ # # Calibre Download Seite URL. -export CALIBRE_DOWNLOAD_PAGE=http://calibre-ebook.com/download_linux -# The location of the installed application. -export CALIBRE_INSTALL_LOCATION=_-CALIBRE_INSTALL_LOCATION-_ -# The download URL +CALIBRE_DOWNLOAD_PAGE=http://calibre-ebook.com/download_linux +# Installationsor von Calibre. +CALIBRE_INSTALL_LOCATION=_-CALIBRE_INSTALL_LOCATION-_ +# die Download URL DOWNLOAD_URL=https://github.com/kovidgoyal/calibre/raw/master/setup/linux-installer.py # Variablen für den Verfügbarkeitscheck diff --git a/calibre-autoupdate.h b/calibre-autoupdate.h index c12a9aa..74fbd34 100644 --- a/calibre-autoupdate.h +++ b/calibre-autoupdate.h @@ -2,24 +2,21 @@ # Copyright (C) 2013-2014 Leon Gaultier # -func_term_output () -{ +func_term_output () { ## Beginne mit der Ausgbe ## tty -s && clear echo -e "\033[44m \033[0m\033[1m $PROGNAME Version $VERSION\033[0m\n\033[44m \033[0m 2013-2014 by Leon Gaultier\n\e[m"; return 0 } -func_usage () -{ +func_usage () { func_term_output echo "Verwendung: $PROGNAME [OPTION...]" echo "Verwende '$PROGNAME --help' oder '$PROGNAME -h' für mehr Informationen." return 0 } -func_help () -{ +func_help () { func_term_output echo "Verwende: $PROGNAME [OPTION...]" echo "$PROGNAME -- Der Calibre! Linux Edition calibre-autoupdater (CAU)" @@ -36,8 +33,7 @@ func_help () return 0 } -func_version () -{ +func_version () { func_term_output echo "$PROGNAME: Der Calibre! autoupdater v$VERSION" echo "Leon Gaultier 2013-2014. Das Programm darf verteilt werden," @@ -45,8 +41,7 @@ func_version () return 0 } -func_progressbar() -{ +func_progressbar() { echo -e -n $'\033[34m------------------------------------------------------------------------- 100%\r' echo -e -n "\033[32m0% " for ((i=0; i<61; i++)); do @@ -67,8 +62,7 @@ func_progressbar() return 0 } -func_uninstall() -{ +func_uninstall() { func_term_output while ((!gueltig)); do # beginn der Ja/Nein Abfrage echo -e "\033[1;34m" @@ -100,8 +94,7 @@ func_uninstall() return 0 } -func_uninstall_calibre() -{ +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" @@ -132,8 +125,7 @@ func_uninstall_calibre() return 0 } -func_install_calibre() -{ +func_install_calibre() { # Installationsort von Calibre read -p "Wohin soll Calibre installiert werden? [default /opt] " CALIBRE_INSTALL_LOCATION if [ -z $CALIBRE_INSTALL_LOCATION ]; then diff --git a/calibre-autoupdate_checks.h b/calibre-autoupdate_checks.h index b34ef13..e7c8412 100644 --- a/calibre-autoupdate_checks.h +++ b/calibre-autoupdate_checks.h @@ -2,8 +2,7 @@ # Copyright (C) 2013-2014 Leon Gaultier # -func_http_status_code () -{ +func_http_status_code () { echo -e "\033[1;34m Hole Status Code von $CHECK_CALIBRE_DOWNLOAD_PAGE. Bitte warten.\e[m" stat_1=$(curl -o /dev/null --silent --head --write-out '%{http_code}' $CHECK_CALIBRE_DOWNLOAD_PAGE) func_progressbar @@ -15,8 +14,7 @@ func_http_status_code () return 0 } -func_check_stat () # Funktion zum Check Verfügbarkeit der Downloadseiten und der Internetverbindung -{ +func_check_stat () { # Funktion zum Check Verfügbarkeit der Downloadseiten und der Internetverbindung # Test for network conection echo -e "\n\033[1;34m Suche nach vorhandenen Netzwerk für die Verbindung zum Internet :-)\e[m" for INTERFACE in $(ls /sys/class/net/ | grep -v lo); do @@ -42,78 +40,13 @@ func_check_stat () # Funktion zum Check Verfügbarkeit der Downloadseiten und d return 0 } - - - - - - - - - - - - - func_check_run_calibre () { - CALIBRE_PID=`ps ax | grep /opt/calibre/bin/calibre | grep -v grep | awk '{printf $1}'` - - while [ $CALIBRE_PID ]; do - $NOTIFY "Um das Update installieren zu können, muss Calibre beendet werden. Calibre wird in einer Minute vom Update Service beendet. !!!Bitte speichere alle wichtigen Daten!!!" - sleep 3 - echo "" - for (( i=60; i>0; i-- )); do - echo -e -n "\033[31m noch \033[32m>>$i<< \033[31m Sekunden bis zum Calibre Programmende\r\e[m" - sleep 1 + while [ `ps ax | grep /opt/calibre/bin/calibre | grep -v grep | awk '{printf $1}'` ]; do + $NOTIFY "Um das Update installieren zu können, muss Calibre geschlossen werden..." done - kill -15 $CALIBRE_PID return 0 - - - - - - - # Installationsort vom Updater - 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 - while [ ! -d $UPDATER_INSTALL_LOCATION ]; do - echo -e "\n\033[1;31mDas Verzeichnis $UPDATER_INSTALL_LOCATION existiert nicht. Bitte gib ein existierendes Verzeichnis ein!\e[m" - read -p "Wo soll der Calibre-Autoupdater installiert werden? [default /usr/local] " UPDATER_INSTALL_LOCATION - done - # Installationsort von Calibre - read -p "Wo befindet sich die Calibre Installation? [default /opt] " CALIBRE_INSTALL_LOCATION - if [ -z $CALIBRE_INSTALL_LOCATION ]; then - CALIBRE_INSTALL_LOCATION=/opt - fi - while [ ! -d $CALIBRE_INSTALL_LOCATION ]; do - echo -e "\n\033[1;31mDas Verzeichnis $CALIBRE_INSTALL_LOCATION existiert nicht. Bitte gib ein existierendes Verzeichnis ein!\e[m" - read -p "Wo befindet sich die Calibre Installation? [default /opt] " CALIBRE_INSTALL_LOCATION - done - - - - - - - - - done - return 0 } - - - - - - - - - - func_check_version () { #Ermitteln der letzten aktuell verfügbaren Version LATEST_VERSION=`curl -s $CALIBRE_DOWNLOAD_PAGE | grep 'latest release of calibre' | sed 's/[^0-9.]*\([1-9]*[0-9]\.[1-9]*[0-9]\).*/\1/'` From 480aa9c811cd958e90596400aff8697f40518acc Mon Sep 17 00:00:00 2001 From: Leon Gaultier Date: Tue, 15 Apr 2014 11:44:30 +0200 Subject: [PATCH 11/11] =?UTF-8?q?Der=20Code=20wurde=20komplett=20=C3=BCber?= =?UTF-8?q?arbeitet=20und=20vieles=20neu=20geschrieben.=20Sauberer=20Code?= =?UTF-8?q?=20und=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