diff --git a/CAU_Installer b/CAU_Installer new file mode 100755 index 0000000..da76e50 --- /dev/null +++ b/CAU_Installer @@ -0,0 +1,147 @@ +#!/bin/bash + +# Programmversion +PROGNAME=`basename $0` +VERSION="0.3" +QUIET=0 + +func_term_output () { + ## Beginne mit der Ausgbe ## + tty -s && clear + echo -e "\033[44m \033[0m\033[1m $PROGNAME the Calibre-Autoupdate-Installer Version $VERSION\033[0m\n\033[44m \033[0m 2013-2014 by Leon Gaultier\n"; + return 0 +} + +func_usage () # Gibt Auskunft über Verwendung des Scriptes +{ + echo "Usage: $PROGNAME [OPTION...]" + echo "Try '$PROGNAME --help' or '$PROGNAME -h' for more information." +} + +func_help () # Listet alle Optionsschalter auf +{ + func_term_output + echo "Usage: $PROGNAME [OPTION...]" + echo "$PROGNAME -- the Calibre-Autoupdate-Installer (CAUI)" + echo "" + echo "Options:" + echo " -q, --quiet ohne Konsolenausgabe" + echo " -h, --help zeigt die Hilfe an" + echo " -V, --version gibt die Programmversion aus" + echo " -i, --install installiert den Calibre-Autoupdater (CAU)" + echo "" + echo -e "Report bugs to .\n"; +} + +func_version () # Versionsauskunft des Installers +{ + echo "$PROGNAME: the Calibre-Autoupdate-Installer (CAUI) v$VERSION" + echo "Copyright (C) Leon Gaultier 2013-2014. This program is distributed" + echo "in the hope that it will be useful, but WITHOUT ANY WARRANTY" + +} + +func_change_install_dir() # Funktion zur Abfrage des Installationsortes +{ +read -p "Wo soll der Calibre Updater installiert werden? [default /usr/local] " UPDATER_INSTALL_LOCATION + + if [ -z $UPDATER_INSTALL_LOCATION ]; then + UPDATER_INSTALL_LOCATION=/usr/local + fi +read -p "Wo befindet sich die Calibre Installation? [default /opt/calibre] " CALIBRE_INSTALL_LOCATION + + if [ -z $CALIBRE_INSTALL_LOCATION ]; then + CALIBRE_INSTALL_LOCATION=/opt/calibre + fi + +# Installationsfade in der Verzeichnishierarchie +INC=$UPDATER_INSTALL_LOCATION/include/ +ETC=$UPDATER_INSTALL_LOCATION/etc/ +BIN=$UPDATER_INSTALL_LOCATION/bin/ +} + +func_check_dir() # Install oder Update Calibre Updater, Check ob Calibre überhaupt installiert ist +{ + if test ! -d $CALIBRE_INSTALL_LOCATION ; then + echo -e "\n\033[1;31mKeine Calibre Installation unter $CALIBRE_INSTALL_LOCATION gefunden. Installation des Updaters wurde abgebrochen.\e[m\n"; >&2 + exit 1 + fi + + if test -f $BIN/calibre-autoupdate ; then + while ((!gueltig)); do + 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 Updaters wurde abgebrochen.\e[m\n" + exit 1 + fi + fi +} + +func_install() # Installiert den Calibre Updater +{ +func_term_output +func_change_install_dir +func_check_dir + + if [ -w "$BIN" ]; then + echo -e "\n\033[1;34mDer Calibre Autoupdater wird nun unter $UPDATER_INSTALL_LOCATION installiert...\e[m"; + echo -e "\n\033[1;32mProgrammdatei wird nach $BIN kopiert\e[m"; sleep 3 + cp -v calibre-autoupdate $BIN + chmod -v 755 $BIN/calibre-autoupdate + echo -e "\n\033[1;32mDie Header-Dateien werden nach $INC kopiert\e[m"; sleep 3 + cp -v calibre-autoupdate.h calibre-autoupdate_checks.h $INC + chmod -v 644 $INC/calibre-autoupdate.h $INC/calibre-autoupdate_checks.h + echo -e "\n\033[1;32mDie Konfigurationsdatei wird nach $ETC kopiert\e[m"; sleep 3 + cp -v calibre-autoupdate.conf $ETC + chmod -v 644 $ETC/calibre-autoupdate.conf + + else + echo -e "\n\033[1;34mDu hast kein Schreibrecht auf $UPDATER_INSTALL_LOCATION, daher wird SUDO versucht zu verwenden...\e[m"; + echo -e "\n\033[1;32mProgrammdatei wird nach $BIN kopiert\e[m\e[m"; sleep 3 + sudo cp -v calibre-autoupdate $BIN + sudo chmod -v 755 $BIN/calibre-autoupdate; + echo -e "\n\033[1;32mDie Header-Dateien werden nach $INC kopiert\e[m"; sleep 3 + sudo cp -v calibre-autoupdate.h calibre-autoupdate_checks.h $INC + sudo chmod -v 644 $INC/calibre-autoupdate.h $INC/calibre-autoupdate_checks.h; + echo -e "\n\033[1;32mDie Konfigurationsdatei wird nach $ETC kopiert\e[m"; sleep 3 + sudo cp -v calibre-autoupdate.conf $ETC + sudo chmod -v 644 $ETC/calibre-autoupdate.conf; + fi + echo -e "\n\033[1;36mDer Calibre-Autoupdater wurde erfolgreich installiert\e[m\n" +} + +while test "$#" -gt 0 +do + arg="$1" + shift + + case $arg in + -*=*) optarg=`echo "$arg" | sed -e 's/[-_a-zA-Z0-9]*=//'` ;; + *) optarg= ;; + esac + + case "$arg" in + --quiet | -q ) + QUIET=1 ;; + --help | -h ) + func_help; exit 0 ;; + --version | -V | -v ) + func_version; exit 0 ;; + --install | -i ) + func_install; exit 0 ;; + esac + +done +func_term_output +echo -e "\033[1;34mGib eine Option an! Oder verwende -h für Hilfe\n\e[m"; +exit 0 \ No newline at end of file diff --git a/calibre-autoupdate b/calibre-autoupdate index b1e2eae..ec7b010 100755 --- a/calibre-autoupdate +++ b/calibre-autoupdate @@ -52,6 +52,7 @@ # auf im Calibre Installationspfad hat oder nicht. # # v0.9 einbinden eines Konfigurationsfiles, auslagern einiger Funktionen in Headerfiles +# einbringen der Dateien in die Linux Verzeichnishierarchie # # TODO auslesen der Download URL von der Download Seite # kontrolle ob alle benötigten programme für das skript vorhanden sind @@ -60,13 +61,16 @@ ###################################### ###################################### +# Installationsfade in der Verzeichnishierarchie +INC=/usr/local/include/ +ETC=/usr/local/etc/ +BIN=/usr/local/bin/ + # Programmversion PROGNAME=`basename $0` -VERSION="0.8.99" +VERSION="0.9" QUIET=0 - - ################################# ######### CONFIGURATION ######### # Diese Version funktioniert für alle Linuxsysteme nur so lange @@ -74,23 +78,23 @@ QUIET=0 ################################# # Einlesen des Configfiles mit den Constanten für die Calibre Downloadseite und Hauptseite -source ./calibre-autoupdate.conf +source $ETC/calibre-autoupdate.conf ################################# ##### Zusätzliche Funktionen aus Headerfiles laden ##### -source ./calibre-autoupdate.h -source ./calibre-autoupdate_checks.h +source $INC/calibre-autoupdate.h +source $INC/calibre-autoupdate_checks.h func_http_status_code () { - echo -e "\033[1;34m Hole Status Code von \"$CHECK_CALIBRE_DOWNLOAD_PAGE\". Bitte warten."; + echo -e "\033[1;34m Hole Status Code von $CHECK_CALIBRE_DOWNLOAD_PAGE. Bitte warten."; stat_1=$(curl -o /dev/null --silent --head --write-out '%{http_code}' $CHECK_CALIBRE_DOWNLOAD_PAGE) - echo -e "\033[32m Status Codes von \"$CHECK_CALIBRE_DOWNLOAD_PAGE\" erhalten"; - echo -e "\033[1;34m Hole Status Code von \"$CHECK_DOWNLOAD_URL\". Bitte warten."; + echo -e "\033[32m Status Codes von $CHECK_CALIBRE_DOWNLOAD_PAGE erhalten"; + echo -e "\033[1;34m Hole Status Code von $CHECK_DOWNLOAD_URL. Bitte warten."; stat_2=$(curl -o /dev/null --silent --head --write-out '%{http_code}' $CHECK_DOWNLOAD_URL) - echo -e "\033[32m Status Codes von \"$CHECK_DOWNLOAD_URL\" erhalten"; + echo -e "\033[32m Status Codes von $CHECK_DOWNLOAD_URL erhalten"; return 0 } @@ -126,18 +130,18 @@ case $? 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\")";; + $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\")" + $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 "Du hast Schreibrechte auf \"$CALIBRE_INSTALL_LOCATION\" Das Update wird nun installiert..." + $NOTIFY "Du hast Schreibrechte auf $CALIBRE_INSTALL_LOCATION Das Update wird nun installiert..." echo -e "\033[1;34m" 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..." + $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 "\033[1;34m" 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 @@ -147,10 +151,10 @@ case $? in ;; 2) - $NOTIFY "Versionsvergleich fehlgeschlagen!!! Die Calibre Homepage \"$CHECK_CALIBRE_DOWNLOAD_PAGE\" ist nicht verfügbar!" + $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!" + $NOTIFY "Update fehlgeschlagen!!! Die Download Seite $CHECK_DOWNLOAD_URL ist nicht verfügbar!" ;; 4) $NOTIFY "Update und Versionsvergleich fehlgeschlagen!!! Kann kein Netzwerkinterface finden!" diff --git a/calibre-autoupdate.h b/calibre-autoupdate.h index b353062..7777abf 100644 --- a/calibre-autoupdate.h +++ b/calibre-autoupdate.h @@ -12,7 +12,7 @@ func_help () { func_term_output echo "Usage: $PROGNAME [OPTION...]" - echo "$PROGNAME -- the Calibre! Linux Edition calibre-autoupdater" + echo "$PROGNAME -- the Calibre! Linux Edition calibre-autoupdater (CAU)" echo "" echo "Options:" echo " -q, --quiet ohne Konsolenausgabe"