From e8009b798c6d43bdbc295584d1cc52f709432fb0 Mon Sep 17 00:00:00 2001 From: Samuel <36420837+Samueru-sama@users.noreply.github.com> Date: Wed, 20 Nov 2024 01:43:01 -0400 Subject: [PATCH] fix puddletag --- programs/x86_64/puddletag | 87 +++++++++++++++++++++++---------------- 1 file changed, 52 insertions(+), 35 deletions(-) diff --git a/programs/x86_64/puddletag b/programs/x86_64/puddletag index 69fe321e2..fd6445f5c 100644 --- a/programs/x86_64/puddletag +++ b/programs/x86_64/puddletag @@ -1,60 +1,77 @@ #!/bin/sh -# AM INSTALL SCRIPT VERSION TOOLPACKS EXTRAS +# AM INSTALL SCRIPT VERSION 3.5 set -u -APP="puddletag" -SRC="https://pkg.ajam.dev/$(uname -m)" -TYPE="NixAppImage" -SITE="${SRC}/${APP}.${TYPE}" +APP=puddletag +SITE="Samueru-sama/puddletag-AppImage" # CREATE DIRECTORIES AND ADD REMOVER -[ -n "${APP}" ] && mkdir -p "/opt/${APP}" "/opt/${APP}/icons" && cd "/opt/${APP}" || exit 1 -printf "#!/bin/sh\nset -e\nrm -f /usr/local/bin/${APP}\nrm -R -f /opt/${APP}" > "./remove" -printf '\n%s' "rm -f /usr/local/share/applications/${APP}-AM.desktop" >> "./remove" -chmod a+x "./remove" || exit 1 +[ -n "$APP" ] && mkdir -p "/opt/$APP/tmp" "/opt/$APP/icons" && cd "/opt/$APP/tmp" || exit 1 +printf "#!/bin/sh\nset -e\nrm -f /usr/local/bin/$APP\nrm -R -f /opt/$APP" > ../remove +printf '\n%s' "rm -f /usr/local/share/applications/$APP-AM.desktop" >> ../remove +chmod a+x ../remove || exit 1 # DOWNLOAD AND PREPARE THE APP, $version is also used for updates -VERSION="$(curl -qfsSL "${SITE}.version")" -wget "${SITE}" -O "./${APP}" || exit 1 -echo "${VERSION}" > "./version" -chmod a+x "./${APP}" || exit 1 +version=$(curl -Ls https://api.github.com/repos/Samueru-sama/puddletag-AppImage/releases/latest | sed 's/[()",{} ]/\n/g' | grep -oi "https.*mage$" | grep -vi "i386\|i686\|aarch64\|arm64\|armv7l" | head -1) +wget "$version" || exit 1 +# Keep this space in sync with other installation scripts +# Use tar fx ./*tar* here for example in this line in case a compressed file is downloaded. +cd .. +mv ./tmp/*mage ./"$APP" +# Keep this space in sync with other installation scripts +rm -R -f ./tmp || exit 1 +echo "$version" > ./version +chmod a+x ./"$APP" || exit 1 # LINK TO PATH -ln -s "/opt/${APP}/${APP}" "/usr/local/bin/${APP}" +ln -s "/opt/$APP/$APP" "/usr/local/bin/$APP" # SCRIPT TO UPDATE THE PROGRAM -cat >> "./AM-updater" << 'EOF' +cat >> ./AM-updater << 'EOF' #!/bin/sh set -u -APP="puddletag" -SRC="https://pkg.ajam.dev/$(uname -m)" -TYPE="NixAppImage" -VERSION0=$(cat "/opt/${APP}/version") -VERSION="$(curl -qfsSL "${SRC}/${APP}.${TYPE}.version")" -[ -n "$VERSION" ] || { echo "Error getting link"; exit 1; } +APP=puddletag +SITE="Samueru-sama/puddletag-AppImage" +version0=$(cat "/opt/$APP/version") +version=$(curl -Ls https://api.github.com/repos/Samueru-sama/puddletag-AppImage/releases/latest | sed 's/[()",{} ]/\n/g' | grep -oi "https.*mage$" | grep -vi "i386\|i686\|aarch64\|arm64\|armv7l" | head -1) +[ -n "$version" ] || { echo "Error getting link"; exit 1; } if command -v appimageupdatetool >/dev/null 2>&1; then cd "/opt/$APP" || exit 1 - appimageupdatetool -Or ./"${APP}" && chmod a+x ./"${APP}" && echo "${VERSION}" > ./version && exit 0 + appimageupdatetool -Or ./"$APP" && chmod a+x ./"$APP" && echo "$version" > ./version && exit 0 fi -if [ "$VERSION" != "$VERSION0" ]; then - mkdir "/opt/${APP}/tmp" && cd "/opt/${APP}/tmp" || exit 1 - notify-send "A new version of ${APP} is available, please wait" - wget "${SRC}/${APP}.${TYPE}" || exit 1 +if [ "$version" != "$version0" ]; then + mkdir "/opt/$APP/tmp" && cd "/opt/$APP/tmp" || exit 1 + notify-send "A new version of $APP is available, please wait" + wget "$version" || exit 1 + # Use tar fx ./*tar* here for example in this line in case a compressed file is downloaded. cd .. - mv --backup=t "./tmp/${APP}.${TYPE}" "./${APP}" - chmod a+x "./${APP}" || exit 1 - echo "$VERSION" > "./version" + mv --backup=t ./tmp/*mage ./"$APP" + chmod a+x ./"$APP" || exit 1 + echo "$version" > ./version rm -R -f ./*zs-old ./*.part ./tmp ./*~ - notify-send "${APP} is updated!" + notify-send "$APP is updated!" else echo "Update not needed!" fi EOF -chmod a+x "./AM-updater" || exit 1 +chmod a+x ./AM-updater || exit 1 # LAUNCHER & ICON -./"${APP}" --appimage-extract *.desktop 1>/dev/null && mv ./squashfs-root/*.desktop ./"${APP}".desktop -./"${APP}" --appimage-extract .DirIcon 1>/dev/null && mv ./squashfs-root/.DirIcon ./DirIcon -sed -i "s#Exec=[^ ]*#Exec=${APP}#g; s#Icon=.*#Icon=/opt/${APP}/icons/${APP}#g" "./${APP}.desktop" -mv "./${APP}.desktop" "/usr/local/share/applications/${APP}-AM.desktop" && mv ./DirIcon "./icons/${APP}" +./"$APP" --appimage-extract *.desktop 1>/dev/null && mv ./squashfs-root/*.desktop ./"$APP".desktop +./"$APP" --appimage-extract .DirIcon 1>/dev/null && mv ./squashfs-root/.DirIcon ./DirIcon +COUNT=0 +while [ "$COUNT" -lt 10 ]; do # Tries to get the actual icon/desktop if it is a symlink to another symlink + if [ -L ./"$APP".desktop ]; then + LINKPATH="$(readlink ./"$APP".desktop | sed 's|^\./||' 2>/dev/null)" + ./"$APP" --appimage-extract "$LINKPATH" 1>/dev/null && mv ./squashfs-root/"$LINKPATH" ./"$APP".desktop + fi + if [ -L ./DirIcon ]; then + LINKPATH="$(readlink ./DirIcon | sed 's|^\./||' 2>/dev/null)" + ./"$APP" --appimage-extract "$LINKPATH" 1>/dev/null && mv ./squashfs-root/"$LINKPATH" ./DirIcon + fi + [ ! -L ./"$APP".desktop ] && [ ! -L ./DirIcon ] && break + COUNT=$((COUNT + 1)) +done +sed -i "s#Exec=[^ ]*#Exec=$APP#g; s#Icon=.*#Icon=/opt/$APP/icons/$APP#g" ./"$APP".desktop +mv ./"$APP".desktop /usr/local/share/applications/"$APP"-AM.desktop && mv ./DirIcon ./icons/"$APP" 1>/dev/null rm -R -f ./squashfs-root