diff --git a/logseq-install.sh b/logseq-install.sh index 03430ee..83c624c 100755 --- a/logseq-install.sh +++ b/logseq-install.sh @@ -1,10 +1,22 @@ -#!/bin/bash +#!/bin/bash -e -COLOR_RED=`tput setaf 1` -COLOR_GREEN=`tput setaf 2` -COLOR_YELLOW=`tput setaf 3` -COLOR_BLUE=`tput setaf 4` -COLOR_RESET=`tput sgr0` +### Von Tim Peters +### https://git.tim-peters.org/Tim/Logseq-Installer + +COLOR_RED=$( tput setaf 1 ) +COLOR_GREEN=$( tput setaf 2 ) +COLOR_YELLOW=$( tput setaf 3 ) +COLOR_RESET=$( tput sgr0 ) + +trap 'handleError' ERR + +handleError() { + cat <<-EOT + Leider ist ein Fehler aufgetreten. + Bitte hilf mit dieses Skript zu verbessern und sende einen + Fehlerbericht per EMail an installer@logseq.eu + EOT +} showLogo() { echo -n "${COLOR_GREEN}" @@ -36,32 +48,44 @@ getVersionLatest() { } getVersionCurrent() { - local FILENAME="$( ls -1rt ~/.local/bin/Logseq-*AppImage 2>/dev/null | head -n1 )" + local FILENAME + + FILENAME="$( ls -1rt ~/.local/bin/Logseq-*AppImage 2>/dev/null | head -n1 )" if [ -n "$FILENAME" ]; then - VERSION_CURRENT="$( echo $FILENAME | grep -Poi "Logseq-linux-x64-\K\d\.\d\.\d" | head -n 1 )" + VERSION_CURRENT="$( echo "$FILENAME" | grep -Poi "Logseq-linux-x64-\K\d\.\d\.\d" | head -n 1 )" else VERSION_CURRENT= fi } getLatest() { - local URL="https://github.com$( wget -qO - https://github.com/logseq/logseq/releases/latest | grep -Poi "/logseq.*AppImage" )" - local DIR_DEST=~/.local/bin - local FILE_DELETE= + local URL + URL="https://github.com$( wget -qO - https://github.com/logseq/logseq/releases/latest | grep -Poi "/logseq.*AppImage" )" + local DIR_DEST + DIR_DEST=~/.local/bin + local FILE_LINK + FILE_LINK=~/.local/bin/Logseq + local FILE_TMP + FILE_TMP="$( mktemp )" + local FILE_DELETE FILENAME_LOGSEQ="$( basename "$URL" )" mkdir -p $DIR_DEST - wget $URL --show-progress -qO $DIR_DEST/$FILENAME_LOGSEQ - chmod u+x $DIR_DEST/$FILENAME_LOGSEQ + wget "$URL" --show-progress -qO "$FILE_TMP" + mv "$FILE_TMP" "$DIR_DEST/$FILENAME_LOGSEQ" + chmod u+x "$DIR_DEST/$FILENAME_LOGSEQ" # Veraltete Versionen löschen - FILE_DELETE="$( find ~/.local/bin -iname Logseq-\*AppImage | grep -v $FILENAME_LOGSEQ )" - [ -n "$FILE_DELETE" ] && rm -f $FILE_DELETE + FILE_DELETE="$( find ~/.local/bin -iname Logseq-\*AppImage | grep -v "$FILENAME_LOGSEQ" )" || true + [ -n "$FILE_DELETE" ] && rm -f "$FILE_DELETE" + [ -L "$FILE_LINK" ] && rm -f "$FILE_LINK" + + ln -s "$DIR_DEST/$FILENAME_LOGSEQ" "$FILE_LINK" } createDesktop() { local FILE_PNG=${HOME}/.local/share/applications/logseq.png - [ -f $FILE_PNG ] || wget https://raw.githubusercontent.com/logseq/logseq/master/resources/icons/logseq.png -qO $FILE_PNG + [ -f "$FILE_PNG" ] || wget https://raw.githubusercontent.com/logseq/logseq/master/resources/icons/logseq.png -qO "$FILE_PNG" cat > ~/.local/share/applications/logseq.desktop <<-EOF [Desktop Entry] @@ -80,10 +104,11 @@ createDesktop() { } showLogo +echo "Ermitteln der verfügbaren Versionen" getVersionLatest getVersionCurrent echo "Neuste verfügbare Version...... $COLOR_GREEN$VERSION_LATEST$COLOR_RESET" -echo "Derzeit installierte Version... $COLOR_GREEN${VERSION_CURRENT:-${COLOR_RED}Keine installiert}$COLOR_RESET" +echo "Derzeit installierte Version... $COLOR_GREEN${VERSION_CURRENT:-${COLOR_RED}Logseq ist nicht installiert}$COLOR_RESET" [ "$VERSION_CURRENT" != "$VERSION_LATEST" ] || exit