Compare commits

..

11 commits
stable ... main

5 changed files with 443 additions and 57 deletions

1
.gitignore vendored
View file

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

View file

@ -10,7 +10,7 @@ With "little" tinkering it should be possible to apply this script to install, u
```
---
### 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
wget https://lab.c95.org/fr4nz/helium-helper/raw/branch/main/helium_helper.sh && chmod +x helium_helper.sh
```
@ -30,7 +30,7 @@ Run script with install parameter _-i_
### Updating
**From launcher** (if added during install or by running `./helium_helper.sh -l`)
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 and configuration and write a log.
**Terminal**
@ -80,7 +80,7 @@ Backing up, by default, pulls all important files, folders & configuration and c
### Helium_Launcher_Update.sh
- Update Helium from launcher
- Assumes:
- Presence of `$HOME/.apps/Helium` when updating | changeable in line 22 `INSTALL_PATH`
- Presence of `$HOME/.apps/Helium` when updating | changeable in line 21 `INSTALL_PATH`
- Executable named `Helium.AppImage`
- Loggs to `$HOME/.apps/Helium/assets/logs`
- Keeps backup archives from

98
devdoc.md Normal file
View file

@ -0,0 +1,98 @@
# 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
- Documentation/Wiki updated
---
- Shell detection added
- Alias support for fish added
- Removal process refined and adapted to fish
- Browser config backup
---
- Arch detection working
- Clean Up
- Copy Paste mistake fixed
- Backup process rewritten
- Custom backup method to pass as argument
- Custom backup path to pass as argument
- Default if left blank
- Removal process adjusted
- $1 verifier added
- Readme updated
---
- Notification adjusted for KDE & GNOME
## Add/To Do
- Roll back from backup
- Update Readme
- Make functional launcher optional
- Variable transfer script
## 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

