|
| 1 | +#!/bin/sh |
| 2 | + |
| 3 | +# AM INSTALL SCRIPT VERSION 3.5 |
| 4 | +set -u |
| 5 | +APP=firealpaca |
| 6 | +SITE="https://firealpaca.com" |
| 7 | + |
| 8 | +# CREATE DIRECTORIES AND ADD REMOVER |
| 9 | +[ -n "$APP" ] && mkdir -p "/opt/$APP/tmp" "/opt/$APP/icons" && cd "/opt/$APP/tmp" || exit 1 |
| 10 | +printf "#!/bin/sh\nset -e\nrm -f /usr/local/bin/$APP\nrm -R -f /opt/$APP" > ../remove |
| 11 | +printf '\n%s' "rm -f /usr/local/share/applications/$APP-AM.desktop" >> ../remove |
| 12 | +chmod a+x ../remove || exit 1 |
| 13 | + |
| 14 | +# DOWNLOAD AND PREPARE THE APP, $version is also used for updates |
| 15 | +version=$(curl -Ls https://firealpaca.com/download/ | grep -i "<div>Ver. [0-9]" | tail -1 | tr '>< ' '\n' | grep "^[0-9].*[0-9]$") |
| 16 | +wget "https://firealpaca.com/download/linux" || exit 1 |
| 17 | +# Keep this space in sync with other installation scripts |
| 18 | +# Use tar fx ./*tar* here for example in this line in case a compressed file is downloaded. |
| 19 | +cd .. |
| 20 | +mv ./tmp/* ./"$APP" |
| 21 | +# Keep this space in sync with other installation scripts |
| 22 | +rm -R -f ./tmp || exit 1 |
| 23 | +echo "$version" > ./version |
| 24 | +chmod a+x ./"$APP" || exit 1 |
| 25 | + |
| 26 | +# LINK TO PATH |
| 27 | +ln -s "/opt/$APP/$APP" "/usr/local/bin/$APP" |
| 28 | + |
| 29 | +# SCRIPT TO UPDATE THE PROGRAM |
| 30 | +cat >> ./AM-updater << 'EOF' |
| 31 | +#!/bin/sh |
| 32 | +set -u |
| 33 | +APP=firealpaca |
| 34 | +SITE="https://firealpaca.com" |
| 35 | +version0=$(cat "/opt/$APP/version") |
| 36 | +version=$(curl -Ls https://firealpaca.com/download/ | grep -i "<div>Ver. [0-9]" | tail -1 | tr '>< ' '\n' | grep "^[0-9].*[0-9]$") |
| 37 | +[ -n "$version" ] || { echo "Error getting link"; exit 1; } |
| 38 | +if command -v appimageupdatetool >/dev/null 2>&1; then |
| 39 | + cd "/opt/$APP" || exit 1 |
| 40 | + appimageupdatetool -Or ./"$APP" && chmod a+x ./"$APP" && echo "$version" > ./version && exit 0 |
| 41 | +fi |
| 42 | +if [ "$version" != "$version0" ]; then |
| 43 | + mkdir "/opt/$APP/tmp" && cd "/opt/$APP/tmp" || exit 1 |
| 44 | + notify-send "A new version of $APP is available, please wait" |
| 45 | + wget "https://firealpaca.com/download/linux" || exit 1 |
| 46 | + # Use tar fx ./*tar* here for example in this line in case a compressed file is downloaded. |
| 47 | + cd .. |
| 48 | + mv --backup=t ./tmp/* ./"$APP" |
| 49 | + chmod a+x ./"$APP" || exit 1 |
| 50 | + echo "$version" > ./version |
| 51 | + rm -R -f ./*zs-old ./*.part ./tmp ./*~ |
| 52 | + notify-send "$APP is updated!" |
| 53 | +else |
| 54 | + echo "Update not needed!" |
| 55 | +fi |
| 56 | +EOF |
| 57 | +chmod a+x ./AM-updater || exit 1 |
| 58 | + |
| 59 | +# LAUNCHER & ICON |
| 60 | +./"$APP" --appimage-extract *.desktop 1>/dev/null && mv ./squashfs-root/*.desktop ./"$APP".desktop |
| 61 | +./"$APP" --appimage-extract .DirIcon 1>/dev/null && mv ./squashfs-root/.DirIcon ./DirIcon |
| 62 | +COUNT=0 |
| 63 | +while [ "$COUNT" -lt 10 ]; do # Tries to get the actual icon/desktop if it is a symlink to another symlink |
| 64 | + if [ -L ./"$APP".desktop ]; then |
| 65 | + LINKPATH="$(readlink ./"$APP".desktop | sed 's|^\./||' 2>/dev/null)" |
| 66 | + ./"$APP" --appimage-extract "$LINKPATH" 1>/dev/null && mv ./squashfs-root/"$LINKPATH" ./"$APP".desktop |
| 67 | + fi |
| 68 | + if [ -L ./DirIcon ]; then |
| 69 | + LINKPATH="$(readlink ./DirIcon | sed 's|^\./||' 2>/dev/null)" |
| 70 | + ./"$APP" --appimage-extract "$LINKPATH" 1>/dev/null && mv ./squashfs-root/"$LINKPATH" ./DirIcon |
| 71 | + fi |
| 72 | + [ ! -L ./"$APP".desktop ] && [ ! -L ./DirIcon ] && break |
| 73 | + COUNT=$((COUNT + 1)) |
| 74 | +done |
| 75 | +sed -i "s#Exec=[^ ]*#Exec=$APP#g; s#Icon=.*#Icon=/opt/$APP/icons/$APP#g" ./"$APP".desktop |
| 76 | +mv ./"$APP".desktop /usr/local/share/applications/"$APP"-AM.desktop && mv ./DirIcon ./icons/"$APP" 1>/dev/null |
| 77 | +rm -R -f ./squashfs-root |
0 commit comments