Compare commits

...

64 commits

Author SHA1 Message Date
bb47814565 Merge pull request 'WIP make main stable' (#1) from main into stable
Reviewed-on: #1
2025-12-28 00:33:43 +01:00
e216d9cc4b Script version bumped 2025-12-28 00:29:54 +01:00
d480d5c657 update 2025-12-28 00:25:25 +01:00
a638306f2f update 2025-12-28 00:20:53 +01:00
5cc2a37985 update 2025-12-28 00:19:05 +01:00
08982535e7 Cleanup 2025-12-28 00:18:58 +01:00
2995cc29b1 update 2025-12-27 23:33:11 +01:00
75c5bffbe9 Multiple variables added 2025-12-27 23:33:01 +01:00
17d2815039 Fixed faulty sed command in removal function 2025-12-27 22:30:02 +01:00
2d8c254621 update 2025-12-27 18:53:36 +01:00
0bdf836eb3 Readme update 2025-12-27 15:21:24 +01:00
f79c997f16 Alias removed 2025-12-27 15:17:22 +01:00
5aa8ee1915 Readme update 2025-12-27 15:17:00 +01:00
c1ec805b1b Version bumped up 2025-12-27 14:25:16 +01:00
99755d40fc update 2025-12-27 13:10:09 +01:00
1a3927e689 Logging changed 2025-12-27 13:05:22 +01:00
a97e77a370 Fixed SED command 2025-12-27 12:58:40 +01:00
f072d0608c update 2025-12-27 12:52:09 +01:00
62d0671f03 Fixed missing variable 2025-12-27 12:51:52 +01:00
4f1d453e9e More accessible url variables 2025-12-27 12:34:17 +01:00
d1da40494b Log view function extended 2025-12-27 12:07:28 +01:00
9586095f86 Log View added; Removal extended 2025-12-27 11:53:59 +01:00
f42029b0f6 Log view function added 2025-12-27 11:53:18 +01:00
57c0770950 Fixed missing variable 2025-12-27 11:01:30 +01:00
6dccf9c1e4 Remote script check simplified; Icon added to desktop notification 2025-12-27 10:51:11 +01:00
2f8d7b8246 Remote script check simplified 2025-12-27 10:50:45 +01:00
69378db024 update 2025-12-27 00:01:25 +01:00
e394371b2c update 2025-12-26 23:52:12 +01:00
a03f59d3ee Launcher option added 2025-12-26 23:46:17 +01:00
5ad81a5997 Desktop notifications added 2025-12-26 23:34:50 +01:00
4a6741f581 Alias remover added 2025-12-26 22:34:10 +01:00
5e26f8e43b Version bumped 2025-12-26 22:14:42 +01:00
70a5db2ba2 -U option removed 2025-12-26 22:12:20 +01:00
a0ac02743a Alias refined 2025-12-26 22:10:11 +01:00
5a0913a29a update 2025-12-26 21:56:44 +01:00
0eec37352a add alias fixed 2025-12-24 14:41:06 +01:00
3bc94234cf add launcher fixed 2025-12-24 14:27:44 +01:00
932856401c add alias fixed 2025-12-24 14:19:07 +01:00
d962b1b1f0 Minor changes 2025-12-24 14:07:28 +01:00
238e02e8aa Minor changes 2025-12-24 14:02:56 +01:00
234df445f8 Minor changes 2025-12-24 13:59:53 +01:00
1c7c7163d0 Minor changes 2025-12-24 13:55:36 +01:00
d435cdb276 Minor changes 2025-12-24 13:53:16 +01:00
aa1e3831db To Do updated 2025-12-24 13:05:33 +01:00
0cf476a686 Readme & To Do updated 2025-12-24 13:03:16 +01:00
d65799e4a8 Alias for bashrc added 2025-12-24 11:24:52 +01:00
14b7be590a Minor changes 2025-12-24 11:19:53 +01:00
7203078768 Script updater extended 2025-12-24 11:11:25 +01:00
08ce780cee Minor changes 2025-12-24 10:57:28 +01:00
b4f3ea4e97 to do updated 2025-12-24 10:54:06 +01:00
3cbcd74f06 Launcher option added 2025-12-24 10:48:01 +01:00
1e88190670 Minor changes 2025-12-24 00:35:49 +01:00
4b041ff1d6 Structure change 2025-12-24 00:34:47 +01:00
d8392feac7 Alias for zsh working 2025-12-23 23:07:17 +01:00
0d99d8e325 update 2025-12-23 20:21:29 +01:00
b196c5104f Script updater ready for testing 2025-12-23 18:00:10 +01:00
c00811622c Typo fixed 2025-12-23 17:48:33 +01:00
f56c1ac3ea Script updater added 2025-12-23 17:47:06 +01:00
fe0546542f Output cleanup 2025-12-23 11:55:03 +01:00
a36f13a742 Launcher updater added 2025-12-23 00:54:23 +01:00
46b534fa48 to do updated 2025-12-23 00:15:33 +01:00
ebb5c25de6 to do updated 2025-12-23 00:15:24 +01:00
7717c5932c Post merge changes 2025-12-22 19:37:03 +01:00
529a81492f To Do recovered 2025-12-22 19:00:24 +01:00
6 changed files with 702 additions and 236 deletions

View file

@ -1,19 +1,73 @@
# 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
### Helium_Helper.sh
- Interactive installer and updater script
- Installs to `/home/<USER>/.apps/Helium` | changeable in line 27 `INSTALL_PATH`
- Interactive installer, updater & configuration script
- Installs to `/home/<USER>/.apps/Helium` | changeable in line 28 `INSTALL_PATH`
- Assumes:
- Presence of `/home/<USER>/.apps/Helium` when updating | changeable in line 27 `INSTALL_PATH`
- Executable named `Helium.AppImage` | for convenience so launchers don't have to be edited at each update
- Keeps prior AppImage as `Helium.old` which will be replaced at every update
- Presence of `/home/<USER>/.apps/Helium` when updating | changeable in line 28 `INSTALL_PATH`
- Executable named `Helium.AppImage`
- Keeps backups of
- `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`
### Helium_Auto_Update.sh
- Automatic updater script
- Installs to `/home/<USER>/.apps/Helium` | changeable in line 8 `INSTALL_PATH`
- Adds options to launcher which are run by `helium_launcher_updater.sh`
- Update Helium
- Update Script
- View Log
- Run `helium_helper.sh -h` for help
---
### Helium_Launcher_Update.sh
- Update Helium from launcher
- Assumes:
- Presence of `/home/<USER>/.apps/Helium` when updating | changeable in line 8 `INSTALL_PATH`
- Executable named `helium-browser.AppImage` | for convenience so launchers don't have to be edited at each update
- Loggs to `/home/<USER>/.apps/Helium/updateLog`
- Keeps prior AppImage as `helium-browser.OldAppImage` which will be replaced at every update
- Presence of `/home/<USER>/.apps/Helium` when updating | changeable in line 19 `INSTALL_PATH`
- Executable named `Helium.AppImage`
- Loggs to `/home/<USER>/.apps/Helium/assets/logs`
- Keeps backups of
- `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
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;
Actions=new-window;new-private-window;
Actions=new-window;new-private-window;update;update-script;show-log;
X-AppImage-Version=%APP_VERSION%
[Desktop Action new-window]
@ -22,3 +22,14 @@ Exec=%APP_LOCATION%
Name=New Incognito Window
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%

82
devdoc.md Normal file
View file

@ -0,0 +1,82 @@
# 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
```

View file

@ -1,94 +0,0 @@
#!/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,7 +1,5 @@
#!/bin/bash
# Helium BOWSER INSTALL & UPDATE SCRIPT ---> INTERACTIVE
########## PREREQUISITES ###########
set -e
@ -16,22 +14,30 @@ CRS="\e[0m"
## GLOBAL VARIABLES
APP_NAME="Helium"
APP_NAME_LONG="Helium Web Browser"
SOURCE="GitHub"
ARCH="x86_64"
FILE_EXTENSION="AppImage"
APP_SOURCE="GitHub"
SCRIPT_NAME="$APP_NAME Helper Script"
SCRIPT_FILE_NAME="helium_helper.sh"
SCRIPT_VERSION="0.5.1"
DATE=$(date)
AUTO_SCRIPT_FILE_NAME="helium_launcher_update.sh"
SCRIPT_VERSION="0.5.7"
ALIAS="update-helium"
## LOCATIONS
TMP=/tmp/$APP_NAME
INSTALL_PATH=$HOME/.apps/$APP_NAME
CONFIG_PATH=$INSTALL_PATH/assets
BACKUP_PATH=$INSTALL_PATH/assets/backup
LOG_PATH=$INSTALL_PATH/assets/logs
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
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 ###########
@ -58,7 +64,6 @@ dependency_check () {
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}"
exit_clean
exit
fi
}
@ -70,8 +75,8 @@ local_check() {
install_helium
exit
elif ! [ -f "$INSTALL_PATH/$APP_NAME.AppImage" ] ; then
echo -e "\n ${RED}$APP_NAME_LONG directory found but no executable named ${CYN}$APP_NAME.AppImage${RED}!${CRS}"
elif ! [ -f "$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" ] ; then
echo -e "\n ${RED}$APP_NAME_LONG directory found but no executable named ${CYN}$APP_NAME.$FILE_EXTENSION${RED}!${CRS}"
install_helium
exit
@ -80,31 +85,31 @@ local_check() {
### INSTALL
install_helium() {
if [ -f "$INSTALL_PATH/$APP_NAME.AppImage" ] ; then
echo -e "\n ${CYN}$APP_NAME_LONG AppImage found! Trying to update...${CRS}"
if [ -f "$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" ] ; then
echo -e "\n ${YEL}$APP_NAME_LONG AppImage found! Trying to update...${CRS}"
update_helium
exit
fi
while true ; do
read -p " Download and install $APP_NAME_LONG from $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
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 --show-progress
chmod +x $TMP/$GIT_FILENAME
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}')
wget -P $TMP $DOWNLOAD_URL -q --show-progress
chmod +x $TMP/$APP_SOURCE_FILENAME
mkdir -p $INSTALL_PATH
mv $TMP/$GIT_FILENAME $INSTALL_PATH/$APP_NAME.AppImage
echo -e "\n ${GRN}$APP_NAME_LONG is installed!${CRS}\n"
mv $TMP/$APP_SOURCE_FILENAME $INSTALL_PATH/$APP_NAME.$FILE_EXTENSION
add_launcher
exit_clean
echo -e "\n ${GRN}$APP_NAME_LONG is installed!${CRS}\n"
break
elif [[ "$CONFIRM_INSTALL" == "n" || "$CONFIRM_INSTALL" == "N" ]] ; then
echo -e "\n ${RED}Installation cancelled!${CRS}\n"
exit
echo -e " ${RED}Cancelled!${CRS}"
break
else
echo -e " ${YEL}Invalid response!${CRS}\n"
@ -114,36 +119,45 @@ install_helium() {
done
}
### LAUNCHER --> TO DO
### LAUNCHER
add_launcher() {
if [ -f "$LAUNCHER_PATH/$APP_NAME.desktop" ] ; then
echo -e "\n ${RED}${APP_NAME}.desktop already exists!${CRS}"
exit
echo -e "\n ${YEL}${APP_NAME}.desktop already exists!${CRS}"
elif [ -f "$INSTALL_PATH/$APP_NAME.AppImage" ] ; then
elif [ -f "$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" ] ; then
while true ; do
echo
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
LAUNCHER_URL=https://lab.c95.org/fr4nz/helium-helper/raw/branch/stable/assets/launcher/helium.desktop.template
ICON_URL=https://lab.c95.org/fr4nz/helium-helper/raw/branch/stable/assets/icon/helium.png
LOCAL_VERSION=$($INSTALL_PATH/$APP_NAME.AppImage --version | awk '{print $2}')
LAUNCHER_URL=$REMOTE_REPO_URL/assets/launcher/helium.desktop.template
ICON_URL=$REMOTE_REPO_URL/assets/icon/helium.png
AUTO_SCRIPT_URL=$REMOTE_REPO_URL/$AUTO_SCRIPT_FILE_NAME
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 $ICON_URL -q --show-progress
sed -i "s|%APP_LOCATION%|$INSTALL_PATH/$APP_NAME.AppImage|" $TMP/helium.desktop.template
sed -i "s|%ICON_LOCATION%|$CONFIG_PATH/icon/helium.png|" $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|%APP_VERSION%|$LOCAL_VERSION|" $TMP/helium.desktop.template
mkdir -p $LAUNCHER_PATH $BACKUP_PATH $CONFIG_PATH/icon
cp $TMP/helium.desktop.template $LAUNCHER_PATH/$APP_NAME.desktop
mv $TMP/helium.desktop.template $BACKUP_PATH/$APP_NAME.desktop.backup
mv $TMP/helium.png $CONFIG_PATH/icon
echo -e "\n ${GRN}$APP_NAME_LONG launcher is set up!${CRS}\n"
exit_clean
sed -i "s|%QUIET_UPDATE_SCRIPT%|$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME|" $TMP/helium.desktop.template
sed -i "s|%SCRIPT_UPDATE%|$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME -S|" $TMP/helium.desktop.template
sed -i "s|%OPEN_LOG_EDITOR%|$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME -L|" $TMP/helium.desktop.template
mv $TMP/helium.desktop.template $LAUNCHER_PATH/$APP_NAME.desktop
mv $TMP/helium.png $ASSET_PATH/icon
echo -e "\n ${GRN}$APP_NAME_LONG launcher is set up!${CRS}"
break
elif [[ "$CONFIRM_LAUNCHER" == "n" || "$CONFIRM_LAUNCHER" == "N" ]] ; then
echo -e "\n ${RED}Launcher creation cancelled!${CRS}\n"
exit
echo -e " ${RED}Launcher not added!${CRS}"
break
else
echo -e " ${YEL}Invalid response!${CRS}\n"
@ -160,14 +174,45 @@ add_launcher() {
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_helium() {
LOCAL_VERSION=$($INSTALL_PATH/$APP_NAME.AppImage --version | 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}')
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 "$GIT_VERSION" ] ; then
echo -e "\n ${RED}Empty version tag from ${CYN}$SOURCE${RED}! Can't compare, exiting...${CRS}"
if [ -z "$APP_SOURCE_VERSION" ] ; then
echo -e "\n ${RED}Empty version tag from ${CYN}$APP_SOURCE${RED}! Can't compare, exiting...${CRS}"
exit
elif [ -z "$LOCAL_VERSION" ] ; then
@ -178,36 +223,38 @@ update_helium() {
### COMPARE LOCAL & REMOTE VERSION
LOCAL_VERSION_NUM=$(echo $LOCAL_VERSION | tr -d .)
GIT_VERSION_NUM=$(echo $GIT_VERSION | tr -d .)
APP_SOURCE_VERSION_NUM=$(echo $APP_SOURCE_VERSION | tr -d .)
if [ "$GIT_VERSION" == "$LOCAL_VERSION" ] ; then
if [ "$APP_SOURCE_VERSION" == "$LOCAL_VERSION" ] ; then
echo -e "\n ${GRN}$APP_NAME_LONG is already up-to-date!${CRS}\n"
elif [ "$GIT_VERSION_NUM" -gt "$LOCAL_VERSION_NUM" ] ; then
echo -e "\n ${RED}$APP_NAME_LONG is updatable!${CRS}\n"
elif [ "$APP_SOURCE_VERSION_NUM" -gt "$LOCAL_VERSION_NUM" ] ; then
echo -e "\n ${LCY}$APP_NAME_LONG is updatable!${CRS}\n"
echo -e " ${CYN}Local Version :\t${CRS}${LOCAL_VERSION}"
echo -e " ${CYN}$SOURCE Version :\t${CRS}${GIT_VERSION}\n"
echo -e " ${CYN}$APP_SOURCE Version :\t${CRS}${APP_SOURCE_VERSION}\n"
while true ; do
read -p " Download and update $APP_NAME_LONG from $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
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}')
mkdir -p $TMP
wget -P $TMP $GIT_URL -q --show-progress
chmod +x $TMP/$GIT_FILENAME
if [ -f "$INSTALL_PATH/$APP_NAME.old" ] ; then
rm $INSTALL_PATH/$APP_NAME.old
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}')
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.old" ] ; then
rm $BACKUP_PATH/$APP_NAME.old
fi
mv $INSTALL_PATH/$APP_NAME.AppImage $INSTALL_PATH/$APP_NAME.old
mv $TMP/$GIT_FILENAME $INSTALL_PATH/$APP_NAME.AppImage
mv $INSTALL_PATH/$APP_NAME.$FILE_EXTENSION $BACKUP_PATH/$APP_NAME.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 -e "\n ${GRN}$APP_NAME_LONG is up-to-date !${CRS}\n"
break
elif [[ "$CONFIRM" == "n" || "$CONFIRM" == "N" ]] ; then
echo -e "\n ${RED}Update cancelled!${CRS}\n"
echo -e " ${RED}Cancelled!${CRS}"
exit
else
@ -220,7 +267,7 @@ update_helium() {
else
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}$SOURCE Version :\t${CRS}${GIT_VERSION}\n"
echo -e " ${CYN}$APP_SOURCE Version :\t${CRS}${APP_SOURCE_VERSION}\n"
echo -e " ${RED}Update failed... Exiting...${CRS}\n"
exit
@ -228,15 +275,14 @@ update_helium() {
}
### AUTOMATIC UPDATE --> TO DO
### AUTOMATIC UPDATE --> TO DO?
auto_update() {
if ! [ -f "$INSTALL_PATH/$APP_NAME.AppImage" ] ; then
if ! [ -f "$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" ] ; then
echo -e "\n ${RED}$APP_NAME AppImage not found! Can't add auto update script...${CRS}"
exit
else
echo -e "\n ${RED}Not implemented yet...${CRS}"
exit
fi
}
@ -246,27 +292,46 @@ remove_helium() {
if [ -d "$INSTALL_PATH" ] ; then
while true ; do
read -p " Remove $APP_NAME_LONG folder $INSTALL_PATH? (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
rm -rf $INSTALL_PATH
rm $LAUNCHER_PATH/$APP_NAME.desktop
echo -e "\n ${RED}$APP_NAME_LONG removed!${CRS}\n"
exit
if [[ "$CONFIRM_REMOVE" == "" || "$CONFIRM_REMOVE" == "y" || "$CONFIRM_REMOVE" == "Y" ]] ; then
rm -rf $INSTALL_PATH
if [ -f "$LAUNCHER_PATH/$APP_NAME.desktop" ] ; then
rm $LAUNCHER_PATH/$APP_NAME.desktop
fi
elif [[ "$CONFIRM_REMOVE" == "n" || "$CONFIRM_REMOVE" == "N" ]] ; then
echo -e "\n ${RED}Removal cancelled!${CRS}\n"
exit
if [ -f "$SCRIPT_PATH/$SCRIPT_FILE_NAME" ] ; then
rm $SCRIPT_PATH/$SCRIPT_FILE_NAME
fi
else
echo -e " ${YEL}Invalid response!${CRS}\n"
if [ -f "$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME" ] ; then
rm $SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME
fi
fi
if [ -f "$HOME/.zshrc" ] ; then
sed -i "/$ALIAS/d" $HOME/.zshrc
done
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
echo -e "\n ${RED}Can't remove $APP_NAME_LONG! ${YEL}$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
fi
@ -274,32 +339,114 @@ remove_helium() {
### SCRIPT VERSION
script_version() {
echo -e "\n ${CYN}$APP_NAME_LONG Helper Script Version : ${GRN}${SCRIPT_VERSION}${CRS}\n"
echo -e "\n ${CYN}$APP_NAME_LONG Helper Script Version :${CRS} $SCRIPT_VERSION\n"
exit
}
### UPDATE SCRIPT --> TO DO
### UPDATE SCRIPT
update_script() {
if ! [ -f "$INSTALL_PATH/$APP_NAME.AppImage" ] ; then
echo -e "\n ${RED}$APP_NAME_LONG AppImage not found! Can't update script...${CRS}"
### CHECK FOR LOCAL SCRIPT
if ! [ -f "$SCRIPT_PATH/$SCRIPT_FILE_NAME" ] ; then
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
else
echo -e "\n ${RED}Not implemented yet...${CRS}"
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
echo -e "\n ${RED}Version tags malformed or you are using a Beta version!${CRS}\n"
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"
fi
}
### COMPARE APPIMAGE VERSION
compare_version() {
LOCAL_VERSION=$($INSTALL_PATH/$APP_NAME.AppImage --version | 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}')
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 "$GIT_VERSION" ] ; then
echo -e "\n ${RED}Empty version tag from ${CYN}$SOURCE${RED}! Can't compare, exiting...${CRS}"
if [ -z "$APP_SOURCE_VERSION" ] ; then
echo -e "\n ${RED}Empty version tag from ${CYN}$APP_SOURCE${RED}! Can't compare, exiting...${CRS}"
exit
elif [ -z "$LOCAL_VERSION" ] ; then
@ -310,24 +457,24 @@ compare_version() {
### COMPARE LOCAL & REMOTE VERSION
LOCAL_VERSION_NUM=$(echo $LOCAL_VERSION | tr -d .)
GIT_VERSION_NUM=$(echo $GIT_VERSION | tr -d .)
APP_SOURCE_VERSION_NUM=$(echo $APP_SOURCE_VERSION | tr -d .)
if [ "$GIT_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 " ${CYN}Local Version :\t${CRS}${LOCAL_VERSION}"
echo -e " ${CYN}$SOURCE Version :\t${CRS}${GIT_VERSION}\n"
echo -e " ${CYN}$APP_SOURCE Version :\t${CRS}${APP_SOURCE_VERSION}\n"
exit
elif [ "$GIT_VERSION_NUM" -gt "$LOCAL_VERSION_NUM" ] ; then
elif [ "$APP_SOURCE_VERSION_NUM" -gt "$LOCAL_VERSION_NUM" ] ; then
echo -e "\n ${YEL}$APP_NAME_LONG is updatable!${CRS}\n"
echo -e " ${CYN}Local Version :\t${CRS}${LOCAL_VERSION}"
echo -e " ${CYN}$SOURCE Version :\t${CRS}${GIT_VERSION}\n"
echo -e " ${CYN}$APP_SOURCE Version :\t${CRS}${APP_SOURCE_VERSION}\n"
exit
else
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}$SOURCE Version :\t${CRS}${GIT_VERSION}\n"
echo -e " ${CYN}$APP_SOURCE Version :\t${CRS}${APP_SOURCE_VERSION}\n"
echo -e " ${RED}Update failed ... Exiting ...${CRS}\n"
exit
@ -338,16 +485,17 @@ compare_version() {
help() {
echo -e "\n${LCY}${SCRIPT_NAME}${CRS}\n"
echo -e "$APP_NAME_LONG installer & updater script\n"
echo -e "Syntax: $SCRIPT_FILE_NAME [ -i | -L | -u | -r | -c | -s | -h ]\n" # | -U | -S
echo -e "Syntax: $SCRIPT_FILE_NAME [ -i | -l | -a | -u | -r | -c | -s | -S | -h ]\n" # | -U |
echo -e "Options:\n"
echo -e "\t-i\tDownload & install $APP_NAME_LONG from $SOURCE"
echo -e "\t-L\tCreate desktop launcher"
echo -e "\t-u\tDownload & update $APP_NAME_LONG from $SOURCE"
echo -e "\t-i\tDownload & install $APP_NAME_LONG from $APP_SOURCE"
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 $APP_SOURCE"
#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-c\tCompare local to remote version"
echo -e "\t-s\tShow script version"
#echo -e "\t-S\tUpdate script ${RED}--> Not yet working${CRS}"
echo -e "\t-S\tUpdate $SCRIPT_FILE_NAME"
echo -e "\t-h\tPrint this help page.\n"
echo -e "Configured locations:\n"
echo -e "\t${CYN}${INSTALL_PATH}${CRS}\t\tInstall location"
@ -368,73 +516,70 @@ exit_clean() {
########## MAIN ##########
## GET OPTIONS
while getopts ":i,:L,:u,:U,:r,:c,:s,:S,:h" OPTION ; do
while getopts ":i,:l,:a,:u,:U,:r,:c,:s,:S,:h" OPTION ; do
case $OPTION in
i)
echo -e "\n ${YEL}Installing $APP_NAME_LONG...${CRS}"
echo -e "\n ${CYN}Installing $APP_NAME_LONG...${CRS}"
dependency_check
local_check
install_helium
exit_clean
exit ;;
exit_clean ;;
L)
echo -e "\n ${YEL}Adding $APP_NAME_LONG launcher...${CRS}"
l)
echo -e "\n ${CYN}Adding $APP_NAME_LONG launcher...${CRS}"
dependency_check
local_check
add_launcher
exit_clean
exit_clean ;;
a)
echo -e "\n ${CYN}Adding alias...${CRS}"
add_alias
exit ;;
u)
echo -e "\n ${YEL}Updating $APP_NAME_LONG...${CRS}"
echo -e "\n ${CYN}Updating $APP_NAME_LONG...${CRS}"
dependency_check
local_check
update_helium
exit_clean
exit ;;
exit_clean ;;
U)
echo -e "\n ${YEL}Enabling automatic updates...${CRS}"
echo -e "\n ${CYN}Enabling automatic updates...${CRS}"
dependency_check
local_check
auto_update
exit_clean
exit ;;
exit_clean ;;
r)
echo -e "\n ${YEL}Removing $APP_NAME_LONG...${CRS}"
echo -e "\n ${CYN}Removing $APP_NAME_LONG...${CRS}"
remove_helium
exit ;;
c)
echo -e "\n ${YEL}Comparing remote to local version...${CRS}"
echo -e "\n ${CYN}Comparing remote to local version...${CRS}"
dependency_check
local_check
compare_version
exit_clean
exit ;;
exit_clean ;;
s)
script_version
exit ;;
S)
echo -e "\n ${YEL}Updating script...${CRS}"
echo -e "\n ${CYN}Updating script...${CRS}"
dependency_check
local_check
update_script
exit_clean
exit ;;
exit_clean ;;
h)
help
exit;;
exit ;;
*)
echo -e "\n${YEL}Option ${RED}-t${YEL} not recognized... Refer to help below!${CRS}"
echo -e "\n${YEL}Option ${RED}$1${YEL} not recognized... Refer to help below!${CRS}"
help
exit;;
exit ;;
esac

268
helium_launcher_update.sh Executable file
View file

@ -0,0 +1,268 @@
#!/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