Compare commits

..

No commits in common. "bb478145651a420f224492efa0cb8a2e510f8e7e" and "e5d47bfa5d97bf40354546d9b8a15cb2c1aaad32" have entirely different histories.

6 changed files with 236 additions and 702 deletions

View file

@ -1,73 +1,19 @@
# Helium Bowser installer & updater # Helium Bowser installer & updater
## 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... 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...
## Usage
Help
```sh
./helium_helper.sh -h
```
### First Install
To initally install Helium browser via this script, download helium_helper.sh and make it executable:
```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_
```sh
./helium_helper.sh -i
```
Add alias to `.shellrc` | _optional_
```sh
./helium_helper.sh -a ### ONLY TESTED WITH zsh & bash
```
---
### Updating
**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.
**Terminal**
Updating can also be done by running:
```sh
./helium_helper.sh -u ### UPDATE APP
```
```sh
./helium_helper.sh -S ### UPDATE SCRIPT
```
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 and updater script
- Installs to `/home/<USER>/.apps/Helium` | changeable in line 28 `INSTALL_PATH` - Installs to `/home/<USER>/.apps/Helium` | changeable in line 27 `INSTALL_PATH`
- Assumes: - Assumes:
- Presence of `/home/<USER>/.apps/Helium` when updating | changeable in line 28 `INSTALL_PATH` - Presence of `/home/<USER>/.apps/Helium` when updating | changeable in line 27 `INSTALL_PATH`
- Executable named `Helium.AppImage` - Executable named `Helium.AppImage` | for convenience so launchers don't have to be edited at each update
- Keeps backups of - Keeps prior AppImage as `Helium.old` which will be replaced at every update
- `Helium.AppImage` --> `Helium.AppImage.old`
- `helium_helper.sh` --> `helium_helper.sh.old`
- `helium_launcher_update.sh` --> `helium_launcher_update.sh.old`
- `Helium.desktop` --> `Helium.desktop.old`
which will be overwritten at every update
- Adds desktop launcher to `/home/<USER>/.local/share/applications` - Adds desktop launcher to `/home/<USER>/.local/share/applications`
- Adds options to launcher which are run by `helium_launcher_updater.sh`
- Update Helium ### Helium_Auto_Update.sh
- Update Script - Automatic updater script
- View Log - Installs to `/home/<USER>/.apps/Helium` | changeable in line 8 `INSTALL_PATH`
- Run `helium_helper.sh -h` for help
---
### Helium_Launcher_Update.sh
- Update Helium from launcher
- Assumes: - Assumes:
- Presence of `/home/<USER>/.apps/Helium` when updating | changeable in line 19 `INSTALL_PATH` - Presence of `/home/<USER>/.apps/Helium` when updating | changeable in line 8 `INSTALL_PATH`
- Executable named `Helium.AppImage` - Executable named `helium-browser.AppImage` | for convenience so launchers don't have to be edited at each update
- Loggs to `/home/<USER>/.apps/Helium/assets/logs` - Loggs to `/home/<USER>/.apps/Helium/updateLog`
- Keeps backups of - Keeps prior AppImage as `helium-browser.OldAppImage` which will be replaced at every update
- `Helium.AppImage` --> `Helium.AppImage.old`
- `helium_helper.sh` --> `helium_helper.sh.old`
- `helium_launcher_update.sh` --> `helium_launcher_update.sh.old`
- `Helium.desktop` --> `Helium.desktop.old`
which will be overwritten at every update
- Run `helium_launcher_update.sh -h` for help
&nbsp;

View file

@ -11,7 +11,7 @@ Icon=%ICON_LOCATION%
Type=Application Type=Application
Categories=Network;WebBrowser; Categories=Network;WebBrowser;
MimeType=application/pdf;application/rdf+xml;application/rss+xml;application/xhtml+xml;application/xhtml_xml;application/xml;image/gif;image/jpeg;image/png;image/webp;text/html;text/xml;x-scheme-handler/http;x-scheme-handler/https; MimeType=application/pdf;application/rdf+xml;application/rss+xml;application/xhtml+xml;application/xhtml_xml;application/xml;image/gif;image/jpeg;image/png;image/webp;text/html;text/xml;x-scheme-handler/http;x-scheme-handler/https;
Actions=new-window;new-private-window;update;update-script;show-log; Actions=new-window;new-private-window;
X-AppImage-Version=%APP_VERSION% X-AppImage-Version=%APP_VERSION%
[Desktop Action new-window] [Desktop Action new-window]
@ -22,14 +22,3 @@ Exec=%APP_LOCATION%
Name=New Incognito Window Name=New Incognito Window
Exec=%APP_LOCATION% --incognito Exec=%APP_LOCATION% --incognito
[Desktop Action update]
Name=Update Helium
Exec=%QUIET_UPDATE_SCRIPT%
[Desktop Action update-script]
Name=Update Helium Helper
Exec=%SCRIPT_UPDATE%
[Desktop Action show-log]
Name=Show Update Log
Exec=%OPEN_LOG_EDITOR%

View file

@ -1,82 +0,0 @@
# To Do List Helium installer
## Last Jobs
- Readme updated
- Desktop Entry updater --> Complete
- Launcher has an update option now
- Launcher installer refined
- Clean Up
---
- Script updater
- Remote script check simplified
- Remover function extended
- Alias remover added
- Script remover added
- helium_auto_update.sh renamed to helium_launcher_update.sh
- Desktop notifications added
- Launcher functions extended
- Update script option added
- Show log option added
- Variables universalized
- Wiki created
---
- sed command fixed in remover
- ARCH variable added
- APP_SOURCE variable changed
- BRANCH variable added
- FILE_EXTENSION variable added
- Readme updated
## Add/To Do
- Architecture detection
- Set alias --> Partially
- shell recognition missing
- Roll back from backup
- Config check
- Simplification (more for loops) & Clean Up
- Update Readme
- Make functional launcher optional
## Repo
- Merge workflow
- Convert URLs from __main__ to __stable__
- Remove to do list
- Remove comment from script
## Fix
## Notes
- Auto Update
```sh
while true ; do
read -p " Enable automatic update check on login? (y/N) : " AUTO_UPDATE
if [[ "$AUTO_UPDATE" == "" || "$AUTO_UPDATE" == "n" || "$AUTO_UPDATE" == "N" ]] ; then
break
elif [[ "$AUTO_UPDATE" == "y" || "$AUTO_UPDATE" == "Y" ]] ; then
if ! [ -f "$PROFILE" ] ; then
echo -e "\n ${RED}Following file is missing :\n\n${YEL}$PROFILE\n\n ${CYN}Please investigate and re-run script !${CRS}"
exit 1
else
wget -P $TMP https://lab.c95.org/fr4nz/shell-scripts/src/branch/main/helium-browser/helium_auto_update.sh -q --show-progress
chmod +x $TMP/helium_auto_update.sh
mv $TMP/helium_auto_update.sh $INSTALL_PATH/helium_auto_update.sh
echo >> $PROFILE
echo "### HELIUM AUTO UPDATE ###" >> $PROFILE
echo "${INSTALL_PATH}/helium_auto_update.sh" >> $PROFILE
echo >> $PROFILE
echo -e "\n ${GRN}Automatic updates enabled ! ${CRS}\n"
break
fi
else
echo -e " ${YEL}Invalid response !${CRS}\n"
fi
done
```

94
helium_auto_update.sh Executable file
View file

@ -0,0 +1,94 @@
#!/bin/bash
# HELIUM BOWSER AUTO UPDATE SCRIPT WITH LOGGING
## VARIABLES & TMP FOLDER
mkdir -p /tmp/Helium
TMP=/tmp/Helium
INSTALL_PATH=$HOME/.apps/Helium
LOG=$INSTALL_PATH/updateLog
DEPENDENCIES=("curl" "wget")
MISSING=$(cat $TMP/missingDeps 2>/dev/null)
GIT_VERSION=$(curl -s https://api.github.com/repos/imputnet/helium-linux/releases/latest | grep "tag_name" | tr -d \", | awk '{print $2}')
LOCAL_VERSION=$($INSTALL_PATH/helium-browser.AppImage --version | awk '{print $2}')
DATE=$(date)
## CHECKS
if ! [ -d "$INSTALL_PATH" ] ; then
mkdir -p $INSTALL_PATH
echo "${DATE} | Failed to update - Helium installation path not present - But created for logging" >> $LOG
exit 1
elif ! [ -f "$INSTALL_PATH/helium-browser.AppImage" ] ; then
echo "${DATE} | Failed to update - Local Helium AppImage not found" >> $LOG
exit 1
else
:
fi
### SCRIPT DEPENDENCIES
dependency_check() {
local PACKAGE="$1"
if command -v "$PACKAGE" >/dev/null 2>&1 ; then
:
else
echo "$PACKAGE" >>$TMP/missingDeps
fi
}
for PACKAGE in "${DEPENDENCIES[@]}" ; do
dependency_check "$PACKAGE"
done
if ! [ "$MISSING" ] ; then
:
else
echo "${DATE} | Failed to update - missing dependencies : $MISSING" >> $LOG
exit 1
fi
## COMPARE VERSIONS
update_helium() {
GIT_URL=$(curl -s https://api.github.com/repos/imputnet/helium-linux/releases/latest | grep "browser_download_url" | grep "x86_64.AppImage" | grep -v "zsync" | tr -d \" | awk '{print $2}')
GIT_FILENAME=$(curl -s https://api.github.com/repos/imputnet/helium-linux/releases/latest | grep "browser_download_url" | grep "x86_64.AppImage" | grep -v "zsync" | tr -d \" | awk '{print $2}' | awk -F'/' '{print $9}')
wget -P $TMP $GIT_URL -q
chmod +x $TMP/$GIT_FILENAME
rm $INSTALL_PATH/helium-browser.OldAppImage >/dev/null 2>&1
mv $INSTALL_PATH/helium-browser.AppImage $INSTALL_PATH/helium-browser.OldAppImage >/dev/null 2>&1
mv $TMP/$GIT_FILENAME $INSTALL_PATH/helium-browser.AppImage
echo "${DATE} | Helium updated to ${GIT_VERSION}" >> $LOG
}
### CHECK FOR EMPTY VERSION TAGS
if [[ -z "$GIT_VERSION" ]] ; then
echo "${DATE} | Failed to update - Emty version tag --> GIT" >> $LOG
exit 1
elif [[ -z "$LOCAL_VERSION" ]] ; then
echo "${DATE} | Failed to update - Emty version tag --> LOCAL" >> $LOG
exit 1
else
:
fi
if [[ "$GIT_VERSION" == "$LOCAL_VERSION" ]] ; then
:
else
update_helium
fi
rm -rf $TMP
exit 0

View file

@ -1,5 +1,7 @@
#!/bin/bash #!/bin/bash
# Helium BOWSER INSTALL & UPDATE SCRIPT ---> INTERACTIVE # Helium BOWSER INSTALL & UPDATE SCRIPT ---> INTERACTIVE
########## PREREQUISITES ########### ########## PREREQUISITES ###########
set -e set -e
@ -14,30 +16,22 @@ 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" SOURCE="GitHub"
FILE_EXTENSION="AppImage"
APP_SOURCE="GitHub"
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" SCRIPT_VERSION="0.5.1"
SCRIPT_VERSION="0.5.7" DATE=$(date)
ALIAS="update-helium"
## LOCATIONS ## LOCATIONS
TMP=/tmp/$APP_NAME TMP=/tmp/$APP_NAME
INSTALL_PATH=$HOME/.apps/$APP_NAME INSTALL_PATH=$HOME/.apps/$APP_NAME
ASSET_PATH=$INSTALL_PATH/assets CONFIG_PATH=$INSTALL_PATH/assets
BACKUP_PATH=$ASSET_PATH/backup BACKUP_PATH=$INSTALL_PATH/assets/backup
LOG_PATH=$ASSET_PATH/logs LOG_PATH=$INSTALL_PATH/assets/logs
LOG=$LOG_PATH/log LOG=$LOG_PATH/log
LAUNCHER_PATH=$HOME/.local/share/applications LAUNCHER_PATH=$HOME/.local/share/applications
SCRIPT_PATH=$HOME/.local/bin SCRIPT_PATH=$HOME/.local/bin
#PROFILE=$HOME/.profile ### for AUTO UPDATE
## REMOTE LOCATIONS
REMOTE_REPO_BRANCH="main"
REMOTE_REPO_URL=https://lab.c95.org/fr4nz/helium-helper/raw/branch/$REMOTE_REPO_BRANCH
REMOTE_SCRIPT_URL=$REMOTE_REPO_URL/$SCRIPT_FILE_NAME
APP_SOURCE_URL=https://api.github.com/repos/imputnet/helium-linux/releases/latest
########## FUNCTIONS ########### ########## FUNCTIONS ###########
@ -64,6 +58,7 @@ dependency_check () {
MISSING=$(cat $TMP/missingDeps) MISSING=$(cat $TMP/missingDeps)
echo -e "\n ${RED}Following dependencies are missing :\n\n${CRS}$MISSING\n\n ${CYN}Please install and re-run script !${CRS}" 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
exit
fi fi
} }
@ -75,8 +70,8 @@ local_check() {
install_helium install_helium
exit exit
elif ! [ -f "$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" ] ; then elif ! [ -f "$INSTALL_PATH/$APP_NAME.AppImage" ] ; then
echo -e "\n ${RED}$APP_NAME_LONG directory found but no executable named ${CYN}$APP_NAME.$FILE_EXTENSION${RED}!${CRS}" echo -e "\n ${RED}$APP_NAME_LONG directory found but no executable named ${CYN}$APP_NAME.AppImage${RED}!${CRS}"
install_helium install_helium
exit exit
@ -85,31 +80,31 @@ local_check() {
### INSTALL ### INSTALL
install_helium() { install_helium() {
if [ -f "$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" ] ; then if [ -f "$INSTALL_PATH/$APP_NAME.AppImage" ] ; then
echo -e "\n ${YEL}$APP_NAME_LONG AppImage found! Trying to update...${CRS}" echo -e "\n ${CYN}$APP_NAME_LONG AppImage found! Trying to update...${CRS}"
update_helium 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 $SOURCE? (Y/n) : " CONFIRM_INSTALL
echo 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}') GIT_URL=$(curl -s https://api.github.com/repos/imputnet/helium-linux/releases/latest | grep "browser_download_url" | grep "x86_64.AppImage" | 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}') GIT_FILENAME=$(curl -s https://api.github.com/repos/imputnet/helium-linux/releases/latest | grep "browser_download_url" | grep "x86_64.AppImage" | grep -v "zsync" | tr -d \" | awk '{print $2}' | awk -F'/' '{print $9}')
wget -P $TMP $DOWNLOAD_URL -q --show-progress wget -P $TMP $GIT_URL -q --show-progress
chmod +x $TMP/$APP_SOURCE_FILENAME chmod +x $TMP/$GIT_FILENAME
mkdir -p $INSTALL_PATH mkdir -p $INSTALL_PATH
mv $TMP/$APP_SOURCE_FILENAME $INSTALL_PATH/$APP_NAME.$FILE_EXTENSION mv $TMP/$GIT_FILENAME $INSTALL_PATH/$APP_NAME.AppImage
add_launcher
echo -e "\n ${GRN}$APP_NAME_LONG is installed!${CRS}\n" echo -e "\n ${GRN}$APP_NAME_LONG is installed!${CRS}\n"
break add_launcher
exit_clean
elif [[ "$CONFIRM_INSTALL" == "n" || "$CONFIRM_INSTALL" == "N" ]] ; then elif [[ "$CONFIRM_INSTALL" == "n" || "$CONFIRM_INSTALL" == "N" ]] ; then
echo -e " ${RED}Cancelled!${CRS}" echo -e "\n ${RED}Installation cancelled!${CRS}\n"
break exit
else else
echo -e " ${YEL}Invalid response!${CRS}\n" echo -e " ${YEL}Invalid response!${CRS}\n"
@ -119,45 +114,36 @@ install_helium() {
done done
} }
### LAUNCHER ### LAUNCHER --> TO DO
add_launcher() { add_launcher() {
if [ -f "$LAUNCHER_PATH/$APP_NAME.desktop" ] ; then if [ -f "$LAUNCHER_PATH/$APP_NAME.desktop" ] ; then
echo -e "\n ${YEL}${APP_NAME}.desktop already exists!${CRS}" echo -e "\n ${RED}${APP_NAME}.desktop already exists!${CRS}"
exit
elif [ -f "$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" ] ; then elif [ -f "$INSTALL_PATH/$APP_NAME.AppImage" ] ; then
while true ; do while true ; do
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 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=https://lab.c95.org/fr4nz/helium-helper/raw/branch/stable/assets/launcher/helium.desktop.template
ICON_URL=$REMOTE_REPO_URL/assets/icon/helium.png ICON_URL=https://lab.c95.org/fr4nz/helium-helper/raw/branch/stable/assets/icon/helium.png
AUTO_SCRIPT_URL=$REMOTE_REPO_URL/$AUTO_SCRIPT_FILE_NAME LOCAL_VERSION=$($INSTALL_PATH/$APP_NAME.AppImage --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
if ! [ -f "$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME" ] ; then
wget -P $TMP $AUTO_SCRIPT_URL -q --show-progress
chmod +x $TMP/$AUTO_SCRIPT_FILE_NAME
mv $TMP/$AUTO_SCRIPT_FILE_NAME $SCRIPT_PATH
fi
wget -P $TMP $LAUNCHER_URL -q --show-progress wget -P $TMP $LAUNCHER_URL -q --show-progress
wget -P $TMP $ICON_URL -q --show-progress wget -P $TMP $ICON_URL -q --show-progress
sed -i "s|%APP_LOCATION%|$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION|" $TMP/helium.desktop.template sed -i "s|%APP_LOCATION%|$INSTALL_PATH/$APP_NAME.AppImage|" $TMP/helium.desktop.template
sed -i "s|%ICON_LOCATION%|$ASSET_PATH/icon/helium.png|" $TMP/helium.desktop.template sed -i "s|%ICON_LOCATION%|$CONFIG_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
sed -i "s|%QUIET_UPDATE_SCRIPT%|$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME|" $TMP/helium.desktop.template mkdir -p $LAUNCHER_PATH $BACKUP_PATH $CONFIG_PATH/icon
sed -i "s|%SCRIPT_UPDATE%|$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME -S|" $TMP/helium.desktop.template cp $TMP/helium.desktop.template $LAUNCHER_PATH/$APP_NAME.desktop
sed -i "s|%OPEN_LOG_EDITOR%|$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME -L|" $TMP/helium.desktop.template mv $TMP/helium.desktop.template $BACKUP_PATH/$APP_NAME.desktop.backup
mv $TMP/helium.desktop.template $LAUNCHER_PATH/$APP_NAME.desktop mv $TMP/helium.png $CONFIG_PATH/icon
mv $TMP/helium.png $ASSET_PATH/icon echo -e "\n ${GRN}$APP_NAME_LONG launcher is set up!${CRS}\n"
echo -e "\n ${GRN}$APP_NAME_LONG launcher is set up!${CRS}" exit_clean
break
elif [[ "$CONFIRM_LAUNCHER" == "n" || "$CONFIRM_LAUNCHER" == "N" ]] ; then elif [[ "$CONFIRM_LAUNCHER" == "n" || "$CONFIRM_LAUNCHER" == "N" ]] ; then
echo -e " ${RED}Launcher not added!${CRS}" echo -e "\n ${RED}Launcher creation cancelled!${CRS}\n"
break exit
else else
echo -e " ${YEL}Invalid response!${CRS}\n" echo -e " ${YEL}Invalid response!${CRS}\n"
@ -174,45 +160,14 @@ add_launcher() {
fi fi
} }
### ALIAS
add_alias() { ### WORKS BUT NEEDS WORK
if ! [ -f "$SCRIPT_PATH/$SCRIPT_FILE_NAME" ] ; then
mkdir -p $SCRIPT_PATH
wget -P $TMP $REMOTE_SCRIPT_URL -q
chmod +x $TMP/$SCRIPT_FILE_NAME
mv $TMP/$SCRIPT_FILE_NAME $SCRIPT_PATH
fi
if [ -f "$HOME/.zshrc" ] ; then
if [ "$(cat $HOME/.zshrc | grep "$ALIAS")" ] ; then
echo -e "\n ${LCY}$ALIAS ${GRN}already present in${CRS} $HOME/.zshrc"
exit
fi
echo "alias $ALIAS=\"$SCRIPT_PATH/$SCRIPT_FILE_NAME\"" >> $HOME/.zshrc
echo -e "\n ${LCY}$ALIAS ${GRN}added to${CRS} $HOME/.zshrc"
elif [ -f "$HOME/.bashrc" ] ; then
if [ "$(cat $HOME/.bashrc | grep "$ALIAS")" ] ; then
echo -e "\n ${LCY}$ALIAS ${GRN}already present in${CRS} $HOME/.bashrc"
exit
fi
echo "alias $ALIAS=\"$SCRIPT_PATH/$SCRIPT_FILE_NAME\"" >> $HOME/.zshrc
echo -e "\n ${LCY}$ALIAS ${GRN}added to${CRS} $HOME/.bashrc"
else
echo -e "\n ${RED}No .shellrc file found!${CRS}"
fi
}
### UPDATE ### UPDATE
update_helium() { update_helium() {
LOCAL_VERSION=$($INSTALL_PATH/$APP_NAME.$FILE_EXTENSION --version | awk '{print $2}') LOCAL_VERSION=$($INSTALL_PATH/$APP_NAME.AppImage --version | awk '{print $2}')
APP_SOURCE_VERSION=$(curl -s $APP_SOURCE_URL | grep "tag_name" | tr -d \", | awk '{print $2}') GIT_VERSION=$(curl -s https://api.github.com/repos/imputnet/helium-linux/releases/latest | grep "tag_name" | tr -d \", | awk '{print $2}')
### CHECK FOR EMPTY VERSION TAGS ### CHECK FOR EMPTY VERSION TAGS
if [ -z "$APP_SOURCE_VERSION" ] ; then if [ -z "$GIT_VERSION" ] ; then
echo -e "\n ${RED}Empty version tag from ${CYN}$APP_SOURCE${RED}! Can't compare, exiting...${CRS}" echo -e "\n ${RED}Empty version tag from ${CYN}$SOURCE${RED}! Can't compare, exiting...${CRS}"
exit exit
elif [ -z "$LOCAL_VERSION" ] ; then elif [ -z "$LOCAL_VERSION" ] ; then
@ -223,38 +178,36 @@ update_helium() {
### COMPARE LOCAL & REMOTE VERSION ### 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 .) GIT_VERSION_NUM=$(echo $GIT_VERSION | tr -d .)
if [ "$APP_SOURCE_VERSION" == "$LOCAL_VERSION" ] ; then if [ "$GIT_VERSION" == "$LOCAL_VERSION" ] ; then
echo -e "\n ${GRN}$APP_NAME_LONG is already up-to-date!${CRS}\n" echo -e "\n ${GRN}$APP_NAME_LONG is already up-to-date!${CRS}\n"
elif [ "$APP_SOURCE_VERSION_NUM" -gt "$LOCAL_VERSION_NUM" ] ; then elif [ "$GIT_VERSION_NUM" -gt "$LOCAL_VERSION_NUM" ] ; then
echo -e "\n ${LCY}$APP_NAME_LONG is updatable!${CRS}\n" echo -e "\n ${RED}$APP_NAME_LONG is updatable!${CRS}\n"
echo -e " ${CYN}Local Version :\t${CRS}${LOCAL_VERSION}" echo -e " ${CYN}Local Version :\t${CRS}${LOCAL_VERSION}"
echo -e " ${CYN}$APP_SOURCE Version :\t${CRS}${APP_SOURCE_VERSION}\n" echo -e " ${CYN}$SOURCE Version :\t${CRS}${GIT_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 $SOURCE? (Y/n) : " CONFIRM
echo 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}') GIT_URL=$(curl -s https://api.github.com/repos/imputnet/helium-linux/releases/latest | grep "browser_download_url" | grep "x86_64.AppImage" | 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}') GIT_FILENAME=$(curl -s https://api.github.com/repos/imputnet/helium-linux/releases/latest | grep "browser_download_url" | grep "x86_64.AppImage" | grep -v "zsync" | tr -d \" | awk '{print $2}' | awk -F'/' '{print $9}')
mkdir -p $TMP $BACKUP_PATH mkdir -p $TMP
wget -P $TMP $DOWNLOAD_URL -q --show-progress wget -P $TMP $GIT_URL -q --show-progress
chmod +x $TMP/$APP_SOURCE_FILENAME chmod +x $TMP/$GIT_FILENAME
if [ -f "$BACKUP_PATH/$APP_NAME.old" ] ; then if [ -f "$INSTALL_PATH/$APP_NAME.old" ] ; then
rm $BACKUP_PATH/$APP_NAME.old rm $INSTALL_PATH/$APP_NAME.old
fi fi
mv $INSTALL_PATH/$APP_NAME.$FILE_EXTENSION $BACKUP_PATH/$APP_NAME.old mv $INSTALL_PATH/$APP_NAME.AppImage $INSTALL_PATH/$APP_NAME.old
mv $TMP/$APP_SOURCE_FILENAME $INSTALL_PATH/$APP_NAME.$FILE_EXTENSION mv $TMP/$GIT_FILENAME $INSTALL_PATH/$APP_NAME.AppImage
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
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"
break break
elif [[ "$CONFIRM" == "n" || "$CONFIRM" == "N" ]] ; then elif [[ "$CONFIRM" == "n" || "$CONFIRM" == "N" ]] ; then
echo -e " ${RED}Cancelled!${CRS}" echo -e "\n ${RED}Update cancelled!${CRS}\n"
exit exit
else else
@ -267,7 +220,7 @@ update_helium() {
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"
echo -e " ${CYN}Local Version :\t${CRS}${LOCAL_VERSION}" echo -e " ${CYN}Local Version :\t${CRS}${LOCAL_VERSION}"
echo -e " ${CYN}$APP_SOURCE Version :\t${CRS}${APP_SOURCE_VERSION}\n" echo -e " ${CYN}$SOURCE Version :\t${CRS}${GIT_VERSION}\n"
echo -e " ${RED}Update failed... Exiting...${CRS}\n" echo -e " ${RED}Update failed... Exiting...${CRS}\n"
exit exit
@ -275,14 +228,15 @@ update_helium() {
} }
### AUTOMATIC UPDATE --> TO DO? ### AUTOMATIC UPDATE --> TO DO
auto_update() { auto_update() {
if ! [ -f "$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" ] ; then if ! [ -f "$INSTALL_PATH/$APP_NAME.AppImage" ] ; then
echo -e "\n ${RED}$APP_NAME AppImage not found! Can't add auto update script...${CRS}" echo -e "\n ${RED}$APP_NAME AppImage not found! Can't add auto update script...${CRS}"
exit exit
else else
echo -e "\n ${RED}Not implemented yet...${CRS}" echo -e "\n ${RED}Not implemented yet...${CRS}"
exit
fi fi
} }
@ -292,46 +246,27 @@ 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 and launcher? (Y/n) : " CONFIRM_REMOVE read -p " Remove $APP_NAME_LONG folder $INSTALL_PATH? (Y/n) : " CONFIRM_REMOVE
if [[ "$CONFIRM_REMOVE" == "" || "$CONFIRM_REMOVE" == "y" || "$CONFIRM_REMOVE" == "Y" ]] ; then if [[ "$CONFIRM_REMOVE" == "" || "$CONFIRM_REMOVE" == "y" || "$CONFIRM_REMOVE" == "Y" ]] ; then
rm -rf $INSTALL_PATH rm -rf $INSTALL_PATH
if [ -f "$LAUNCHER_PATH/$APP_NAME.desktop" ] ; then rm $LAUNCHER_PATH/$APP_NAME.desktop
rm $LAUNCHER_PATH/$APP_NAME.desktop echo -e "\n ${RED}$APP_NAME_LONG removed!${CRS}\n"
fi exit
if [ -f "$SCRIPT_PATH/$SCRIPT_FILE_NAME" ] ; then elif [[ "$CONFIRM_REMOVE" == "n" || "$CONFIRM_REMOVE" == "N" ]] ; then
rm $SCRIPT_PATH/$SCRIPT_FILE_NAME echo -e "\n ${RED}Removal cancelled!${CRS}\n"
fi exit
if [ -f "$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME" ] ; then else
rm $SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME echo -e " ${YEL}Invalid response!${CRS}\n"
fi
fi
if [ -f "$HOME/.zshrc" ] ; then done
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
echo -e " ${RED}Cancelled!${CRS}"
exit
else
echo -e " ${YEL}Invalid response!${CRS}\n"
fi
done
else else
echo -e "\n ${RED}Can't remove $APP_NAME_LONG! ${YEL}$INSTALL_PATH ${RED}directory not found...${CRS}" echo -e "\n ${RED}Can't remove $APP_NAME_LONG! ${YEL}$INSTALL_PATH ${RED}directory not found...${CRS}\n"
exit exit
fi fi
@ -339,114 +274,32 @@ remove_helium() {
### 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 : ${GRN}${SCRIPT_VERSION}${CRS}\n"
exit exit
} }
### UPDATE SCRIPT ### UPDATE SCRIPT --> TO DO
update_script() { update_script() {
### CHECK FOR LOCAL SCRIPT if ! [ -f "$INSTALL_PATH/$APP_NAME.AppImage" ] ; then
if ! [ -f "$SCRIPT_PATH/$SCRIPT_FILE_NAME" ] ; then echo -e "\n ${RED}$APP_NAME_LONG AppImage not found! Can't update script...${CRS}"
echo -e "\n ${YEL}$SCRIPT_FILE_NAME not found...${CRS}"
while true ; do
echo
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 ! [ -d "$SCRIPT_PATH" ] ; then
mkdir -p $SCRIPT_PATH
fi
mkdir -p $TMP
wget -P $TMP $REMOTE_SCRIPT_URL -q
chmod +x $TMP/$SCRIPT_FILE_NAME
mv $TMP/$SCRIPT_FILE_NAME $SCRIPT_PATH
echo -e "\n ${GRN}$SCRIPT_FILE_NAME is up-to-date!${CRS}"
exit_clean
elif [[ "$CONFIRM_SCRIPT_INSTALL" == "n" || "$CONFIRM_SCRIPT_INSTALL" == "N" ]] ; then
echo -e " ${RED}Cancelled!${CRS}"
exit
else
echo -e " ${YEL}Invalid response!${CRS}\n"
fi
done
fi
REMOTE_SCRIPT_VERSION=$(curl -s $REMOTE_SCRIPT_URL | grep -m 1 "SCRIPT_VERSION" | tr -d 'SCRIPT_VERSION="')
### CHECK FOR EMPTY VERSION TAGS
if [ -z "$SCRIPT_VERSION" ] ; then
echo -e "\n ${RED}Empty version tag from ${CYN}local script${RED}! Can't compare, exiting...${CRS}"
exit exit
elif [ -z "$REMOTE_SCRIPT_VERSION" ] ; then
echo -e "\n ${RED}Empty version tag from ${CYN}remote script${RED}! Can't compare, exiting...${CRS}"
exit
fi
### COMPARE LOCAL & REMOTE VERSION
SCRIPT_VERSION_NUM=$(echo $SCRIPT_VERSION | tr -d .)
REMOTE_SCRIPT_VERSION_NUM=$(echo $REMOTE_SCRIPT_VERSION | tr -d .)
if [ "$REMOTE_SCRIPT_VERSION" == "$SCRIPT_VERSION" ] ; then
echo -e "\n ${GRN}$SCRIPT_FILE_NAME is already up-to-date!${CRS}\n"
elif [ "$REMOTE_SCRIPT_VERSION_NUM" -gt "$SCRIPT_VERSION_NUM" ] ; then
echo -e "\n ${YEL}$SCRIPT_FILE_NAME is updatable!${CRS}\n"
echo -e " ${CYN}Local Version :\t${CRS}${SCRIPT_VERSION}"
echo -e " ${CYN}Remote Version :\t${CRS}${REMOTE_SCRIPT_VERSION}\n"
while true ; do
read -p " Update $SCRIPT_FILE_NAME? (Y/n) : " CONFIRM_SCRIPT_UPDATE
echo
if [[ "$CONFIRM_SCRIPT_UPDATE" == "" || "$CONFIRM_SCRIPT_UPDATE" == "y" || "$CONFIRM_SCRIPT_UPDATE" == "Y" ]] ; then
if ! [ -d "$BACKUP_PATH" ] ; then
mkdir -p $BACKUP_PATH
fi
mv $SCRIPT_PATH/$SCRIPT_FILE_NAME $BACKUP_PATH/$SCRIPT_FILE_NAME.old
mkdir -p $TMP
wget -P $TMP $REMOTE_SCRIPT_URL -q
chmod +x $TMP/$SCRIPT_FILE_NAME
mv $TMP/$SCRIPT_FILE_NAME $SCRIPT_PATH
echo -e " ${GRN}$SCRIPT_FILE_NAME is up-to-date!${CRS}"
break
elif [[ "$CONFIRM_SCRIPT_UPDATE" == "n" || "$CONFIRM_SCRIPT_UPDATE" == "N" ]] ; then
echo -e " ${RED}Cancelled!${CRS}"
break
else
echo -e " ${YEL}Invalid response!${CRS}\n"
fi
done
else else
echo -e "\n ${RED}Version tags malformed or you are using a Beta version!${CRS}\n" echo -e "\n ${RED}Not implemented yet...${CRS}"
echo -e " ${CYN}Local Version :\t${CRS}${SCRIPT_VERSION}" exit
echo -e " ${CYN}Remote Version :\t${CRS}${REMOTE_SCRIPT_VERSION}\n"
echo -e " ${RED}Updating script failed...${CRS}\n"
fi fi
} }
### COMPARE APPIMAGE VERSION ### COMPARE APPIMAGE VERSION
compare_version() { compare_version() {
LOCAL_VERSION=$($INSTALL_PATH/$APP_NAME.$FILE_EXTENSION --version | awk '{print $2}') LOCAL_VERSION=$($INSTALL_PATH/$APP_NAME.AppImage --version | awk '{print $2}')
APP_SOURCE_VERSION=$(curl -s $APP_SOURCE_URL | grep "tag_name" | tr -d \", | awk '{print $2}') GIT_VERSION=$(curl -s https://api.github.com/repos/imputnet/helium-linux/releases/latest | grep "tag_name" | tr -d \", | awk '{print $2}')
### CHECK FOR EMPTY VERSION TAGS ### CHECK FOR EMPTY VERSION TAGS
if [ -z "$APP_SOURCE_VERSION" ] ; then if [ -z "$GIT_VERSION" ] ; then
echo -e "\n ${RED}Empty version tag from ${CYN}$APP_SOURCE${RED}! Can't compare, exiting...${CRS}" echo -e "\n ${RED}Empty version tag from ${CYN}$SOURCE${RED}! Can't compare, exiting...${CRS}"
exit exit
elif [ -z "$LOCAL_VERSION" ] ; then elif [ -z "$LOCAL_VERSION" ] ; then
@ -457,24 +310,24 @@ compare_version() {
### COMPARE LOCAL & REMOTE VERSION ### 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 .) GIT_VERSION_NUM=$(echo $GIT_VERSION | tr -d .)
if [ "$APP_SOURCE_VERSION" == "$LOCAL_VERSION" ] ; then if [ "$GIT_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"
echo -e " ${CYN}Local Version :\t${CRS}${LOCAL_VERSION}" echo -e " ${CYN}Local Version :\t${CRS}${LOCAL_VERSION}"
echo -e " ${CYN}$APP_SOURCE Version :\t${CRS}${APP_SOURCE_VERSION}\n" echo -e " ${CYN}$SOURCE Version :\t${CRS}${GIT_VERSION}\n"
exit exit
elif [ "$APP_SOURCE_VERSION_NUM" -gt "$LOCAL_VERSION_NUM" ] ; then elif [ "$GIT_VERSION_NUM" -gt "$LOCAL_VERSION_NUM" ] ; then
echo -e "\n ${YEL}$APP_NAME_LONG is updatable!${CRS}\n" echo -e "\n ${YEL}$APP_NAME_LONG is updatable!${CRS}\n"
echo -e " ${CYN}Local Version :\t${CRS}${LOCAL_VERSION}" echo -e " ${CYN}Local Version :\t${CRS}${LOCAL_VERSION}"
echo -e " ${CYN}$APP_SOURCE Version :\t${CRS}${APP_SOURCE_VERSION}\n" echo -e " ${CYN}$SOURCE Version :\t${CRS}${GIT_VERSION}\n"
exit 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"
echo -e " ${CYN}Local Version :\t${CRS}${LOCAL_VERSION}" echo -e " ${CYN}Local Version :\t${CRS}${LOCAL_VERSION}"
echo -e " ${CYN}$APP_SOURCE Version :\t${CRS}${APP_SOURCE_VERSION}\n" echo -e " ${CYN}$SOURCE Version :\t${CRS}${GIT_VERSION}\n"
echo -e " ${RED}Update failed ... Exiting ...${CRS}\n" echo -e " ${RED}Update failed ... Exiting ...${CRS}\n"
exit exit
@ -485,17 +338,16 @@ 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 | -r | -c | -s | -S | -h ]\n" # | -U | echo -e "Syntax: $SCRIPT_FILE_NAME [ -i | -L | -u | -r | -c | -s | -h ]\n" # | -U | -S
echo -e "Options:\n" echo -e "Options:\n"
echo -e "\t-i\tDownload & install $APP_NAME_LONG from $APP_SOURCE" echo -e "\t-i\tDownload & install $APP_NAME_LONG from $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 ${YEL}--> Working with zsh & bash${CRS}" echo -e "\t-u\tDownload & update $APP_NAME_LONG from $SOURCE"
echo -e "\t-u\tDownload & update $APP_NAME_LONG from $APP_SOURCE"
#echo -e "\t-U\tEnable automatic updates on login ${RED}--> Not yet working${CRS}" #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 ${RED}--> Not yet working${CRS}"
echo -e "\t-h\tPrint this help page.\n" echo -e "\t-h\tPrint this help page.\n"
echo -e "Configured locations:\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"
@ -516,70 +368,73 @@ exit_clean() {
########## MAIN ########## ########## MAIN ##########
## GET OPTIONS ## GET OPTIONS
while getopts ":i,:l,:a,:u,:U,:r,:c,:s,:S,:h" OPTION ; do while getopts ":i,:L,:u,:U,:r,:c,:s,:S,:h" OPTION ; do
case $OPTION in case $OPTION in
i) i)
echo -e "\n ${CYN}Installing $APP_NAME_LONG...${CRS}" echo -e "\n ${YEL}Installing $APP_NAME_LONG...${CRS}"
dependency_check dependency_check
local_check
install_helium install_helium
exit_clean ;; exit_clean
exit ;;
l) L)
echo -e "\n ${CYN}Adding $APP_NAME_LONG launcher...${CRS}" echo -e "\n ${YEL}Adding $APP_NAME_LONG launcher...${CRS}"
dependency_check dependency_check
local_check local_check
add_launcher add_launcher
exit_clean ;; exit_clean
a)
echo -e "\n ${CYN}Adding alias...${CRS}"
add_alias
exit ;; exit ;;
u) u)
echo -e "\n ${CYN}Updating $APP_NAME_LONG...${CRS}" echo -e "\n ${YEL}Updating $APP_NAME_LONG...${CRS}"
dependency_check dependency_check
local_check local_check
update_helium update_helium
exit_clean ;; exit_clean
exit ;;
U) U)
echo -e "\n ${CYN}Enabling automatic updates...${CRS}" echo -e "\n ${YEL}Enabling automatic updates...${CRS}"
dependency_check dependency_check
local_check local_check
auto_update auto_update
exit_clean ;; exit_clean
exit ;;
r) r)
echo -e "\n ${CYN}Removing $APP_NAME_LONG...${CRS}" echo -e "\n ${YEL}Removing $APP_NAME_LONG...${CRS}"
remove_helium remove_helium
exit ;; exit ;;
c) c)
echo -e "\n ${CYN}Comparing remote to local version...${CRS}" echo -e "\n ${YEL}Comparing remote to local version...${CRS}"
dependency_check dependency_check
local_check local_check
compare_version compare_version
exit_clean ;; exit_clean
exit ;;
s) s)
script_version script_version
exit ;; exit ;;
S) S)
echo -e "\n ${CYN}Updating script...${CRS}" echo -e "\n ${YEL}Updating script...${CRS}"
dependency_check dependency_check
local_check
update_script update_script
exit_clean ;; exit_clean
exit ;;
h) h)
help help
exit ;; exit;;
*) *)
echo -e "\n${YEL}Option ${RED}$1${YEL} not recognized... Refer to help below!${CRS}" echo -e "\n${YEL}Option ${RED}-t${YEL} not recognized... Refer to help below!${CRS}"
help help
exit ;; exit;;
esac esac

View file

@ -1,268 +0,0 @@
#!/bin/bash
# HELIUM BOWSER AUTO UPDATE SCRIPT WITH LOGGING
########## PREREQUISITES ###########
set -e
## GLOBAL VARIABLES
APP_NAME="Helium"
APP_NAME_LONG="Helium Web Browser"
ARCH="x86_64"
FILE_EXTENSION="AppImage"
APP_SOURCE="GitHub"
SCRIPT_NAME="$APP_NAME Launcher Updater"
SCRIPT_FILE_NAME="helium_launcher_update.sh"
SCRIPT_VERSION="0.5.7"
DATE=$(date)
## LOCATIONS
TMP=/tmp/$APP_NAME
INSTALL_PATH=$HOME/.apps/$APP_NAME
ASSET_PATH=$INSTALL_PATH/assets
BACKUP_PATH=$ASSET_PATH/backup
LOG_PATH=$ASSET_PATH/logs
LOG=$LOG_PATH/log
LAUNCHER_PATH=$HOME/.local/share/applications
ICON=$ASSET_PATH/icon/helium.png
SCRIPT_PATH=$HOME/.local/bin
## REMOTE LOCATIONS
REMOTE_REPO_BRANCH="main"
REMOTE_REPO_URL=https://lab.c95.org/fr4nz/helium-helper/raw/branch/$REMOTE_REPO_BRANCH
REMOTE_SCRIPT_URL=$REMOTE_REPO_URL/$SCRIPT_FILE_NAME
APP_SOURCE_URL=https://api.github.com/repos/imputnet/helium-linux/releases/latest
########## FUNCTIONS ###########
### DEPENDENCIES
cmd_query() {
local PACKAGE="$1"
if ! command -v "$PACKAGE" >/dev/null 2>&1 ; then
echo " - $PACKAGE" >> $TMP/missingDeps
fi
}
dependency_check () {
DEPENDENCIES=("curl" "wget")
mkdir -p $TMP
for PACKAGE in "${DEPENDENCIES[@]}" ; do
cmd_query "$PACKAGE"
done
if ! [ -f "$LOG" ] ; then
mkdir -p $LOG_PATH
echo "########## $APP_NAME_LONG update log ##########" >> $LOG
echo >> $LOG
echo "${DATE} | Log created" >> $LOG
fi
if [ -f "$TMP/missingDeps" ] ; then
MISSING=$(cat $TMP/missingDeps)
echo "${DATE} | Failed to update - missing dependencies : $MISSING" >> $LOG
notify-send -i "$ICON" "Helium Helper" "Update failed! See log for details"
exit_clean
fi
if ! [ -d "$INSTALL_PATH" ] ; then
mkdir -p $INSTALL_PATH
echo "${DATE} | Failed to update - $APP_NAME installation path not present - But created for logging" >> $LOG
notify-send -i "$ICON" "Helium Helper" "Update failed! See log for details"
exit
elif ! [ -f "$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" ] ; then
echo "${DATE} | Failed to update - Local $APP_NAME AppImage not found" >> $LOG
notify-send -i "$ICON" "Helium Helper" "Update failed! See log for details"
exit
fi
}
### UPDATE SCRIPT
update_script() {
### CHECK FOR LOCAL SCRIPT
if ! [ -f "$SCRIPT_PATH/$SCRIPT_FILE_NAME" ] ; then
echo "${DATE} | Failed to update script - local file not found" >> $LOG
notify-send -i "$ICON" "Helium Helper" "Script update failed! See log for details"
exit
fi
REMOTE_SCRIPT_VERSION=$(curl -s $REMOTE_SCRIPT_URL | grep -m 1 "SCRIPT_VERSION" | tr -d 'SCRIPT_VERSION="')
### CHECK FOR EMPTY VERSION TAGS
if [ -z "$SCRIPT_VERSION" ] ; then
echo "${DATE} | Failed to update script - Empty version tag --> local" >> $LOG
notify-send -i "$ICON" "Helium Helper" "Script update failed! See log for details"
exit
elif [ -z "$REMOTE_SCRIPT_VERSION" ] ; then
echo "${DATE} | Failed to update script - Empty version tag --> $APP_SOURCE" >> $LOG
notify-send -i "$ICON" "Helium Helper" "Script update failed! See log for details"
exit
fi
### COMPARE LOCAL & REMOTE VERSION
SCRIPT_VERSION_NUM=$(echo $SCRIPT_VERSION | tr -d .)
REMOTE_SCRIPT_VERSION_NUM=$(echo $REMOTE_SCRIPT_VERSION | tr -d .)
if [ "$REMOTE_SCRIPT_VERSION" == "$SCRIPT_VERSION" ] ; then
notify-send -i "$ICON" "Helium Helper" "Script is up-to-date"
elif [ "$REMOTE_SCRIPT_VERSION_NUM" -gt "$SCRIPT_VERSION_NUM" ] ; then
mv $SCRIPT_PATH/$SCRIPT_FILE_NAME $BACKUP_PATH/$SCRIPT_FILE_NAME.old
mkdir -p $TMP
wget -P $TMP $REMOTE_SCRIPT_URL -q
chmod +x $TMP/$SCRIPT_FILE_NAME
mv $TMP/$SCRIPT_FILE_NAME $SCRIPT_PATH
echo "${DATE} | Script updated to $REMOTE_SCRIPT_VERSION" >> $LOG
notify-send -i "$ICON" "Helium Helper" "Script updated to $REMOTE_SCRIPT_VERSION"
else
echo "${DATE} | Failed to update - Malformed version tags" >> $LOG
notify-send -i "$ICON" "Helium Helper" "Script update failed! See log for details\n$REMOTE_SCRIPT_VERSION $SCRIPT_VERSION"
fi
}
### UPDATE
update_helium() {
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}')
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}')
### CHECK FOR EMPTY VERSION TAGS
if [[ -z "$APP_SOURCE_VERSION" ]] ; then
echo "${DATE} | Failed to update - Empty version tag --> $APP_SOURCE" >> $LOG
notify-send -i "$ICON" "Helium Helper" "Browser update failed! See log for details"
exit
elif [[ -z "$LOCAL_VERSION" ]] ; then
echo "${DATE} | Failed to update - Empty version tag --> LOCAL" >> $LOG
notify-send -i "$ICON" "Helium Helper" "Browser update failed! See log for details"
exit
fi
### COMPARE LOCAL & REMOTE VERSION
LOCAL_VERSION_NUM=$(echo $LOCAL_VERSION | tr -d .)
APP_SOURCE_VERSION_NUM=$(echo $APP_SOURCE_VERSION | tr -d .)
if [ "$APP_SOURCE_VERSION" == "$LOCAL_VERSION" ] ; then
notify-send -i "$ICON" "Helium Helper" "Browser is up-to-date"
elif [ "$APP_SOURCE_VERSION_NUM" -gt "$LOCAL_VERSION_NUM" ] ; then
mkdir -p $TMP $BACKUP_PATH
wget -P $TMP $DOWNLOAD_URL -q --show-progress
chmod +x $TMP/$APP_SOURCE_FILENAME
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
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
echo "${DATE} | $APP_NAME updated to ${APP_SOURCE_VERSION}" >> $LOG
notify-send -i "$ICON" "Helium Helper" "Browser updated to $APP_SOURCE_VERSION"
else
echo "${DATE} | Failed to update - Version tags malformed" >> $LOG
notify-send -i "$ICON" "Helium Helper" "Browser update failed! See log for details"
exit
fi
}
### SCRIPT VERSION
script_version() {
echo -e "\n ${CYN}$APP_NAME_LONG Auto Update Script Version :${CRS} $SCRIPT_VERSION\n"
}
### SHOW LOG
show_log() {
if [ -f "$LOG" ] ; then
xdg-open $LOG
else
notify-send -i "$ICON" "Helium Helper" "No log created yet"
fi
}
### HELP
help() {
echo -e "\n${LCY}$SCRIPT_NAME${CRS}\n"
echo -e "$APP_NAME_LONG launcher updater script\n"
echo -e "Description: Add functionality to $APP_NAME_LONG's launcher\n"
echo -e "Syntax: $SCRIPT_FILE_NAME [ -s | -S | -L | -h ]\n"
echo -e "Options:\n"
echo -e "\t-s\tShow script version"
echo -e "\t-S\tUpdate $SCRIPT_FILE_NAME"
echo -e "\t-L\tOpen log in default text editor"
echo -e "\t-h\tPrint this help page.\n"
echo -e "Configured locations:\n"
echo -e "\t${CYN}$INSTALL_PATH${CRS}\t\tInstall location"
echo -e "\t${CYN}$LOG_PATH${CRS}\tLog location"
echo -e "\t${CYN}$LAUNCHER_PATH${CRS}\tLauncher location"
echo -e "\t${CYN}$SCRIPT_PATH${CRS}\t\t\tScript location\n"
}
### EXIT CLEAN
exit_clean() {
if [ -d "$TMP" ] ; then
rm -rf $TMP
fi
exit
}
########## MAIN ##########
## GET OPTIONS
while getopts ":a,:s,:S,:L,:h" OPTION ; do
case $OPTION in
S)
dependency_check
update_script
exit_clean ;;
s)
script_version
exit_clean ;;
L)
show_log
exit_clean ;;
h)
help
exit_clean ;;
*)
echo -e "\n${YEL}Option ${RED}$1${YEL} not recognized... Refer to help below!${CRS}"
help
exit_clean ;;
esac
done
## DEPENDENCY CHECK
dependency_check
## UPDATE
update_helium
## CLEAN
exit_clean