Compare commits

..

No commits in common. "stable" and "0.5.7" have entirely different histories.

5 changed files with 242 additions and 587 deletions

3
.gitignore vendored
View file

@ -1,3 +0,0 @@
test.sh
devdoc.md
binaries

View file

@ -1,76 +1,56 @@
# Helium Bowser installer & updater # Helium Bowser installer & updater
## Purpose ## Purpose
This script was initially designed to just update my Helium browser but over time and interest it got more functional and universal. It includes functions to install, update, remove, add launcher, etc... It's supposed to run in user space and is (Linux) distro independent I suppose. This script was initially designed to just update my Helium browser but over time and interest it got more functional and universal. It includes functions to install, update, remove, add launcher, etc... and is distro independent.
With "little" tinkering it should be possible to apply this script to install, update & configure many kinds of releases from source, like Debian packages, AppImages, binaries, etc... With "little" tinkering it should be possible to apply this script to install, update & configure many kinds of releases from source, like Debian packages, AppImages, binaries, etc...
## Usage ## Usage
### Help Help
```sh ```sh
./helium_helper.sh -h ./helium_helper.sh -h
``` ```
---
### First Install ### First Install
To initally install Helium browser via this script, download helium_helper.sh and make it executable: To initally install Helium browser via this script, download helium_helper.sh and make it executable:
```sh ```sh
wget https://lab.c95.org/fr4nz/helium-helper/raw/branch/main/helium_helper.sh && chmod +x helium_helper.sh wget https://lab.c95.org/fr4nz/helium-helper/raw/branch/main/helium_helper.sh && chmod +x helium_helper.sh
``` ```
Run script with install parameter _-i_ Run script with install parameter _-i_
- Default install directory = `$HOME/.apps/Helium`
```sh ```sh
./helium_helper.sh -i ./helium_helper.sh -i
``` ```
Add alias to `.shellrc` | _optional_
**OPTIONAL** : Add alias to `.shellrc` | _working in zsh, bash & fish_
- Default alias = `update-helium`
```sh ```sh
./helium_helper.sh -a ./helium_helper.sh -a ### ONLY TESTED WITH zsh & bash
``` ```
--- ---
### Updating ### Updating
**From launcher** (if added during install or by running `./helium_helper.sh -l`) **From launcher** (if added)
Checking for the latest version and updating can simply be done for the browser as well as the script by right clicking the app icon and choosing either update option, which will be run by `helium_launcher_update.sh`. This will backup all files that are being updated and write a log. Checking for the latest version and updating can simply be done for the browser as well as the script by right clicking the app icon and choosing either update option, which will be run by `helium_launcher_update.sh`. This will backup all files that are being updated and write a log.
**Terminal** **Terminal**
Updating can also be done by running: Updating can also be done by running:
- Update Helium Browser
```sh ```sh
./helium_helper.sh -u ./helium_helper.sh -u ### UPDATE APP
``` ```
- Update Helium Helper
```sh ```sh
./helium_helper.sh -S ./helium_helper.sh -S ### UPDATE SCRIPT
``` ```
--- Since this script is interactive, it doesn't keep logs.
### Backing up
Backing up, by default, pulls all important files, folders & configuration and compresses an archive, which is stored in `$HOME/.apps/Helium/assets`
- Default backup
```sh
./helium_helper.sh -b
```
- Backup to custom path
```sh
./helium_helper.sh -b </PATH/TO/DESTINATION>
```
**NOTE:** The backup path specified won't be overridden within the script yet. Working on it...
**Since this script is interactive, it doesn't keep logs.**
## Overview ## Overview
### Helium_Helper.sh ### Helium_Helper.sh
- Interactive installer, updater & configuration script - Interactive installer, updater & configuration script
- Installs to `$HOME/.apps/Helium` | changeable in line 32 `INSTALL_PATH` - Installs to `/home/<USER>/.apps/Helium` | changeable in line 28 `INSTALL_PATH`
- Assumes: - Assumes:
- Presence of `$HOME/.apps/Helium` when updating | changeable in line 32 `INSTALL_PATH` - Presence of `/home/<USER>/.apps/Helium` when updating | changeable in line 28 `INSTALL_PATH`
- Executable named `Helium.AppImage` - Executable named `Helium.AppImage`
- Keeps backup archives from - Keeps backups of
- `Helium.AppImage` - `Helium.AppImage` --> `Helium.AppImage.old`
- `helium_helper.sh` - `helium_helper.sh` --> `helium_helper.sh.old`
- `helium_launcher_update.sh` - `helium_launcher_update.sh` --> `helium_launcher_update.sh.old`
- `Helium.desktop` - `Helium.desktop` --> `Helium.desktop.old`
- `net.imput.helium` which will be overwritten at every update
- Adds desktop launcher to `$HOME/.local/share/applications` - Adds desktop launcher to `/home/<USER>/.local/share/applications`
- Adds options to launcher which are run by `helium_launcher_updater.sh` - Adds options to launcher which are run by `helium_launcher_updater.sh`
- Update Helium - Update Helium
- Update Script - Update Script
@ -80,14 +60,14 @@ Backing up, by default, pulls all important files, folders & configuration and c
### Helium_Launcher_Update.sh ### Helium_Launcher_Update.sh
- Update Helium from launcher - Update Helium from launcher
- Assumes: - Assumes:
- Presence of `$HOME/.apps/Helium` when updating | changeable in line 22 `INSTALL_PATH` - Presence of `/home/<USER>/.apps/Helium` when updating | changeable in line 19 `INSTALL_PATH`
- Executable named `Helium.AppImage` - Executable named `Helium.AppImage`
- Loggs to `$HOME/.apps/Helium/assets/logs` - Loggs to `/home/<USER>/.apps/Helium/assets/logs`
- Keeps backup archives from - Keeps backups of
- `Helium.AppImage` - `Helium.AppImage` --> `Helium.AppImage.old`
- `helium_helper.sh` - `helium_helper.sh` --> `helium_helper.sh.old`
- `helium_launcher_update.sh` - `helium_launcher_update.sh` --> `helium_launcher_update.sh.old`
- `Helium.desktop` - `Helium.desktop` --> `Helium.desktop.old`
- `net.imput.helium` which will be overwritten at every update
- Run `helium_launcher_update.sh -h` for help - Run `helium_launcher_update.sh -h` for help
&nbsp; &nbsp;

View file

@ -1,3 +0,0 @@
on:
pull_requests:
pull_request_target:

View file

