Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

S3Drive #1108

Merged
merged 3 commits into from
Nov 12, 2024
Merged

S3Drive #1108

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion programs/x86_64-apps
Original file line number Diff line number Diff line change
Expand Up @@ -1949,6 +1949,7 @@
◆ rx-bin : A modern and extensible pixel editor implemented in Rust.
◆ ryowallet : Modern GUI interface for Ryo Currency.
◆ ryujinx : Ryujinx Nintendo Switch emulator.
◆ s3drive : Convert S3, SFTP, WebDAV or Rclone back-end into your encrypted storage.
◆ sabaki : Modern, elegant, cross-platform Go/Baduk/Weiqi game board.
◆ saber : A work-in-progress cross-platform libre handwritten notes app.
◆ safe-multisig : Allowing crypto users manage funds in a safer way.
Expand Down Expand Up @@ -2068,8 +2069,8 @@
◆ snippetstore : A snippet management app for developers.
◆ snomcontrol : An application to control snom D3xx phones from the desktop.
◆ snowball : Find and filter literature, fast.
◆ soar : A fast modern package manager for static binaries, portable apps & more.
◆ soapy-sdr : I/Q recorder and processor using SoapySDR as backend.
◆ soar : A fast modern package manager for static binaries, portable apps & more.
◆ socnetv : Social Network Analysis and Visualization software.
◆ soft-serve : The mighty, self-hostable Git server for the command line.
◆ software-challenge-gui : GUI für die Software-Challenge.
Expand Down
77 changes: 77 additions & 0 deletions programs/x86_64/s3drive
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
#!/bin/sh

# AM INSTALL SCRIPT VERSION 3.5
set -u
APP=s3drive
SITE="s3drive/app"

# CREATE DIRECTORIES AND ADD REMOVER
[ -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 -Ls https://api.github.com/repos/s3drive/app/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"

# SCRIPT TO UPDATE THE PROGRAM
cat >> ./AM-updater << 'EOF'
#!/bin/sh
set -u
APP=s3drive
SITE="s3drive/app"
version0=$(cat "/opt/$APP/version")
version=$(curl -Ls https://api.github.com/repos/s3drive/app/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
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 "$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/*mage ./"$APP"
chmod a+x ./"$APP" || exit 1
echo "$version" > ./version
rm -R -f ./*zs-old ./*.part ./tmp ./*~
notify-send "$APP is updated!"
else
echo "Update not needed!"
fi
EOF
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
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