@ -24,13 +24,14 @@ SCRIPT_NAME="$APP_NAME Helper Script"
SCRIPT_FILE_NAME="helium_helper.sh"
AUTO_SCRIPT_FILE_NAME="helium_launcher_update.sh"
SCRIPT_VERSION="0.5.9.1"
ALIAS="update-helium"
ALIAS="helium-helper"
DATE=$(date +"%d%m%y")
## LOCATIONS
TMP=/tmp/$APP_NAME
INSTALL_PATH=$HOME/.apps/$APP_NAME
APP_CONFIG_PATH=$HOME/.config/net.imput.helium
INSTALL_PATH=$HOME/.apps/$APP_NAME\1
APP_CONFIG_FOLDER="net.imput.helium"
APP_CONFIG_PATH=$HOME/.config/$APP_CONFIG_FOLDER
ASSET_PATH=$INSTALL_PATH/assets
BACKUP_PATH=$ASSET_PATH/backup
LOG_PATH=$ASSET_PATH/logs
@ -39,14 +40,14 @@ LAUNCHER_PATH=$HOME/.local/share/applications
SCRIPT_PATH=$HOME/.local/bin
## REMOTE LOCATIONS
REMOTE_REPO_BRANCH="stable"
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 ############################
### DEPENDENCIES
#################### DEPENDENCY CHECK ####################
cmd_query() {
if ! command -v $PACKAGE > /dev/null 2>&1 ; then
echo " - $PACKAGE" >> $TMP/missingDeps
@ -63,13 +64,12 @@ dependency_check () {
done
if [ -f "$TMP/missingDeps" ] ; then
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 " ${RED}Following dependencies are missing :\n\n${CRS}$(cat $TMP/missingDeps)\n\n ${CYN}Please install and re-run script !${CRS}\n"
exit_clean
fi
}
### SHELL CHECK
#################### SHELL CHECK ####################
shell_query() {
if [ "$(echo $SHELL | grep "$SHELL_OPTION")" ] ; then
ACTIVE_SHELL=$SHELL_OPTION
@ -85,7 +85,7 @@ shell_check() {
done
}
### ARCH CHECK
#################### ARCH CHECK ####################
arch_check() {
if [ "$ARCH_OVERRIDE" ] ; then
ARCH=$ARCH_OVERRIDE
@ -106,7 +106,7 @@ arch_check() {
fi
}
### CHECK LOCAL INSTALL
#################### LOCAL INSTALL CHECK ####################
local_check() {
if ! [ -d "$INSTALL_PATH" ] ; then
echo -e "\n ${YEL}$APP_NAME_LONG directory not found!${CRS}\n"
@ -120,7 +120,33 @@ local_check() {
fi
}
### INSTALL
#################### VARIABLE CHECK ####################
path_correction() {
if [ "$TARGET" == "INSTALL" ] ; then
TARGET_PATH=$INSTALL_PATH
elif [ "$TARGET" == "BACKUP" ] ; then
TARGET_PATH=$BACKUP_PATH
fi
if ! [ ${TARGET_PATH:0:1} == "/" ] ; then
TARGET_PATH=$(pwd)/$TARGET_PATH
fi
REVERSE_PATH=$(echo $TARGET_PATH | rev)
if [ "${REVERSE_PATH:0:1}" == "/" ] ; then
TARGET_PATH=$(echo $TARGET_PATH | sed "s|.$||")
fi
if [ "$TARGET" == "INSTALL" ] ; then
INSTALL_PATH=$TARGET_PATH
elif [ "$TARGET" == "BACKUP" ] ; then
BACKUP_PATH=$TARGET_PATH
fi
}
#################### INSTALL ####################
install_application() {
if [ -f "$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" ] ; then
echo -e " ${YEL}$APP_NAME_LONG AppImage found! Trying to update...${CRS}"
@ -153,7 +179,7 @@ install_application() {
done
}
### LAUNCHER
#################### LAUNCHER ####################
add_launcher() {
if [ -f "$LAUNCHER_PATH/$APP_NAME.desktop" ] ; then
echo -e "\n ${YEL}${APP_NAME}.desktop already exists!${CRS}"
@ -206,7 +232,7 @@ add_launcher() {
fi
}
### ALIAS
#################### ALIAS ####################
add_alias() {
if ! [ -f "$SCRIPT_PATH/$SCRIPT_FILE_NAME" ] ; then
mkdir -p $SCRIPT_PATH
@ -258,18 +284,18 @@ add_alias() {
fi
}
### UPDATE
#################### UPDATE ####################
update_application() {
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 -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}$APP_SOURCE${RED}! Can't compare, exiting...${CRS}\n"
exit
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}\n"
exit
fi
@ -317,9 +343,10 @@ update_application() {
fi
}
### BACKUP
#################### BACKUP ####################
call_backup() {
if [ -f $BACKUP_PATH\/$APP_NAME\.$BACKUP_METHOD\.backup_* ] ; then
BACKUP_COUNT=$(ls $BACKUP_PATH/$APP_NAME.$BACKUP_METHOD.backup_* 2> /dev/null | wc -l)
if [[ "$BACKUP_COUNT" -gt "0" ]] ; then
echo -e "\n ${CYN}A $BACKUP_METHOD backup already exists!${CRS}\n"
while true ; do
@ -331,7 +358,7 @@ call_backup() {
elif [[ "$OVERWRITE_BACKUP" == "y" || "$OVERWRITE_BACKUP" == "Y" ]] ; then
echo -e "\n ${YEL}Overwriting backup...${CRS}"
rm $BACKUP_PATH/$APP_NAME.$BACKUP_METHOD.backup_*
rm -rf $BACKUP_PATH/$APP_NAME.$BACKUP_METHOD.backup_*
${BACKUP_METHOD}_backup
break
@ -341,10 +368,64 @@ call_backup() {
done
else
${BACKUP_METHOD}_backup
${BACKUP_METHOD}_backup
fi
}
backup_logger() {
echo "### $APP_NAME_LONG CONFIG SNAPSHOT $(date) ###" >> $TMP/backup/conf_log
echo >> $TMP/backup/conf_log
echo -e "\n - ${CRS}Creating ${CYN}config log${CRS}...${CRS}"
shell_check
if [ "$ACTIVE_SHELL" == "zsh" ] ; then
if [ "$(cat $HOME/.zshrc | grep "$ALIAS")" ] ; then
echo " # Shell : $ACTIVE_SHELL" >> $TMP/backup/conf_log
echo " # Alias : TRUE" >> $TMP/backup/conf_log
fi
elif [ "$ACTIVE_SHELL" == "bash" ] ; then
if [ "$(cat $HOME/.bashrc | grep "$ALIAS")" ] ; then
echo " # Shell : $ACTIVE_SHELL" >> $TMP/backup/conf_log
echo " # Alias : TRUE" >> $TMP/backup/conf_log
fi
elif [ "$ACTIVE_SHELL" == "fish" ] ; then
if [ "$(cat $HOME/.config/fish/config.fish | grep "source $HOME/.config/fish/$ALIAS.fish")" ] ; then
echo " # Shell : $ACTIVE_SHELL" >> $TMP/backup/conf_log
echo " # Alias : TRUE" >> $TMP/backup/conf_log
fi
else
echo " # Shell : $ACTIVE_SHELL" >> $TMP/backup/conf_log
echo " # Alias : FALSE" >> $TMP/backup/conf_log
fi
LOGGABLE=("$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 LOG_ITEM in ${LOGGABLE[@]} ; do
if [ -d "$LOG_ITEM" ] ; then
echo " # Folder : $LOG_ITEM" >> $TMP/backup/conf_log
elif [ -f "$LOG_ITEM" ] ; then
echo " # File : $LOG_ITEM" >> $TMP/backup/conf_log
else
echo " # N/A : $LOG_ITEM" >> $TMP/backup/conf_log
fi
done
echo >> $TMP/backup/conf_log
echo >> $TMP/backup/conf_log
echo "### $SCRIPT_FILE_NAME VARIABLES ###" >> $TMP/backup/conf_log
echo >> $TMP/backup/conf_log
echo "INSTALL_PATH=$INSTALL_PATH" >> $TMP/backup/conf_log
echo "SCRIPT_PATH=$SCRIPT_PATH" >> $TMP/backup/conf_log
echo "LAUNCHER_PATH=$LAUNCHER_PATH" >> $TMP/backup/conf_log
echo "APP_CONFIG_PATH=$APP_CONFIG_PATH" >> $TMP/backup/conf_log
echo >> $TMP/backup/conf_log
}
backup_file_collector() {
for BACKUP_ITEM in ${BACKUPABLE[@]} ; do
@ -357,6 +438,8 @@ backup_file_collector() {
cp $BACKUP_ITEM $TMP/backup
fi
done
backup_logger
}
script_backup() {
@ -426,9 +509,9 @@ pack_backup() {
COMPRESSION_METHOD=("pbzip2" "gzip" "bzip2" "zip")
until [ "$BACKUP_COMPRESSION" ] ; do
for COMPRESSION_TYPE in ${COMPRESSION_METHOD[@]} ; do
for COMPRESSION_TYPE in "${COMPRESSION_METHOD[@]}" ; do
if [ "$(command -v $COMPRESSION_TYPE) > /dev/null 2>&1" ] ; then
if command -v $COMPRESSION_TYPE > /dev/null 2>&1 ; then
BACKUP_COMPRESSION=$COMPRESSION_TYPE
break
fi
@ -478,7 +561,170 @@ pack_backup() {
fi
}
### REMOVE
#################### RESTORE BACKUP ####################
select_backup() {
BACKUP_COUNT=$(ls $BACKUP_PATH/$APP_NAME.$BACKUP_TYPE.backup_* 2> /dev/null | wc -l)
if [ "$BACKUP_COUNT" -gt "1" ] ; then
i=1
mkdir -p $TMP/backup_restore
CWD=$(pwd)
cd $BACKUP_PATH
RESTORE_OPTIONS=$(ls -lt $APP_NAME\.$BACKUP_TYPE\.backup_* | awk '{print $9}')
for RESTORE_TARGET in ${RESTORE_OPTIONS[@]} ; do
echo " $i - $RESTORE_TARGET" >> $TMP/backup_restore/options
i=$(($i+1))
done
cd $CWD
echo -e "\n ${CYN}Choose one of the $BACKUP_COUNT options below${CRS}\n"
echo -e "$(cat $TMP/backup_restore/options)\n"
while true ; do
read -p " Enter backup ID (1-$BACKUP_COUNT) or exit : " RESTORE_SELECT
if [[ "$RESTORE_SELECT" -le "$BACKUP_COUNT" && "$RESTORE_SELECT" -gt "0" ]] ; then
RESTORE_FILE=$(sed -n $RESTORE_SELECT\p $TMP/backup_restore/options | awk '{print $3}')
BACKUP_TYPE=$(echo $RESTORE_FILE | awk -F'.' '{print $2}')
RESTORE_SOURCE=$BACKUP_PATH/$RESTORE_FILE
break
elif [[ "$RESTORE_SELECT" == "exit" || "$RESTORE_SELECT" == "EXIT" ]] ; then
echo
exit_clean
else
echo -e "\n ${YEL}Invalid response!${CRS}\n"
fi
done
elif [ "$BACKUP_COUNT" -lt "1" ] ; then
echo -e " ${RED}No backup archive found in ${CYN}$BACKUP_PATH${RED}!${CRS}\n"
exit_clean
else
RESTORE_SOURCE=$(ls $BACKUP_PATH/$APP_NAME.$BACKUP_TYPE.backup_*)
RESTORE_FILE=$(echo $RESTORE_SOURCE | rev | awk -F'/' '{print $1}' | rev)
if [ "$BACKUP_TYPE" == "*" ] ; then
BACKUP_TYPE=$(file $RESTORE_SOURCE | awk '{print $1}' | awk -F'.' '{print $2}')
fi
fi
BACKUP_COMPRESSION=$(file $RESTORE_SOURCE | awk '{print $2}')
decompress_backup
configure_restore
restore_backup
}
decompress_backup() {
CWD=$(pwd)
mkdir -p $TMP/backup_restore
cd $TMP/backup_restore
echo -e "\n - ${CRS}Decompressing backup archive ${CYN}$RESTORE_FILE${CRS}...${CRS}\n"
cp $RESTORE_SOURCE .
if [ "$BACKUP_COMPRESSION" == "bzip2" ] ; then
tar -xjf $APP_NAME.*.backup_*.tar.bz2
rm $APP_NAME.*.backup_*.tar.bz2
elif [ "$BACKUP_COMPRESSION" == "gzip" ] ; then
tar -xzf $APP_NAME.*.backup_*.tar.gz
rm $APP_NAME.*.backup_*.tar.gz
elif [ "$BACKUP_COMPRESSION" == "zip" ] ; then
unzip $APP_NAME.*.backup_*.tar.zip
tar -xf $APP_NAME.*.backup_*.tar
rm $APP_NAME.*.backup_*.tar.zip $APP_NAME.*.backup_*.tar.zip
else
echo -e " ${YEL}TBA...${CRS}\n" #######################################################################
fi
}
configure_restore() {
echo -e " - ${CRS}Analysing ${CYN}$BACKUP_TYPE${CRS} backup content...${CRS}\n"
RESTORABLE=("$APP_NAME.$FILE_EXTENSION" "$SCRIPT_FILE_NAME" "$AUTO_SCRIPT_FILE_NAME" "$APP_NAME.desktop" "$APP_CONFIG_FOLDER")
for RESTORE_ITEM in ${RESTORABLE[@]} ; do
if [ -d "$RESTORE_ITEM" ] ; then
if [ -d "$APP_CONFIG_PATH" ] ; then
echo " - Folder : $RESTORE_ITEM | already present" >> $TMP/restore_conf
echo $RESTORE_ITEM >> $TMP/restore_check
else
echo " - Folder : $RESTORE_ITEM | not present" >> $TMP/restore_conf
fi
elif [ -f "$RESTORE_ITEM" ] ; then
if [[ -f "$INSTALL_PATH/$RESTORE_ITEM" || -f "$SCRIPT_PATH/$RESTORE_ITEM" || -f "$LAUNCHER_PATH/$RESTORE_ITEM" ]] ; then
echo " - File : $RESTORE_ITEM | already present" >> $TMP/restore_conf
echo "\"$RESTORE_ITEM\"" >> $TMP/restore_check
else
echo " - File : $RESTORE_ITEM | not present" >> $TMP/restore_conf
fi
fi
done
RESTORE_PATH=("INSTALL_PATH" "SCRIPT_PATH" "LAUNCHER_PATH" "APP_CONFIG_PATH")
#################################################################################################
for CHANGED in ${RESTORE_PATH[@]} ; do
LOCAL_PATH=$(echo \$$CHANGED)
echo $LOCAL_PATH
if [ "$(cat conf_log | grep $RESTORE_PATH | awk -F '=' '{print $2}')" == "$LOCAL_PATH" ] ; then
echo $(cat conf_log | grep "${CHANGED}_PATH") >> $TMP/restore_path_change
echo "${CHANGED}_PATH"
else
echo "BAD"
echo $(cat conf_log | grep "${CHANGED}_PATH")
fi
done
}
restore_backup() {
echo -e " ${LCY}Backup Content Summary${CRS}\n"
echo -e "$(cat $TMP/restore_conf)\n"
if [ -f "$TMP/restore_check" ] ; then
echo -e " ${RED}WARNING: Some items are existing on your system!${CRS}\n"
while true ; do
read -p " Overwrite existing? (y/N) : " RESTORE_OVERWRITE
if [[ "$RESTORE_OVERWRITE" == "" || "$RESTORE_OVERWRITE" == "n" || "$RESTORE_OVERWRITE" == "N" ]] ; then
echo -e "\n ${RED}Cancelled!${CRS}\n"
break
elif [[ "$RESTORE_OVERWRITE" == "y" || "$RESTORE_OVERWRITE" == "Y" ]] ; then
EXISTING=$(cat $TMP/restore_check)
for REPLACE in ${EXISTING[@]} ; do
rm -rf $REPLACE
done
fi
done
else
echo -e " ${CYN}The content above is about to be restored...${CRS}\n"
while true ; do
read -p " Proceed with changes? (Y/n) : " RESTORE_CONFIRM
if [[ "$RESTORE_CONFIRM" == "" || "$RESTORE_CONFIRM" == "y" || "$RESTORE_CONFIRM" == "Y" ]] ; then
echo -e " - ${CRS}Copying ${CYN}$BACKUP_TYPE${CRS} backup files...${CRS}\n"
elif [[ "$RESTORE_CONFIRM" == "n" || "$RESTORE_CONFIRM" == "N" ]] ; then
echo -e "\n ${RED}Cancelled!${CRS}\n"
break
fi
done
fi
}
#################### REMOVE ####################
remove_application() {
if [ -d "$INSTALL_PATH" ] ; then
@ -523,11 +769,11 @@ remove_application() {
break
elif [[ "$CONFIRM_REMOVE" == "n" || "$CONFIRM_REMOVE" == "N" ]] ; then
echo -e " ${RED}Cancelled!${CRS}"
echo -e "\n ${RED}Cancelled!${CRS}"
exit
else
echo -e " ${YEL}Invalid response!${CRS}\n"
echo -e "\n ${YEL}Invalid response!${CRS}\n"
fi
done
@ -537,12 +783,12 @@ remove_application() {
fi
}
### SCRIPT VERSION
#################### SCRIPT VERSION ####################
script_version() {
echo -e "\n ${CYN}$APP_NAME_LONG Helper Script Version : ${CRS}$SCRIPT_VERSION\n"
}
### 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"
@ -558,13 +804,12 @@ update_script() {
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
mkdir -p $SCRIPT_PATH
mkdir -p $TMP
mkdir -p $SCRIPT_PATH $TMP
wget -P $TMP $REMOTE_SCRIPT_URL -q
wget -P $TMP $REMOTE_REPO_URL/$AUTO_SCRIPT_FILE_NAME -q
chmod +x $TMP/$SCRIPT_FILE_NAME $TMP/$AUTO_SCRIPT_FILE_NAME
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}\n"
break
elif [[ "$CONFIRM_SCRIPT_INSTALL" == "n" || "$CONFIRM_SCRIPT_INSTALL" == "N" ]] ; then
@ -581,11 +826,11 @@ update_script() {
### 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}"
echo -e "\n ${RED}Empty version tag from ${CYN}local script${RED}! Can't compare, exiting...${CRS}\n"
exit
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}\n"
exit
fi
@ -602,7 +847,6 @@ update_script() {
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
@ -618,11 +862,11 @@ update_script() {
break
elif [[ "$CONFIRM_SCRIPT_UPDATE" == "n" || "$CONFIRM_SCRIPT_UPDATE" == "N" ]] ; then
echo -e " ${RED}Cancelled!${CRS}\n"
echo -e "\n ${RED}Cancelled!${CRS}\n"
break
else
echo -e " ${YEL}Invalid response!${CRS}\n"
echo -e "\n ${YEL}Invalid response!${CRS}\n"
fi
done
@ -633,7 +877,7 @@ update_script() {
fi
}
### COMPARE APP VERSION
#################### COMPARE APP 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"
@ -669,17 +913,18 @@ compare_version() {
fi
}
### HELP
#################### HELP ####################
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 | -a | -u | -b | -r | -c | -s | -S | -h ]\n"
echo -e "Syntax: $SCRIPT_FILE_NAME [ -i | -l | -a | -u | -b | -B | -r | -c | -s | -S | -h ]\n"
echo -e "Options:\n"
echo -e "\t-i\tInstall $APP_NAME_LONG from $APP_SOURCE"
echo -e "\t-l\tCreate desktop launcher"
echo -e "\t-a\tCreate alias for $SCRIPT_FILE_NAME"
echo -e "\t-u\tUpdate $APP_NAME_LONG from $APP_SOURCE"
echo -e "\t-b\tBackup $APP_NAME_LONG & configuration"
echo -e "\t-B\tRestore $APP_NAME_LONG & configuration from backup"
echo -e "\t-r\tRemove $APP_NAME_LONG"
echo -e "\t-c\tCompare local to remote version"
echo -e "\t-s\tShow script version"
@ -691,7 +936,7 @@ help() {
echo -e "\t${CYN}${SCRIPT_PATH}${CRS}\t\t\tScript location\n"
}
### EXIT CLEAN
#################### EXIT CLEAN ####################
exit_clean() {
if [ -d "$TMP" ] ; then
rm -rf $TMP
@ -700,10 +945,9 @@ exit_clean() {
exit
}
########## MAIN ##########
########################### MAIN ###########################
## GET OPTIONS
while getopts ":i,:l,:a,:u,:b,:r,:c,:s,:S,:h" OPTION ; do
while getopts ":i,:l,:a,:u,:b,:B,: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}"
@ -713,6 +957,7 @@ while getopts ":i,:l,:a,:u,:b,:r,:c,:s,:S,:h" OPTION ; do
case $OPTION in
i)
TARGET="INSTALL"
echo -e "\n ${YEL}Installing $APP_NAME_LONG...${CRS}\n"
if [ "$#" -gt "1" ] ; then
ALL_PARAMETER=$@
@ -725,6 +970,7 @@ while getopts ":i,:l,:a,:u,:b,:r,:c,:s,:S,:h" OPTION ; do
fi
dependency_check
arch_check
path_correction
install_application
exit_clean ;;
@ -759,6 +1005,7 @@ while getopts ":i,:l,:a,:u,:b,:r,:c,:s,:S,:h" OPTION ; do
exit_clean ;;
b)
TARGET="BACKUP"
echo -e "\n ${YEL}Backing up $APP_NAME_LONG...${CRS}"
if [ "$#" -gt "1" ] ; then
ALL_PARAMETER=$@
@ -770,13 +1017,41 @@ while getopts ":i,:l,:a,:u,:b,:r,:c,:s,:S,:h" OPTION ; do
elif [[ "$PARAMETER" == "pbzip2" || "$PARAMETER" == "gzip" || "$PARAMETER" == "bzip2" || "$PARAMETER" == "zip" ]] ; then
BACKUP_COMPRESSION_OVERRIDE=$PARAMETER
elif [ -d "$PARAMETER" ] ; then
elif [[ -d "$PARAMETER" || -d "$(pwd)/$PARAMETER" ]] ; then
BACKUP_PATH=$PARAMETER
fi
done
fi
path_correction
call_backup
exit ;;
exit_clean ;;
B)
TARGET="BACKUP"
echo -e "\n ${YEL}Restoring $APP_NAME_LONG from backup...${CRS}"
if [ "$#" -gt "1" ] ; then
ALL_PARAMETER=$@
for PARAMETER in ${ALL_PARAMETER[@]} ; do
if [[ "$PARAMETER" == "script" || "$PARAMETER" == "config" || "$PARAMETER" == "app" || "$PARAMETER" == "full" ]] ; then
BACKUP_TYPE=$PARAMETER
elif [[ -d $PARAMETER || -d $(pwd)/$PARAMETER ]] ; then
BACKUP_PATH=$PARAMETER
else
BACKUP_TYPE=*
fi
done
else
BACKUP_TYPE=*
fi
dependency_check
path_correction
select_backup
exit_clean ;;
r)
echo -e "\n ${YEL}Removing $APP_NAME_LONG...${CRS}\n"

View file

@ -9,7 +9,6 @@ APP_NAME_LONG="Helium Web Browser"
ARCH="x86_64"
FILE_EXTENSION="AppImage"
APP_SOURCE="GitHub"
NOTIFY_NAME="Helium Helper"
SCRIPT_NAME="$APP_NAME Launcher Updater"
PARENT_SCRIPT_FILE_NAME="helium_helper.sh"
SCRIPT_FILE_NAME="helium_launcher_update.sh"
@ -17,6 +16,9 @@ SCRIPT_VERSION="0.5.9.1"
LOG_DATE=$(date)
DATE=$(date +"%d%m%y")
## NOTIFICATIONS
NOTIFY_NAME="Helium Helper"
## LOCATIONS
TMP=/tmp/$APP_NAME
INSTALL_PATH=$HOME/.apps/$APP_NAME
@ -30,7 +32,7 @@ ICON=$ASSET_PATH/icon/helium.png
SCRIPT_PATH=$HOME/.local/bin
## REMOTE LOCATIONS
REMOTE_REPO_BRANCH="stable"
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
@ -87,6 +89,15 @@ dependency_check () {
}
### DE CHECK
desktop_environment() {
ALTERNATIVE_NOTIFY="--app-name="$NOTIFY_NAME""
if [[ "$(echo $XDG_CURRENT_DESKTOP | grep -iF "kde")" || "$(echo $XDG_CURRENT_DESKTOP | grep -iF "gnome")" ]] ; then
NOTIFY_NAME=$ALTERNATIVE_NOTIFY
fi
}
### BACKUP
backup_helium() {
if [[ -d "$INSTALL_PATH" || -d "$SCRIPT_PATH" || -d $APP_CONFIG_PATH ]] ; then
@ -154,13 +165,13 @@ backup_helium() {
cd $TMP && rm -rf backup
else
echo "$LOG_DATE | Backup - Backup (uncompressed) written to $BACKUP_PATH" >> $LOG
echo "$LOG_DATE | 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
echo "$LOG_DATE | Backup (compressed $BACKUP_COMPRESSION archive) written to $BACKUP_PATH" >> $LOG
notify-send --icon="$ICON" "$NOTIFY_NAME" "Backup created"
cd $CWD
fi
@ -353,6 +364,9 @@ done
## DEPENDENCY CHECK
dependency_check
## DE CHECK
desktop_environment
## UPDATE
update_helium