@ -9,28 +9,23 @@ YEL="\e[0;33m"
RED="\e[0;31m" RED="\e[0;31m"
GRN="\e[0;32m" GRN="\e[0;32m"
LCY="\e[1;36m" LCY="\e[1;36m"
WHT="\e[1;37m"
CRS="\e[0m" CRS="\e[0m"
## GLOBAL VARIABLES ## GLOBAL VARIABLES
APP_NAME="Helium" APP_NAME="Helium"
APP_NAME_LONG="Helium Web Browser" APP_NAME_LONG="Helium Web Browser"
ARCH="x86_64"
FILE_EXTENSION="AppImage" FILE_EXTENSION="AppImage"
APP_SOURCE="GitHub" APP_SOURCE="GitHub"
ARCH_OVERRIDE=""
BACKUP_METHOD="full"
BACKUP_COMPRESSION_OVERRIDE=""
SCRIPT_NAME="$APP_NAME Helper Script" SCRIPT_NAME="$APP_NAME Helper Script"
SCRIPT_FILE_NAME="helium_helper.sh" SCRIPT_FILE_NAME="helium_helper.sh"
AUTO_SCRIPT_FILE_NAME="helium_launcher_update.sh" AUTO_SCRIPT_FILE_NAME="helium_launcher_update.sh"
SCRIPT_VERSION="0.5.9.1" SCRIPT_VERSION="0.5.7"
ALIAS="update-helium" ALIAS="update-helium"
DATE=$(date +"%d%m%y")
## LOCATIONS ## LOCATIONS
TMP=/tmp/$APP_NAME TMP=/tmp/$APP_NAME
INSTALL_PATH=$HOME/.apps/$APP_NAME INSTALL_PATH=$HOME/.apps/$APP_NAME
APP_CONFIG_PATH=$HOME/.config/net.imput.helium
ASSET_PATH=$INSTALL_PATH/assets ASSET_PATH=$INSTALL_PATH/assets
BACKUP_PATH=$ASSET_PATH/backup BACKUP_PATH=$ASSET_PATH/backup
LOG_PATH=$ASSET_PATH/logs LOG_PATH=$ASSET_PATH/logs
@ -48,13 +43,16 @@ APP_SOURCE_URL=https://api.github.com/repos/imputnet/helium-linux/releases/lates
### DEPENDENCIES ### DEPENDENCIES
cmd_query() { cmd_query() {
if ! command -v $PACKAGE > /dev/null 2>&1 ; then local PACKAGE="$1"
echo " - $PACKAGE" >> $TMP/missingDeps
if ! command -v "$PACKAGE" >/dev/null 2>&1 ; then
echo " - $PACKAGE" >> $TMP/missingDeps
fi fi
} }
dependency_check () { dependency_check () {
DEPENDENCIES=("curl" "wget" "tar") DEPENDENCIES=("curl" "wget")
mkdir -p $TMP mkdir -p $TMP
for PACKAGE in "${DEPENDENCIES[@]}" ; do for PACKAGE in "${DEPENDENCIES[@]}" ; do
@ -64,78 +62,44 @@ dependency_check () {
if [ -f "$TMP/missingDeps" ] ; then if [ -f "$TMP/missingDeps" ] ; then
MISSING=$(cat $TMP/missingDeps) MISSING=$(cat $TMP/missingDeps)
echo -e " ${RED}Following dependencies are missing :\n\n${CRS}$MISSING\n\n ${CYN}Please install and re-run script !${CRS}\n" echo -e "\n ${RED}Following dependencies are missing :\n\n${CRS}$MISSING\n\n ${CYN}Please install and re-run script !${CRS}"
exit_clean exit_clean
fi
}
### SHELL CHECK
shell_query() {
if [ "$(echo $SHELL | grep "$SHELL_OPTION")" ] ; then
ACTIVE_SHELL=$SHELL_OPTION
fi
}
shell_check() {
SHELLS=("bash" "fish" "zsh")
for SHELL_OPTION in "${SHELLS[@]}" ; do
shell_query "$SHELL_OPTION"
done
}
### ARCH CHECK
arch_check() {
if [ "$ARCH_OVERRIDE" ] ; then
ARCH=$ARCH_OVERRIDE
else
ARCH=$(uname -m)
if [ "$ARCH" == "aarch64" ] ; then
ARCH="arm64"
elif [ "$ARCH" == "amd64" ] ; then
ARCH="x86_64"
fi
fi
if ! [[ "$ARCH" == "arm64" || "$ARCH" == "x86_64" ]] ; then
echo -e "\n ${CYN}$ARCH ${RED}unsupported! Only ${CYN}x86_68 ${RED}or ${CYN}arm64 ${RED}architecture are supported!${CRS}\n"
exit
fi fi
} }
### CHECK LOCAL INSTALL ### CHECK LOCAL INSTALL
local_check() { local_check() {
if ! [ -d "$INSTALL_PATH" ] ; then if ! [ -d "$INSTALL_PATH" ] ; then
echo -e "\n ${YEL}$APP_NAME_LONG directory not found!${CRS}\n" echo -e "\n ${RED}$APP_NAME_LONG directory not found!${CRS}"
install_application install_helium
exit exit
elif ! [ -f "$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" ] ; then elif ! [ -f "$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" ] ; then
echo -e "\n ${YEL}$APP_NAME_LONG directory found but no executable named ${CYN}$APP_NAME.$FILE_EXTENSION${YEL}!${CRS}\n" echo -e "\n ${RED}$APP_NAME_LONG directory found but no executable named ${CYN}$APP_NAME.$FILE_EXTENSION${RED}!${CRS}"
install_application install_helium
exit exit
fi fi
} }
### INSTALL ### INSTALL
install_application() { install_helium() {
if [ -f "$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" ] ; then if [ -f "$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" ] ; then
echo -e " ${YEL}$APP_NAME_LONG AppImage found! Trying to update...${CRS}" echo -e "\n ${YEL}$APP_NAME_LONG AppImage found! Trying to update...${CRS}"
update_application update_helium
exit exit
fi fi
while true ; do while true ; do
read -p " Download and install $APP_NAME_LONG from $APP_SOURCE? (Y/n) : " CONFIRM_INSTALL read -p " Download and install $APP_NAME_LONG from $APP_SOURCE? (Y/n) : " CONFIRM_INSTALL
echo
if [[ "$CONFIRM_INSTALL" == "" || "$CONFIRM_INSTALL" == "y" || "$CONFIRM_INSTALL" == "Y" ]] ; then if [[ "$CONFIRM_INSTALL" == "" || "$CONFIRM_INSTALL" == "y" || "$CONFIRM_INSTALL" == "Y" ]] ; then
DOWNLOAD_URL=$(curl -s $APP_SOURCE_URL | grep "browser_download_url" | grep "$ARCH.$FILE_EXTENSION" | grep -v "zsync" | tr -d \" | awk '{print $2}') DOWNLOAD_URL=$(curl -s $APP_SOURCE_URL | grep "browser_download_url" | grep "$ARCH.$FILE_EXTENSION" | grep -v "zsync" | tr -d \" | awk '{print $2}')
APP_SOURCE_FILENAME=$(curl -s $APP_SOURCE_URL | grep "browser_download_url" | grep "$ARCH.$FILE_EXTENSION" | grep -v "zsync" | tr -d \" | awk '{print $2}' | awk -F'/' '{print $9}') APP_SOURCE_FILENAME=$(curl -s $APP_SOURCE_URL | grep "browser_download_url" | grep "$ARCH.$FILE_EXTENSION" | grep -v "zsync" | tr -d \" | awk '{print $2}' | awk -F'/' '{print $9}')
echo -e "\n - Downloading ${CYN}$APP_SOURCE_FILENAME${CRS}..." wget -P $TMP $DOWNLOAD_URL -q --show-progress
wget -P $TMP $DOWNLOAD_URL -q
chmod +x $TMP/$APP_SOURCE_FILENAME chmod +x $TMP/$APP_SOURCE_FILENAME
mkdir -p $INSTALL_PATH mkdir -p $INSTALL_PATH
mv $TMP/$APP_SOURCE_FILENAME $INSTALL_PATH/$APP_NAME.$FILE_EXTENSION mv $TMP/$APP_SOURCE_FILENAME $INSTALL_PATH/$APP_NAME.$FILE_EXTENSION
@ -144,12 +108,14 @@ install_application() {
break break
elif [[ "$CONFIRM_INSTALL" == "n" || "$CONFIRM_INSTALL" == "N" ]] ; then elif [[ "$CONFIRM_INSTALL" == "n" || "$CONFIRM_INSTALL" == "N" ]] ; then
echo -e "\n ${RED}Cancelled!${CRS}\n" echo -e " ${RED}Cancelled!${CRS}"
break break
else else
echo -e "\n ${YEL}Invalid response!${CRS}\n" echo -e " ${YEL}Invalid response!${CRS}\n"
fi fi
done done
} }
@ -162,6 +128,7 @@ add_launcher() {
while true ; do while true ; do
echo echo
read -p " Add $APP_NAME_LONG launcher to $LAUNCHER_PATH? (Y/n) : " CONFIRM_LAUNCHER read -p " Add $APP_NAME_LONG launcher to $LAUNCHER_PATH? (Y/n) : " CONFIRM_LAUNCHER
echo
if [[ "$CONFIRM_LAUNCHER" == "" || "$CONFIRM_LAUNCHER" == "y" || "$CONFIRM_LAUNCHER" == "Y" ]] ; then if [[ "$CONFIRM_LAUNCHER" == "" || "$CONFIRM_LAUNCHER" == "y" || "$CONFIRM_LAUNCHER" == "Y" ]] ; then
LAUNCHER_URL=$REMOTE_REPO_URL/assets/launcher/helium.desktop.template LAUNCHER_URL=$REMOTE_REPO_URL/assets/launcher/helium.desktop.template
@ -170,15 +137,13 @@ add_launcher() {
LOCAL_VERSION=$($INSTALL_PATH/$APP_NAME.$FILE_EXTENSION --version | awk '{print $2}') LOCAL_VERSION=$($INSTALL_PATH/$APP_NAME.$FILE_EXTENSION --version | awk '{print $2}')
mkdir -p $LAUNCHER_PATH $SCRIPT_PATH $BACKUP_PATH $ASSET_PATH/icon mkdir -p $LAUNCHER_PATH $SCRIPT_PATH $BACKUP_PATH $ASSET_PATH/icon
if ! [ -f "$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME" ] ; then if ! [ -f "$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME" ] ; then
echo -e "\n - Downloading ${CYN}$AUTO_SCRIPT_FILE_NAME${CRS}..." wget -P $TMP $AUTO_SCRIPT_URL -q --show-progress
wget -P $TMP $AUTO_SCRIPT_URL -q
chmod +x $TMP/$AUTO_SCRIPT_FILE_NAME chmod +x $TMP/$AUTO_SCRIPT_FILE_NAME
mv $TMP/$AUTO_SCRIPT_FILE_NAME $SCRIPT_PATH mv $TMP/$AUTO_SCRIPT_FILE_NAME $SCRIPT_PATH
fi fi
echo -e "\n - Downloading ${CYN}launcher files${CRS}..." wget -P $TMP $LAUNCHER_URL -q --show-progress
wget -P $TMP $LAUNCHER_URL -q wget -P $TMP $ICON_URL -q --show-progress
wget -P $TMP $ICON_URL -q
sed -i "s|%APP_LOCATION%|$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION|" $TMP/helium.desktop.template sed -i "s|%APP_LOCATION%|$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION|" $TMP/helium.desktop.template
sed -i "s|%ICON_LOCATION%|$ASSET_PATH/icon/helium.png|" $TMP/helium.desktop.template sed -i "s|%ICON_LOCATION%|$ASSET_PATH/icon/helium.png|" $TMP/helium.desktop.template
sed -i "s|%APP_VERSION%|$LOCAL_VERSION|" $TMP/helium.desktop.template sed -i "s|%APP_VERSION%|$LOCAL_VERSION|" $TMP/helium.desktop.template
@ -196,70 +161,52 @@ add_launcher() {
else else
echo -e " ${YEL}Invalid response!${CRS}\n" echo -e " ${YEL}Invalid response!${CRS}\n"
fi fi
done done
else else
echo -e "\n ${RED}$APP_NAME_LONG AppImage not found! Can't add launcher...${CRS}" echo -e "\n ${RED}$APP_NAME_LONG AppImage not found! Can't add launcher...${CRS}"
install_application install_helium
exit exit
fi fi
} }
### ALIAS ### ALIAS
add_alias() { add_alias() { ### WORKS BUT NEEDS WORK
if ! [ -f "$SCRIPT_PATH/$SCRIPT_FILE_NAME" ] ; then if ! [ -f "$SCRIPT_PATH/$SCRIPT_FILE_NAME" ] ; then
mkdir -p $SCRIPT_PATH mkdir -p $SCRIPT_PATH
wget -P $TMP $REMOTE_SCRIPT_URL -q wget -P $TMP $REMOTE_SCRIPT_URL -q
chmod +x $TMP/$SCRIPT_FILE_NAME chmod +x $TMP/$SCRIPT_FILE_NAME
mv $TMP/$SCRIPT_FILE_NAME $SCRIPT_PATH mv $TMP/$SCRIPT_FILE_NAME $SCRIPT_PATH
fi fi
if [ "$ACTIVE_SHELL" == "zsh" ] ; then if [ -f "$HOME/.zshrc" ] ; then
if [ "$(cat $HOME/.zshrc | grep "$ALIAS")" ] ; then if [ "$(cat $HOME/.zshrc | grep "$ALIAS")" ] ; then
echo -e "\n ${LCY}$ALIAS${CRS} already present in ${CYN}$HOME/.zshrc${CRS}\n" echo -e "\n ${LCY}$ALIAS ${GRN}already present in${CRS} $HOME/.zshrc"
exit
else
echo "### $APP_NAME_LONG Alias zsh ###" >> $HOME/.zshrc
echo "alias $ALIAS=\"$SCRIPT_PATH/$SCRIPT_FILE_NAME\"" >> $HOME/.zshrc
echo >> $HOME/.zshrc
echo -e "\n ${LCY}$ALIAS${CRS} added to ${CYN}$HOME/.zshrc${CRS}\n"
fi fi
echo "alias $ALIAS=\"$SCRIPT_PATH/$SCRIPT_FILE_NAME\"" >> $HOME/.zshrc
echo -e "\n ${LCY}$ALIAS ${GRN}added to${CRS} $HOME/.zshrc"
elif [ "$ACTIVE_SHELL" == "bash" ] ; then elif [ -f "$HOME/.bashrc" ] ; then
if [ "$(cat $HOME/.bashrc | grep "$ALIAS")" ] ; then if [ "$(cat $HOME/.bashrc | grep "$ALIAS")" ] ; then
echo -e "\n ${LCY}$ALIAS${CRS} already present in ${CYN}$HOME/.bashrc${CRS}\n" echo -e "\n ${LCY}$ALIAS ${GRN}already present in${CRS} $HOME/.bashrc"
exit
else
echo "### $APP_NAME_LONG Alias bash ###" >> $HOME/.bashrc
echo "alias $ALIAS=\"$SCRIPT_PATH/$SCRIPT_FILE_NAME\"" >> $HOME/.bashrc
echo >> $HOME/.bashrc
echo -e "\n ${LCY}$ALIAS${CRS} added to ${CYN}$HOME/.bashrc${CRS}\n"
fi
elif [ "$ACTIVE_SHELL" == "fish" ] ; then
if [ "$(cat $HOME/.config/fish/config.fish | grep "source $HOME/.config/fish/$ALIAS.fish")" ] ; then
echo -e "\n ${LCY}$ALIAS${CRS} already present in ${CYN}$HOME/.config/fish/config.fish${CRS}\n"
else
echo "### $APP_NAME_LONG Alias FISH ###" > $HOME/.config/fish/$ALIAS.fish
echo >> $HOME/.config/fish/$ALIAS.fish
echo "function $ALIAS" >> $HOME/.config/fish/$ALIAS.fish
echo " $SCRIPT_PATH/$SCRIPT_FILE_NAME \$argv" >> $HOME/.config/fish/$ALIAS.fish
echo "end" >> $HOME/.config/fish/$ALIAS.fish
echo >> $HOME/.config/fish/$ALIAS.fish
echo "source $HOME/.config/fish/$ALIAS.fish" >> $HOME/.config/fish/config.fish
echo -e "\n ${LCY}$ALIAS ${CRS}added to ${CYN}$HOME/.config/fish/config.fish${CRS}\n"
fi fi
echo "alias $ALIAS=\"$SCRIPT_PATH/$SCRIPT_FILE_NAME\"" >> $HOME/.zshrc
echo -e "\n ${LCY}$ALIAS ${GRN}added to${CRS} $HOME/.bashrc"
else else
echo -e "\n ${LCY}$ACTIVE_SHELL${RED}shell is not yet supported!${CRS}\n" echo -e "\n ${RED}No .shellrc file found!${CRS}"
echo -e " ${CRS}Working implementation are available for bash, zsh & fish!${CRS}\n"
fi fi
} }
### UPDATE ### UPDATE
update_application() { update_helium() {
LOCAL_VERSION=$($INSTALL_PATH/$APP_NAME.$FILE_EXTENSION --version | awk '{print $2}') LOCAL_VERSION=$($INSTALL_PATH/$APP_NAME.$FILE_EXTENSION --version | awk '{print $2}')
APP_SOURCE_VERSION=$(curl -s $APP_SOURCE_URL | grep "tag_name" | tr -d \", | awk '{print $2}') APP_SOURCE_VERSION=$(curl -s $APP_SOURCE_URL | grep "tag_name" | tr -d \", | awk '{print $2}')
@ -271,6 +218,7 @@ update_application() {
elif [ -z "$LOCAL_VERSION" ] ; then elif [ -z "$LOCAL_VERSION" ] ; then
echo -e "\n ${RED}Empty version tag from ${CYN}local AppImage${RED}! Can't compare, exiting...${CRS}" echo -e "\n ${RED}Empty version tag from ${CYN}local AppImage${RED}! Can't compare, exiting...${CRS}"
exit exit
fi fi
### COMPARE LOCAL & REMOTE VERSION ### COMPARE LOCAL & REMOTE VERSION
@ -282,245 +230,94 @@ update_application() {
elif [ "$APP_SOURCE_VERSION_NUM" -gt "$LOCAL_VERSION_NUM" ] ; then elif [ "$APP_SOURCE_VERSION_NUM" -gt "$LOCAL_VERSION_NUM" ] ; then
echo -e "\n ${LCY}$APP_NAME_LONG is updatable!${CRS}\n" echo -e "\n ${LCY}$APP_NAME_LONG is updatable!${CRS}\n"
app_version_info echo -e " ${CYN}Local Version :\t${CRS}${LOCAL_VERSION}"
echo -e " ${CYN}$APP_SOURCE Version :\t${CRS}${APP_SOURCE_VERSION}\n"
while true ; do while true ; do
read -p " Download and update $APP_NAME_LONG from $APP_SOURCE? (Y/n) : " CONFIRM read -p " Download and update $APP_NAME_LONG from $APP_SOURCE? (Y/n) : " CONFIRM
echo
if [[ "$CONFIRM" == "" || "$CONFIRM" == "y" || "$CONFIRM" == "Y" ]] ; then if [[ "$CONFIRM" == "" || "$CONFIRM" == "y" || "$CONFIRM" == "Y" ]] ; then
DOWNLOAD_URL=$(curl -s $APP_SOURCE_URL | grep "browser_download_url" | grep "$ARCH.$FILE_EXTENSION" | grep -v "zsync" | tr -d \" | awk '{print $2}') DOWNLOAD_URL=$(curl -s $APP_SOURCE_URL | grep "browser_download_url" | grep "$ARCH.$FILE_EXTENSION" | grep -v "zsync" | tr -d \" | awk '{print $2}')
APP_SOURCE_FILENAME=$(curl -s $APP_SOURCE_URL | grep "browser_download_url" | grep "$ARCH.$FILE_EXTENSION" | grep -v "zsync" | tr -d \" | awk '{print $2}' | awk -F'/' '{print $9}') APP_SOURCE_FILENAME=$(curl -s $APP_SOURCE_URL | grep "browser_download_url" | grep "$ARCH.$FILE_EXTENSION" | grep -v "zsync" | tr -d \" | awk '{print $2}' | awk -F'/' '{print $9}')
mkdir -p $TMP mkdir -p $TMP $BACKUP_PATH
echo -e "\n - Downloading ${CYN}$APP_SOURCE_FILENAME${CRS}..." wget -P $TMP $DOWNLOAD_URL -q --show-progress
wget -P $TMP $DOWNLOAD_URL -q
${BACKUP_METHOD}_backup
chmod +x $TMP/$APP_SOURCE_FILENAME chmod +x $TMP/$APP_SOURCE_FILENAME
if [ -f "$BACKUP_PATH/$APP_NAME.old" ] ; then
rm $BACKUP_PATH/$APP_NAME.old
fi
mv $INSTALL_PATH/$APP_NAME.$FILE_EXTENSION $BACKUP_PATH/$APP_NAME.old
mv $TMP/$APP_SOURCE_FILENAME $INSTALL_PATH/$APP_NAME.$FILE_EXTENSION mv $TMP/$APP_SOURCE_FILENAME $INSTALL_PATH/$APP_NAME.$FILE_EXTENSION
cp $LAUNCHER_PATH/$APP_NAME.desktop $BACKUP_PATH/$APP_NAME.desktop.old
sed -i "s|X-AppImage-Version=.*|X-AppImage-Version=$($INSTALL_PATH/$APP_NAME.$FILE_EXTENSION --version | awk '{print $2}')|" $LAUNCHER_PATH/$APP_NAME.desktop sed -i "s|X-AppImage-Version=.*|X-AppImage-Version=$($INSTALL_PATH/$APP_NAME.$FILE_EXTENSION --version | awk '{print $2}')|" $LAUNCHER_PATH/$APP_NAME.desktop
echo -e " ${GRN}$APP_NAME_LONG is up-to-date!${CRS}\n" echo -e "\n ${GRN}$APP_NAME_LONG is up-to-date !${CRS}\n"
break break
elif [[ "$CONFIRM" == "n" || "$CONFIRM" == "N" ]] ; then elif [[ "$CONFIRM" == "n" || "$CONFIRM" == "N" ]] ; then
echo -e "\n ${RED}Cancelled!${CRS}\n" echo -e " ${RED}Cancelled!${CRS}"
exit exit
else else
echo -e "\n ${YEL}Invalid response!${CRS}\n" echo -e " ${YEL}Invalid response!${CRS}\n"
fi fi
done done
else else
echo -e "\n ${RED}Version tags malformed or you are using a Beta version!${CRS}\n" echo -e "\n ${RED}Version tags malformed or you are using a Beta version!${CRS}\n"
app_version_info echo -e " ${CYN}Local Version :\t${CRS}${LOCAL_VERSION}"
echo -e " ${CYN}$APP_SOURCE Version :\t${CRS}${APP_SOURCE_VERSION}\n"
echo -e " ${RED}Update failed... Exiting...${CRS}\n" echo -e " ${RED}Update failed... Exiting...${CRS}\n"
exit exit
fi
}
### BACKUP
call_backup() {
if [ -f $BACKUP_PATH\/$APP_NAME\.$BACKUP_METHOD\.backup_* ] ; then
echo -e "\n ${CYN}A $BACKUP_METHOD backup already exists!${CRS}\n"
while true ; do
read -p " Overwrite backup? (y/N) : " OVERWRITE_BACKUP
if [[ "$OVERWRITE_BACKUP" == "" || "$OVERWRITE_BACKUP" == "n" || "$OVERWRITE_BACKUP" == "N" ]] ; then
echo -e "\n ${YEL}Skipping backup process...${CRS}\n"
break
elif [[ "$OVERWRITE_BACKUP" == "y" || "$OVERWRITE_BACKUP" == "Y" ]] ; then
echo -e "\n ${YEL}Overwriting backup...${CRS}"
rm $BACKUP_PATH/$APP_NAME.$BACKUP_METHOD.backup_*
${BACKUP_METHOD}_backup
break
else
echo -e "\n ${YEL}Invalid response!${CRS}\n"
fi
done
else
${BACKUP_METHOD}_backup
fi
}
backup_file_collector() {
for BACKUP_ITEM in ${BACKUPABLE[@]} ; do
if [ -d "$BACKUP_ITEM" ] ; then
mkdir -p $TMP/backup
cp -r $BACKUP_ITEM $TMP/backup
elif [ -f "$BACKUP_ITEM" ] ; then
mkdir -p $TMP/backup
cp $BACKUP_ITEM $TMP/backup
fi
done
}
script_backup() {
if [ -d "$SCRIPT_PATH" ] ; then
BACKUPABLE=("$SCRIPT_PATH/$SCRIPT_FILE_NAME" "$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME")
echo -e "\n - ${CRS}Collecting files for ${CYN}$BACKUP_METHOD${CRS} backup...${CRS}"
backup_file_collector
pack_backup
else
echo -e " ${YEL}Nothing to back up...${CRS}"
fi
}
app_backup() {
if [ -f "$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" ] ; then
BACKUPABLE=("$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION")
echo -e "\n - ${CRS}Collecting files for ${CYN}$BACKUP_METHOD${CRS} backup...${CRS}"
backup_file_collector
pack_backup
else
echo -e " ${YEL}Nothing to back up...${CRS}"
fi
}
config_backup() {
if [[ -d "$LAUNCHER_PATH" || -d $APP_CONFIG_PATH ]] ; then
BACKUPABLE=("$LAUNCHER_PATH/$APP_NAME.desktop" "$APP_CONFIG_PATH")
echo -e "\n - ${CRS}Collecting files for ${CYN}$BACKUP_METHOD${CRS} backup...${CRS}"
backup_file_collector
pack_backup
else
echo -e " ${YEL}Nothing to back up...${CRS}"
fi
}
full_backup() {
if [[ -d "$INSTALL_PATH" || -d "$SCRIPT_PATH" || -d $APP_CONFIG_PATH ]] ; then
BACKUPABLE=("$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" "$SCRIPT_PATH/$SCRIPT_FILE_NAME" "$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME" "$LAUNCHER_PATH/$APP_NAME.desktop" "$APP_CONFIG_PATH")
echo -e "\n - ${CRS}Collecting files for ${CYN}$BACKUP_METHOD${CRS} backup...${CRS}"
backup_file_collector
pack_backup
else
echo -e " ${YEL}Nothing to back up...${CRS}"
fi
}
pack_backup() {
if [ -d "$TMP/backup" ] ; then
CWD=$(pwd)
cd $TMP/backup
if [[ -f "*.sh" ]] ; then fi
chmod -x *.sh
elif [[ -f "*.$FILE_EXTENSION" ]] ; then }
chmod -x *.$FILE_EXTENSION
fi
if [ "$BACKUP_COMPRESSION_OVERRIDE" ] ; then ### AUTOMATIC UPDATE --> TO DO?
BACKUP_COMPRESSION=$BACKUP_COMPRESSION_OVERRIDE auto_update() {
if ! [ -f "$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" ] ; then
else echo -e "\n ${RED}$APP_NAME AppImage not found! Can't add auto update script...${CRS}"
COMPRESSION_METHOD=("pbzip2" "gzip" "bzip2" "zip") exit
until [ "$BACKUP_COMPRESSION" ] ; do
for COMPRESSION_TYPE in ${COMPRESSION_METHOD[@]} ; do
if [ "$(command -v $COMPRESSION_TYPE) > /dev/null 2>&1" ] ; then
BACKUP_COMPRESSION=$COMPRESSION_TYPE
break
fi
done
done
fi
echo -e "\n - ${CRS}Packing backup archive with ${CYN}$BACKUP_COMPRESSION${CRS}...${CRS}\n"
if [ "$BACKUP_COMPRESSION" == "pbzip2" ] ; then
tar -cf $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar * > /dev/null 2>&1
pbzip2 $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar
mkdir -p $BACKUP_PATH
mv $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar.bz2 $BACKUP_PATH
cd $TMP && rm -rf backup
elif [ "$BACKUP_COMPRESSION" == "gzip" ] ; then
tar -cf $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar * > /dev/null 2>&1
gzip $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar
mkdir -p $BACKUP_PATH
mv $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar.gz $BACKUP_PATH
cd $TMP && rm -rf backup
elif [ "$BACKUP_COMPRESSION" == "bzip2" ] ; then else
tar -cf $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar * > /dev/null 2>&1 echo -e "\n ${RED}Not implemented yet...${CRS}"
bzip2 $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar
mkdir -p $BACKUP_PATH
mv $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar.bz2 $BACKUP_PATH
cd $TMP && rm -rf backup
elif [ "$BACKUP_COMPRESSION" == "zip" ] ; then
tar -cf $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar * > /dev/null 2>&1
zip -r $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar.zip $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar > /dev/null 2>&1
mkdir -p $BACKUP_PATH
mv $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar.zip $BACKUP_PATH
cd $TMP && rm -rf backup
else
echo -e " ${YEL}No supported compression method detected! Copying backup uncompressed...${CRS}\n"
mkdir -p $BACKUP_PATH
mv $TMP/backup $BACKUP_PATH/$APP_NAME.$BACKUP_METHOD.backup_$DATE
cd $TMP && rm -rf backup
fi
echo -e " - ${CRS}Backup stored in ${CYN}$BACKUP_PATH${CRS}...${CRS}\n"
cd $CWD
fi fi
} }
### REMOVE ### REMOVE
remove_application() { remove_helium() {
if [ -d "$INSTALL_PATH" ] ; then if [ -d "$INSTALL_PATH" ] ; then
while true ; do while true ; do
read -p " Remove $APP_NAME_LONG incl. backups, configuration and launcher? (Y/n) : " CONFIRM_REMOVE read -p " Remove $APP_NAME_LONG incl. backups and launcher? (Y/n) : " CONFIRM_REMOVE
if [[ "$CONFIRM_REMOVE" == "" || "$CONFIRM_REMOVE" == "y" || "$CONFIRM_REMOVE" == "Y" ]] ; then if [[ "$CONFIRM_REMOVE" == "" || "$CONFIRM_REMOVE" == "y" || "$CONFIRM_REMOVE" == "Y" ]] ; then
REMOVABLE=("$INSTALL_PATH" "$LAUNCHER_PATH/$APP_NAME.desktop" "$APP_CONFIG_PATH" "$SCRIPT_PATH/$SCRIPT_FILE_NAME" "$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME") rm -rf $INSTALL_PATH
echo -e "\n - ${CRS}Removing ${CYN}$APP_NAME_LONG${CRS} files, directories and configuration...${CRS}" if [ -f "$LAUNCHER_PATH/$APP_NAME.desktop" ] ; then
rm $LAUNCHER_PATH/$APP_NAME.desktop
for RM_PATH in "${REMOVABLE[@]}" ; do
if [[ -f "$RM_PATH" || -d "$RM_PATH" ]] ; then
rm -rf "$RM_PATH"
fi
done
shell_check
if [ "$ACTIVE_SHELL" == "zsh" ] ; then
if [ "$(cat $HOME/.zshrc | grep "$ALIAS")" ] ; then
sed -i "/$APP_NAME_LONG/d" $HOME/.zshrc
sed -i "/$ALIAS/d" $HOME/.zshrc
echo -e "\n - Alias removed from ${CYN}$ACTIVE_SHELL${CRS}"
fi
elif [ "$ACTIVE_SHELL" == "bash" ] ; then
if [ "$(cat $HOME/.bashrc | grep "$ALIAS")" ] ; then
sed -i "/$APP_NAME_LONG/d" $HOME/.bashrc
sed -i "/$ALIAS/d" $HOME/.bashrc
echo -e "\n - Alias removed from ${CYN}$ACTIVE_SHELL${CRS}"
fi
elif [ "$ACTIVE_SHELL" == "fish" ] ; then
if [ "$(cat $HOME/.config/fish/config.fish | grep "source $HOME/.config/fish/$ALIAS.fish")" ] ; then
sed -i "/$ALIAS/d" $HOME/.config/fish/config.fish
rm $HOME/.config/fish/$ALIAS.fish
echo -e "\n - Alias removed from ${CYN}$ACTIVE_SHELL${CRS}"
fi
fi fi
echo -e "\n ${YEL}$APP_NAME_LONG removed!${CRS}\n" if [ -f "$SCRIPT_PATH/$SCRIPT_FILE_NAME" ] ; then
break rm $SCRIPT_PATH/$SCRIPT_FILE_NAME
fi
if [ -f "$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME" ] ; then
rm $SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME
fi
if [ -f "$HOME/.zshrc" ] ; then
sed -i "/$ALIAS/d" $HOME/.zshrc
elif [ -f "$HOME/.bashrc" ] ; then
sed -i "/$ALIAS/d" $HOME/.bashrc
fi
echo -e "\n ${RED}$APP_NAME_LONG removed!${CRS}"
exit
elif [[ "$CONFIRM_REMOVE" == "n" || "$CONFIRM_REMOVE" == "N" ]] ; then elif [[ "$CONFIRM_REMOVE" == "n" || "$CONFIRM_REMOVE" == "N" ]] ; then
echo -e " ${RED}Cancelled!${CRS}" echo -e " ${RED}Cancelled!${CRS}"
@ -528,28 +325,28 @@ remove_application() {
else else
echo -e " ${YEL}Invalid response!${CRS}\n" echo -e " ${YEL}Invalid response!${CRS}\n"
fi fi
done done
else else
echo -e " ${RED}Can't remove $APP_NAME_LONG! ${CYN}$INSTALL_PATH ${RED}directory not found...${CRS}\n" echo -e "\n ${RED}Can't remove $APP_NAME_LONG! ${YEL}$INSTALL_PATH ${RED}directory not found...${CRS}"
exit exit
fi fi
} }
### SCRIPT VERSION ### SCRIPT VERSION
script_version() { script_version() {
echo -e "\n ${CYN}$APP_NAME_LONG Helper Script Version : ${CRS}$SCRIPT_VERSION\n" echo -e "\n ${CYN}$APP_NAME_LONG Helper Script Version :${CRS} $SCRIPT_VERSION\n"
exit
} }
### UPDATE SCRIPT ### UPDATE SCRIPT
scrip_version_info() {
echo -e " - ${CYN}Local Version :\t${CRS}$SCRIPT_VERSION"
echo -e " - ${CYN}Remote Version :\t${CRS}$REMOTE_SCRIPT_VERSION"
echo -e " - ${CYN}Update Branch :\t${CRS}$REMOTE_REPO_BRANCH\n"
}
update_script() { update_script() {
### CHECK FOR LOCAL SCRIPT
if ! [ -f "$SCRIPT_PATH/$SCRIPT_FILE_NAME" ] ; then if ! [ -f "$SCRIPT_PATH/$SCRIPT_FILE_NAME" ] ; then
echo -e "\n ${YEL}$SCRIPT_FILE_NAME not found...${CRS}" echo -e "\n ${YEL}$SCRIPT_FILE_NAME not found...${CRS}"
@ -558,23 +355,27 @@ update_script() {
read -p " Copy script to $SCRIPT_PATH? (Y/n) : " CONFIRM_SCRIPT_INSTALL read -p " Copy script to $SCRIPT_PATH? (Y/n) : " CONFIRM_SCRIPT_INSTALL
if [[ "$CONFIRM_SCRIPT_INSTALL" == "" || "$CONFIRM_SCRIPT_INSTALL" == "y" || "$CONFIRM_SCRIPT_INSTALL" == "Y" ]] ; then if [[ "$CONFIRM_SCRIPT_INSTALL" == "" || "$CONFIRM_SCRIPT_INSTALL" == "y" || "$CONFIRM_SCRIPT_INSTALL" == "Y" ]] ; then
mkdir -p $SCRIPT_PATH if ! [ -d "$SCRIPT_PATH" ] ; then
mkdir -p $SCRIPT_PATH
fi
mkdir -p $TMP mkdir -p $TMP
wget -P $TMP $REMOTE_SCRIPT_URL -q wget -P $TMP $REMOTE_SCRIPT_URL -q
wget -P $TMP $REMOTE_REPO_URL/$AUTO_SCRIPT_FILE_NAME -q chmod +x $TMP/$SCRIPT_FILE_NAME
chmod +x $TMP/$SCRIPT_FILE_NAME $TMP/$AUTO_SCRIPT_FILE_NAME mv $TMP/$SCRIPT_FILE_NAME $SCRIPT_PATH
mv $TMP/$SCRIPT_FILE_NAME $TMP/$AUTO_SCRIPT_FILE_NAME $SCRIPT_PATH
echo -e "\n ${GRN}$SCRIPT_FILE_NAME is up-to-date!${CRS}" echo -e "\n ${GRN}$SCRIPT_FILE_NAME is up-to-date!${CRS}"
break exit_clean
elif [[ "$CONFIRM_SCRIPT_INSTALL" == "n" || "$CONFIRM_SCRIPT_INSTALL" == "N" ]] ; then elif [[ "$CONFIRM_SCRIPT_INSTALL" == "n" || "$CONFIRM_SCRIPT_INSTALL" == "N" ]] ; then
echo -e " ${RED}Cancelled!${CRS}\n" echo -e " ${RED}Cancelled!${CRS}"
exit exit
else else
echo -e " ${YEL}Invalid response!${CRS}\n" echo -e " ${YEL}Invalid response!${CRS}\n"
fi fi
done done
fi fi
REMOTE_SCRIPT_VERSION=$(curl -s $REMOTE_SCRIPT_URL | grep -m 1 "SCRIPT_VERSION" | tr -d 'SCRIPT_VERSION="') REMOTE_SCRIPT_VERSION=$(curl -s $REMOTE_SCRIPT_URL | grep -m 1 "SCRIPT_VERSION" | tr -d 'SCRIPT_VERSION="')
@ -587,6 +388,7 @@ update_script() {
elif [ -z "$REMOTE_SCRIPT_VERSION" ] ; then elif [ -z "$REMOTE_SCRIPT_VERSION" ] ; then
echo -e "\n ${RED}Empty version tag from ${CYN}remote script${RED}! Can't compare, exiting...${CRS}" echo -e "\n ${RED}Empty version tag from ${CYN}remote script${RED}! Can't compare, exiting...${CRS}"
exit exit
fi fi
### COMPARE LOCAL & REMOTE VERSION ### COMPARE LOCAL & REMOTE VERSION
@ -597,8 +399,9 @@ update_script() {
echo -e "\n ${GRN}$SCRIPT_FILE_NAME is already up-to-date!${CRS}\n" echo -e "\n ${GRN}$SCRIPT_FILE_NAME is already up-to-date!${CRS}\n"
elif [ "$REMOTE_SCRIPT_VERSION_NUM" -gt "$SCRIPT_VERSION_NUM" ] ; then elif [ "$REMOTE_SCRIPT_VERSION_NUM" -gt "$SCRIPT_VERSION_NUM" ] ; then
echo -e "\n ${LCY}$SCRIPT_FILE_NAME is updatable!${CRS}\n" echo -e "\n ${YEL}$SCRIPT_FILE_NAME is updatable!${CRS}\n"
scrip_version_info echo -e " ${CYN}Local Version :\t${CRS}${SCRIPT_VERSION}"
echo -e " ${CYN}Remote Version :\t${CRS}${REMOTE_SCRIPT_VERSION}\n"
while true ; do while true ; do
read -p " Update $SCRIPT_FILE_NAME? (Y/n) : " CONFIRM_SCRIPT_UPDATE read -p " Update $SCRIPT_FILE_NAME? (Y/n) : " CONFIRM_SCRIPT_UPDATE
@ -609,63 +412,72 @@ update_script() {
mkdir -p $BACKUP_PATH mkdir -p $BACKUP_PATH
fi fi
mv $SCRIPT_PATH/$SCRIPT_FILE_NAME $BACKUP_PATH/$SCRIPT_FILE_NAME.old mv $SCRIPT_PATH/$SCRIPT_FILE_NAME $BACKUP_PATH/$SCRIPT_FILE_NAME.old
mv $SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME $BACKUP_PATH/$AUTO_SCRIPT_FILE_NAME.old mkdir -p $TMP
wget -P $TMP $REMOTE_SCRIPT_URL -q wget -P $TMP $REMOTE_SCRIPT_URL -q
wget -P $TMP $REMOTE_REPO_URL/$AUTO_SCRIPT_FILE_NAME -q chmod +x $TMP/$SCRIPT_FILE_NAME
chmod +x $TMP/$SCRIPT_FILE_NAME $TMP/$AUTO_SCRIPT_FILE_NAME mv $TMP/$SCRIPT_FILE_NAME $SCRIPT_PATH
mv $TMP/$SCRIPT_FILE_NAME $TMP/$AUTO_SCRIPT_FILE_NAME $SCRIPT_PATH
echo -e " ${GRN}$SCRIPT_FILE_NAME is up-to-date!${CRS}" echo -e " ${GRN}$SCRIPT_FILE_NAME is up-to-date!${CRS}"
break break
elif [[ "$CONFIRM_SCRIPT_UPDATE" == "n" || "$CONFIRM_SCRIPT_UPDATE" == "N" ]] ; then elif [[ "$CONFIRM_SCRIPT_UPDATE" == "n" || "$CONFIRM_SCRIPT_UPDATE" == "N" ]] ; then
echo -e " ${RED}Cancelled!${CRS}\n" echo -e " ${RED}Cancelled!${CRS}"
break break
else else
echo -e " ${YEL}Invalid response!${CRS}\n" echo -e " ${YEL}Invalid response!${CRS}\n"
fi fi
done done
else else
echo -e "\n ${RED}Version tags malformed or you are using a Beta version!${CRS}\n" echo -e "\n ${RED}Version tags malformed or you are using a Beta version!${CRS}\n"
scrip_version_info echo -e " ${CYN}Local Version :\t${CRS}${SCRIPT_VERSION}"
echo -e " ${CYN}Remote Version :\t${CRS}${REMOTE_SCRIPT_VERSION}\n"
echo -e " ${RED}Updating script failed...${CRS}\n" echo -e " ${RED}Updating script failed...${CRS}\n"
fi fi
} }
### COMPARE APP VERSION ### COMPARE APPIMAGE VERSION
app_version_info() {
echo -e " - ${CYN}Local Version :\t${CRS}$LOCAL_VERSION"
echo -e " - ${CYN}$APP_SOURCE Version :\t${CRS}$APP_SOURCE_VERSION\n"
}
compare_version() { compare_version() {
LOCAL_VERSION=$($INSTALL_PATH/$APP_NAME.$FILE_EXTENSION --version | awk '{print $2}') LOCAL_VERSION=$($INSTALL_PATH/$APP_NAME.$FILE_EXTENSION --version | awk '{print $2}')
APP_SOURCE_VERSION=$(curl -s $APP_SOURCE_URL | grep "tag_name" | tr -d \", | awk '{print $2}') APP_SOURCE_VERSION=$(curl -s $APP_SOURCE_URL | grep "tag_name" | tr -d \", | awk '{print $2}')
### CHECK FOR EMPTY VERSION TAGS
if [ -z "$APP_SOURCE_VERSION" ] ; then if [ -z "$APP_SOURCE_VERSION" ] ; then
echo -e "\n ${RED}Empty version tag from ${CYN}$APP_SOURCE${RED}! Can't compare, exiting...${CRS}\n" echo -e "\n ${RED}Empty version tag from ${CYN}$APP_SOURCE${RED}! Can't compare, exiting...${CRS}"
exit exit
elif [ -z "$LOCAL_VERSION" ] ; then elif [ -z "$LOCAL_VERSION" ] ; then
echo -e "\n ${RED}Empty version tag from ${CYN}local AppImage${RED}! Can't compare, exiting...${CRS}\n" echo -e "\n ${RED}Empty version tag from ${CYN}local AppImage${RED}! Can't compare, exiting...${CRS}"
exit exit
fi fi
### COMPARE LOCAL & REMOTE VERSION
LOCAL_VERSION_NUM=$(echo $LOCAL_VERSION | tr -d .) LOCAL_VERSION_NUM=$(echo $LOCAL_VERSION | tr -d .)
APP_SOURCE_VERSION_NUM=$(echo $APP_SOURCE_VERSION | tr -d .) APP_SOURCE_VERSION_NUM=$(echo $APP_SOURCE_VERSION | tr -d .)
if [ "$APP_SOURCE_VERSION" == "$LOCAL_VERSION" ] ; then if [ "$APP_SOURCE_VERSION" == "$LOCAL_VERSION" ] ; then
echo -e "\n ${GRN}$APP_NAME_LONG is up-to-date!${CRS}\n" echo -e "\n ${GRN}$APP_NAME_LONG is up-to-date!${CRS}\n"
app_version_info echo -e " ${CYN}Local Version :\t${CRS}${LOCAL_VERSION}"
echo -e " ${CYN}$APP_SOURCE Version :\t${CRS}${APP_SOURCE_VERSION}\n"
exit
elif [ "$APP_SOURCE_VERSION_NUM" -gt "$LOCAL_VERSION_NUM" ] ; then elif [ "$APP_SOURCE_VERSION_NUM" -gt "$LOCAL_VERSION_NUM" ] ; then
echo -e "\n ${LCY}$APP_NAME_LONG is updatable!${CRS}\n" echo -e "\n ${YEL}$APP_NAME_LONG is updatable!${CRS}\n"
app_version_info echo -e " ${CYN}Local Version :\t${CRS}${LOCAL_VERSION}"
echo -e " ${CYN}$APP_SOURCE Version :\t${CRS}${APP_SOURCE_VERSION}\n"
exit
else else
echo -e "\n ${RED}Version tags malformed or you are using a Beta version!${CRS}\n" echo -e "\n ${RED}Version tags malformed or you are using a Beta version!${CRS}\n"
app_version_info echo -e " ${CYN}Local Version :\t${CRS}${LOCAL_VERSION}"
echo -e " ${CYN}$APP_SOURCE Version :\t${CRS}${APP_SOURCE_VERSION}\n"
echo -e " ${RED}Update failed ... Exiting ...${CRS}\n"
exit
fi fi
} }
@ -673,19 +485,19 @@ compare_version() {
help() { help() {
echo -e "\n${LCY}${SCRIPT_NAME}${CRS}\n" echo -e "\n${LCY}${SCRIPT_NAME}${CRS}\n"
echo -e "$APP_NAME_LONG installer & updater script\n" echo -e "$APP_NAME_LONG installer & updater script\n"
echo -e "Syntax: $SCRIPT_FILE_NAME [ -i | -l | -a | -u | -b | -r | -c | -s | -S | -h ]\n" echo -e "Syntax: $SCRIPT_FILE_NAME [ -i | -l | -a | -u | -r | -c | -s | -S | -h ]\n" # | -U |
echo -e "Options:\n" echo -e "Options:\n"
echo -e "\t-i\tInstall $APP_NAME_LONG from $APP_SOURCE" echo -e "\t-i\tDownload & install $APP_NAME_LONG from $APP_SOURCE"
echo -e "\t-l\tCreate desktop launcher" echo -e "\t-l\tCreate desktop launcher"
echo -e "\t-a\tCreate alias for $SCRIPT_FILE_NAME" echo -e "\t-a\tCreate alias for $SCRIPT_FILE_NAME ${YEL}--> Working with zsh & bash${CRS}"
echo -e "\t-u\tUpdate $APP_NAME_LONG from $APP_SOURCE" echo -e "\t-u\tDownload & update $APP_NAME_LONG from $APP_SOURCE"
echo -e "\t-b\tBackup $APP_NAME_LONG & configuration" #echo -e "\t-U\tEnable automatic updates on login ${RED}--> Not yet working${CRS}"
echo -e "\t-r\tRemove $APP_NAME_LONG" echo -e "\t-r\tRemove $APP_NAME_LONG"
echo -e "\t-c\tCompare local to remote version" echo -e "\t-c\tCompare local to remote version"
echo -e "\t-s\tShow script version" echo -e "\t-s\tShow script version"
echo -e "\t-S\tUpdate $SCRIPT_FILE_NAME" echo -e "\t-S\tUpdate $SCRIPT_FILE_NAME"
echo -e "\t-h\tPrint this help page\n" echo -e "\t-h\tPrint this help page.\n"
echo -e "Configured directories:\n" echo -e "Configured locations:\n"
echo -e "\t${CYN}${INSTALL_PATH}${CRS}\t\tInstall location" echo -e "\t${CYN}${INSTALL_PATH}${CRS}\t\tInstall location"
echo -e "\t${CYN}${LAUNCHER_PATH}${CRS}\tLauncher location" echo -e "\t${CYN}${LAUNCHER_PATH}${CRS}\tLauncher location"
echo -e "\t${CYN}${SCRIPT_PATH}${CRS}\t\t\tScript location\n" echo -e "\t${CYN}${SCRIPT_PATH}${CRS}\t\t\tScript location\n"
@ -695,6 +507,7 @@ help() {
exit_clean() { exit_clean() {
if [ -d "$TMP" ] ; then if [ -d "$TMP" ] ; then
rm -rf $TMP rm -rf $TMP
fi fi
exit exit
@ -703,88 +516,47 @@ exit_clean() {
########## MAIN ########## ########## MAIN ##########
## GET OPTIONS ## GET OPTIONS
while getopts ":i,:l,:a,:u,:b,:r,:c,:s,:S,:h" OPTION ; do while getopts ":i,:l,:a,:u,:U,:r,:c,:s,:S,:h" OPTION ; do
if [ "$(echo $1 | wc -m)" -gt "3" ] ; then
echo -e "\n${YEL}Option ${RED}$1${YEL} not valid! Use only one parameter at a time...${CRS}"
help
exit
fi
case $OPTION in case $OPTION in
i) i)
echo -e "\n ${YEL}Installing $APP_NAME_LONG...${CRS}\n" echo -e "\n ${CYN}Installing $APP_NAME_LONG...${CRS}"
if [ "$#" -gt "1" ] ; then
ALL_PARAMETER=$@
for PARAMETER in ${ALL_PARAMETER[@]} ; do
if [ -d "$PARAMETER" ] ; then
INSTALL_PATH=$PARAMETER
fi
done
fi
dependency_check dependency_check
arch_check install_helium
install_application
exit_clean ;; exit_clean ;;
l) l)
echo -e "\n ${YEL}Adding $APP_NAME_LONG launcher...${CRS}" echo -e "\n ${CYN}Adding $APP_NAME_LONG launcher...${CRS}"
dependency_check dependency_check
local_check local_check
add_launcher add_launcher
exit_clean ;; exit_clean ;;
a) a)
echo -e "\n ${YEL}Adding alias...${CRS}" echo -e "\n ${CYN}Adding alias...${CRS}"
if [ "$#" -gt "1" ] ; then
ALL_PARAMETER=$@
for PARAMETER in ${ALL_PARAMETER[@]} ; do
if [ "$PARAMETER" ] ; then
ALIAS=$PARAMETER
fi
done
fi
shell_check
add_alias add_alias
exit ;; exit ;;
u) u)
echo -e "\n ${YEL}Updating $APP_NAME_LONG...${CRS}" echo -e "\n ${CYN}Updating $APP_NAME_LONG...${CRS}"
dependency_check dependency_check
arch_check
local_check local_check
update_application update_helium
exit_clean ;; exit_clean ;;
b) U)
echo -e "\n ${YEL}Backing up $APP_NAME_LONG...${CRS}" echo -e "\n ${CYN}Enabling automatic updates...${CRS}"
if [ "$#" -gt "1" ] ; then dependency_check
ALL_PARAMETER=$@ local_check
auto_update
for PARAMETER in ${ALL_PARAMETER[@]} ; do exit_clean ;;
if [[ "$PARAMETER" == "script" || "$PARAMETER" == "config" || "$PARAMETER" == "app" || "$PARAMETER" == "full" ]] ; then
BACKUP_METHOD=$PARAMETER
elif [[ "$PARAMETER" == "pbzip2" || "$PARAMETER" == "gzip" || "$PARAMETER" == "bzip2" || "$PARAMETER" == "zip" ]] ; then
BACKUP_COMPRESSION_OVERRIDE=$PARAMETER
elif [ -d "$PARAMETER" ] ; then
BACKUP_PATH=$PARAMETER
fi
done
fi
call_backup
exit ;;
r) r)
echo -e "\n ${YEL}Removing $APP_NAME_LONG...${CRS}\n" echo -e "\n ${CYN}Removing $APP_NAME_LONG...${CRS}"
remove_application remove_helium
exit ;; exit ;;
c) c)
echo -e "\n ${YEL}Comparing remote to local version...${CRS}" echo -e "\n ${CYN}Comparing remote to local version...${CRS}"
dependency_check dependency_check
local_check local_check
compare_version compare_version
@ -795,7 +567,7 @@ while getopts ":i,:l,:a,:u,:b,:r,:c,:s,:S,:h" OPTION ; do
exit ;; exit ;;
S) S)
echo -e "\n ${YEL}Updating script...${CRS}" echo -e "\n ${CYN}Updating script...${CRS}"
dependency_check dependency_check
update_script update_script
exit_clean ;; exit_clean ;;
@ -808,18 +580,19 @@ while getopts ":i,:l,:a,:u,:b,:r,:c,:s,:S,:h" OPTION ; do
echo -e "\n${YEL}Option ${RED}$1${YEL} not recognized... Refer to help below!${CRS}" echo -e "\n${YEL}Option ${RED}$1${YEL} not recognized... Refer to help below!${CRS}"
help help
exit ;; exit ;;
esac esac
done done
## ENVIRONMENT CHECK ## DEPENDENCY CHECK
dependency_check dependency_check
arch_check
## CHECK LOCAL INSTALL ## CHECK FOR LOCAL INSTALL
local_check local_check
## UPDATE ## UPDATE
update_application update_helium
## CLEAN ## CLEAN
exit_clean exit_clean

View file

@ -9,18 +9,14 @@ APP_NAME_LONG="Helium Web Browser"
ARCH="x86_64" ARCH="x86_64"
FILE_EXTENSION="AppImage" FILE_EXTENSION="AppImage"
APP_SOURCE="GitHub" APP_SOURCE="GitHub"
NOTIFY_NAME="Helium Helper"
SCRIPT_NAME="$APP_NAME Launcher Updater" SCRIPT_NAME="$APP_NAME Launcher Updater"
PARENT_SCRIPT_FILE_NAME="helium_helper.sh"
SCRIPT_FILE_NAME="helium_launcher_update.sh" SCRIPT_FILE_NAME="helium_launcher_update.sh"
SCRIPT_VERSION="0.5.9.1" SCRIPT_VERSION="0.5.7"
LOG_DATE=$(date) DATE=$(date)
DATE=$(date +"%d%m%y")
## LOCATIONS ## LOCATIONS
TMP=/tmp/$APP_NAME TMP=/tmp/$APP_NAME
INSTALL_PATH=$HOME/.apps/$APP_NAME INSTALL_PATH=$HOME/.apps/$APP_NAME
APP_CONFIG_PATH=$HOME/.config/net.imput.helium
ASSET_PATH=$INSTALL_PATH/assets ASSET_PATH=$INSTALL_PATH/assets
BACKUP_PATH=$ASSET_PATH/backup BACKUP_PATH=$ASSET_PATH/backup
LOG_PATH=$ASSET_PATH/logs LOG_PATH=$ASSET_PATH/logs
@ -60,122 +56,39 @@ dependency_check () {
mkdir -p $LOG_PATH mkdir -p $LOG_PATH
echo "########## $APP_NAME_LONG update log ##########" >> $LOG echo "########## $APP_NAME_LONG update log ##########" >> $LOG
echo >> $LOG echo >> $LOG
echo "$LOG_DATE | Log created" >> $LOG echo "${DATE} | Log created" >> $LOG
fi fi
if [ -f "$TMP/missingDeps" ] ; then if [ -f "$TMP/missingDeps" ] ; then
MISSING=$(cat $TMP/missingDeps) MISSING=$(cat $TMP/missingDeps)
echo "$LOG_DATE | Failed to update - missing dependencies : $MISSING" >> $LOG echo "${DATE} | Failed to update - missing dependencies : $MISSING" >> $LOG
notify-send --icon="$ICON" "$NOTIFY_NAME" "Update failed! See log for details" notify-send -i "$ICON" "Helium Helper" "Update failed! See log for details"
exit_clean exit_clean
fi fi
if ! [ -d "$INSTALL_PATH" ] ; then if ! [ -d "$INSTALL_PATH" ] ; then
mkdir -p $INSTALL_PATH mkdir -p $INSTALL_PATH
echo "$LOG_DATE | Failed to update - $APP_NAME installation path not present - But created for logging" >> $LOG echo "${DATE} | Failed to update - $APP_NAME installation path not present - But created for logging" >> $LOG
notify-send --icon="$ICON" "$NOTIFY_NAME" "Update failed! See log for details" notify-send -i "$ICON" "Helium Helper" "Update failed! See log for details"
exit exit
elif ! [ -f "$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" ] ; then elif ! [ -f "$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" ] ; then
echo "$LOG_DATE | Failed to update - Local $APP_NAME AppImage not found" >> $LOG echo "${DATE} | Failed to update - Local $APP_NAME AppImage not found" >> $LOG
notify-send --icon="$ICON" "$NOTIFY_NAME" "Update failed! See log for details" notify-send -i "$ICON" "Helium Helper" "Update failed! See log for details"
exit exit
fi fi
} }
### BACKUP
backup_helium() {
if [[ -d "$INSTALL_PATH" || -d "$SCRIPT_PATH" || -d $APP_CONFIG_PATH ]] ; then
BACKUPABLE=("$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" "$SCRIPT_PATH/$SCRIPT_FILE_NAME" "$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME" "$LAUNCHER_PATH/$APP_NAME.desktop" "$APP_CONFIG_PATH")
for BACKUP_ITEM in ${BACKUPABLE[@]} ; do
if [ -d "$BACKUP_ITEM" ] ; then
mkdir -p $TMP/backup
cp -r $BACKUP_ITEM $TMP/backup
elif [ -f "$BACKUP_ITEM" ] ; then
mkdir -p $TMP/backup
cp $BACKUP_ITEM $TMP/backup
fi
done
if [ -d "$TMP/backup" ] ; then
CWD=$(pwd)
cd $TMP/backup
chmod -x *.sh *.$FILE_EXTENSION > /dev/null 2>&1
if [ "$BACKUP_COMPRESSION_OVERRIDE" ] ; then
BACKUP_COMPRESSION=$BACKUP_COMPRESSION_OVERRIDE
elif ! [ "$BACKUP_COMPRESSION_OVERRIDE" ] ; then
COMPRESSION_METHOD=("pbzip2" "gzip" "bzip2" "zip")
until [ "$BACKUP_COMPRESSION" ] ; do
for COMPRESSION_TYPE in ${COMPRESSION_METHOD[@]} ; do
if [ "$(command -v $COMPRESSION_TYPE) > /dev/null 2>&1" ] ; then
BACKUP_COMPRESSION=$COMPRESSION_TYPE
break
fi
done
done
fi
if [ "$BACKUP_COMPRESSION" == "pbzip2" ] ; then
tar -cf $APP_NAME.auto_backup_$DATE.tar * > /dev/null 2>&1
pbzip2 $APP_NAME.auto_backup_$DATE.tar
mkdir -p $BACKUP_PATH
mv $APP_NAME.auto_backup_$DATE.tar.bz2 $BACKUP_PATH
cd $TMP && rm -rf backup
elif [ "$BACKUP_COMPRESSION" == "gzip" ] ; then
tar -cf $APP_NAME.auto_backup_$DATE.tar * > /dev/null 2>&1
gzip $APP_NAME.auto_backup_$DATE.tar
mkdir -p $BACKUP_PATH
mv $APP_NAME.auto_backup_$DATE.tar.gz $BACKUP_PATH
cd $TMP && rm -rf backup
elif [ "$BACKUP_COMPRESSION" == "bzip2" ] ; then
tar -cf $APP_NAME.auto_backup_$DATE.tar * > /dev/null 2>&1
bzip2 $APP_NAME.auto_backup_$DATE.tar
mkdir -p $BACKUP_PATH
mv $APP_NAME.auto_backup_$DATE.tar.bz2 $BACKUP_PATH
cd $TMP && rm -rf backup
elif [ "$BACKUP_COMPRESSION" == "zip" ] ; then
tar -cf $APP_NAME.auto_backup_$DATE.tar * > /dev/null 2>&1
zip -r $APP_NAME.auto_backup_$DATE.tar.zip $APP_NAME.auto_backup_$DATE.tar > /dev/null 2>&1
mkdir -p $BACKUP_PATH
mv $APP_NAME.auto_backup_$DATE.tar.zip $BACKUP_PATH
cd $TMP && rm -rf backup
else
echo "$LOG_DATE | Backup - Backup (uncompressed) written to $BACKUP_PATH" >> $LOG
mkdir -p $BACKUP_PATH
mv $TMP/backup $BACKUP_PATH/$APP_NAME.auto_backup_$DATE
cd $TMP && rm -rf backup
fi
echo "$LOG_DATE | Backup - Backup (compressed $BACKUP_COMPRESSION archive) written to $BACKUP_PATH" >> $LOG
notify-send --icon="$ICON" "$NOTIFY_NAME" "Backup created"
cd $CWD
fi
else
echo "$LOG_DATE | Failed to backup - Nothing worth backing up found" >> $LOG
fi
}
### UPDATE SCRIPT ### UPDATE SCRIPT
update_script() { update_script() {
### CHECK FOR LOCAL SCRIPT ### CHECK FOR LOCAL SCRIPT
if ! [ -f "$SCRIPT_PATH/$SCRIPT_FILE_NAME" ] ; then if ! [ -f "$SCRIPT_PATH/$SCRIPT_FILE_NAME" ] ; then
echo "$LOG_DATE | Failed to update script - local file not found" >> $LOG echo "${DATE} | Failed to update script - local file not found" >> $LOG
notify-send --icon="$ICON" "$NOTIFY_NAME" "Script update failed! See log for details" notify-send -i "$ICON" "Helium Helper" "Script update failed! See log for details"
exit exit
fi fi
@ -184,13 +97,13 @@ update_script() {
### CHECK FOR EMPTY VERSION TAGS ### CHECK FOR EMPTY VERSION TAGS
if [ -z "$SCRIPT_VERSION" ] ; then if [ -z "$SCRIPT_VERSION" ] ; then
echo "$LOG_DATE | Failed to update script - Empty version tag --> local" >> $LOG echo "${DATE} | Failed to update script - Empty version tag --> local" >> $LOG
notify-send --icon="$ICON" "$NOTIFY_NAME" "Script update failed! See log for details" notify-send -i "$ICON" "Helium Helper" "Script update failed! See log for details"
exit exit
elif [ -z "$REMOTE_SCRIPT_VERSION" ] ; then elif [ -z "$REMOTE_SCRIPT_VERSION" ] ; then
echo "$LOG_DATE | Failed to update script - Empty version tag --> $APP_SOURCE" >> $LOG echo "${DATE} | Failed to update script - Empty version tag --> $APP_SOURCE" >> $LOG
notify-send --icon="$ICON" "$NOTIFY_NAME" "Script update failed! See log for details" notify-send -i "$ICON" "Helium Helper" "Script update failed! See log for details"
exit exit
fi fi
@ -200,23 +113,21 @@ update_script() {
REMOTE_SCRIPT_VERSION_NUM=$(echo $REMOTE_SCRIPT_VERSION | tr -d .) REMOTE_SCRIPT_VERSION_NUM=$(echo $REMOTE_SCRIPT_VERSION | tr -d .)
if [ "$REMOTE_SCRIPT_VERSION" == "$SCRIPT_VERSION" ] ; then if [ "$REMOTE_SCRIPT_VERSION" == "$SCRIPT_VERSION" ] ; then
notify-send --icon="$ICON" "$NOTIFY_NAME" "Script is up-to-date" notify-send -i "$ICON" "Helium Helper" "Script is up-to-date"
elif [ "$REMOTE_SCRIPT_VERSION_NUM" -gt "$SCRIPT_VERSION_NUM" ] ; then elif [ "$REMOTE_SCRIPT_VERSION_NUM" -gt "$SCRIPT_VERSION_NUM" ] ; then
mv $SCRIPT_PATH/$SCRIPT_FILE_NAME $BACKUP_PATH/$SCRIPT_FILE_NAME.old mv $SCRIPT_PATH/$SCRIPT_FILE_NAME $BACKUP_PATH/$SCRIPT_FILE_NAME.old
mkdir -p $TMP mkdir -p $TMP
wget -P $TMP $REMOTE_SCRIPT_URL -q wget -P $TMP $REMOTE_SCRIPT_URL -q
wget -P $TMP $REMOTE_REPO_URL/$PARENT_SCRIPT_FILE_NAME -q chmod +x $TMP/$SCRIPT_FILE_NAME
chmod +x $TMP/$SCRIPT_FILE_NAME $TMP/$PARENT_SCRIPT_FILE_NAME mv $TMP/$SCRIPT_FILE_NAME $SCRIPT_PATH
mv $TMP/$SCRIPT_FILE_NAME $TMP/$PARENT_SCRIPT_FILE_NAME $SCRIPT_PATH echo "${DATE} | Script updated to $REMOTE_SCRIPT_VERSION" >> $LOG
echo "$LOG_DATE | Script updated to version $REMOTE_SCRIPT_VERSION" >> $LOG notify-send -i "$ICON" "Helium Helper" "Script updated to $REMOTE_SCRIPT_VERSION"
notify-send --icon="$ICON" "$NOTIFY_NAME" "Script updated to version $REMOTE_SCRIPT_VERSION"
else else
echo "$LOG_DATE | Failed to update - Malformed version tags" >> $LOG echo "${DATE} | Failed to update - Malformed version tags" >> $LOG
echo "$LOG_DATE | Remote Version: $REMOTE_SCRIPT_VERSION" >> $LOG notify-send -i "$ICON" "Helium Helper" "Script update failed! See log for details\n$REMOTE_SCRIPT_VERSION $SCRIPT_VERSION"
echo "$LOG_DATE | Local Version: $SCRIPT_VERSION" >> $LOG
notify-send --icon="$ICON" "$NOTIFY_NAME" "Script update failed! See log for details"
fi fi
} }
@ -229,13 +140,13 @@ update_helium() {
### CHECK FOR EMPTY VERSION TAGS ### CHECK FOR EMPTY VERSION TAGS
if [[ -z "$APP_SOURCE_VERSION" ]] ; then if [[ -z "$APP_SOURCE_VERSION" ]] ; then
echo "$LOG_DATE | Failed to update - Empty version tag --> $APP_SOURCE" >> $LOG echo "${DATE} | Failed to update - Empty version tag --> $APP_SOURCE" >> $LOG
notify-send --icon="$ICON" "$NOTIFY_NAME" "Browser update failed! See log for details" notify-send -i "$ICON" "Helium Helper" "Browser update failed! See log for details"
exit exit
elif [[ -z "$LOCAL_VERSION" ]] ; then elif [[ -z "$LOCAL_VERSION" ]] ; then
echo "$LOG_DATE | Failed to update - Empty version tag --> LOCAL" >> $LOG echo "${DATE} | Failed to update - Empty version tag --> LOCAL" >> $LOG
notify-send --icon="$ICON" "$NOTIFY_NAME" "Browser update failed! See log for details" notify-send -i "$ICON" "Helium Helper" "Browser update failed! See log for details"
exit exit
fi fi
@ -245,21 +156,25 @@ update_helium() {
APP_SOURCE_VERSION_NUM=$(echo $APP_SOURCE_VERSION | tr -d .) APP_SOURCE_VERSION_NUM=$(echo $APP_SOURCE_VERSION | tr -d .)
if [ "$APP_SOURCE_VERSION" == "$LOCAL_VERSION" ] ; then if [ "$APP_SOURCE_VERSION" == "$LOCAL_VERSION" ] ; then
notify-send --icon="$ICON" "$NOTIFY_NAME" "Browser is up-to-date" notify-send -i "$ICON" "Helium Helper" "Browser is up-to-date"
elif [ "$APP_SOURCE_VERSION_NUM" -gt "$LOCAL_VERSION_NUM" ] ; then elif [ "$APP_SOURCE_VERSION_NUM" -gt "$LOCAL_VERSION_NUM" ] ; then
mkdir -p $TMP mkdir -p $TMP $BACKUP_PATH
wget -P $TMP $DOWNLOAD_URL -q wget -P $TMP $DOWNLOAD_URL -q --show-progress
chmod +x $TMP/$APP_SOURCE_FILENAME chmod +x $TMP/$APP_SOURCE_FILENAME
backup_helium if [ -f "$BACKUP_PATH/$APP_NAME.$FILE_EXTENSION.old" ] ; then
rm $BACKUP_PATH/$APP_NAME.$FILE_EXTENSION.old
fi
mv $INSTALL_PATH/$APP_NAME.$FILE_EXTENSION $BACKUP_PATH/$APP_NAME.$FILE_EXTENSION.old
mv $TMP/$APP_SOURCE_FILENAME $INSTALL_PATH/$APP_NAME.$FILE_EXTENSION mv $TMP/$APP_SOURCE_FILENAME $INSTALL_PATH/$APP_NAME.$FILE_EXTENSION
cp $LAUNCHER_PATH/$APP_NAME.desktop $BACKUP_PATH/$APP_NAME.desktop.old
sed -i "s|X-AppImage-Version=.*|X-AppImage-Version=$($INSTALL_PATH/$APP_NAME.$FILE_EXTENSION --version | awk '{print $2}')|" $LAUNCHER_PATH/$APP_NAME.desktop sed -i "s|X-AppImage-Version=.*|X-AppImage-Version=$($INSTALL_PATH/$APP_NAME.$FILE_EXTENSION --version | awk '{print $2}')|" $LAUNCHER_PATH/$APP_NAME.desktop
echo "$LOG_DATE | $APP_NAME updated to version ${APP_SOURCE_VERSION}" >> $LOG echo "${DATE} | $APP_NAME updated to ${APP_SOURCE_VERSION}" >> $LOG
notify-send --icon="$ICON" "$NOTIFY_NAME" "Browser updated to version $APP_SOURCE_VERSION" notify-send -i "$ICON" "Helium Helper" "Browser updated to $APP_SOURCE_VERSION"
else else
echo "$LOG_DATE | Failed to update - Version tags malformed" >> $LOG echo "${DATE} | Failed to update - Version tags malformed" >> $LOG
notify-send --icon="$ICON" "$NOTIFY_NAME" "Browser update failed! See log for details" notify-send -i "$ICON" "Helium Helper" "Browser update failed! See log for details"
exit exit
fi fi
@ -278,7 +193,7 @@ show_log() {
xdg-open $LOG xdg-open $LOG
else else
notify-send --icon="$ICON" "$NOTIFY_NAME" "No log created yet" notify-send -i "$ICON" "Helium Helper" "No log created yet"
fi fi
} }
@ -315,13 +230,6 @@ exit_clean() {
## GET OPTIONS ## GET OPTIONS
while getopts ":a,:s,:S,:L,:h" OPTION ; do while getopts ":a,:s,:S,:L,:h" OPTION ; do
if [ "$(echo $1 | wc -m)" -gt "3" ] ; then
echo -e "\n${YEL}Option ${RED}$1${YEL} not valid! Use only one parameter at a time...${CRS}"
help
exit
fi
case $OPTION in case $OPTION in
S) S)