Compare commits

..

15 commits

8 changed files with 72 additions and 599 deletions

1
.gitignore vendored Executable file → Normal file
View file

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

8
README.md Executable file → Normal file
View file

@ -1,4 +1,4 @@
# Helium Browser 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... It's supposed to run in user space and is (Linux) distro independent I suppose.
@ -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 and configuration and write a log.
Checking for the latest version and updating can simply be done for the browser as well as the script by right clicking the app icon and choosing either update option, which will be run by `helium_launcher_update.sh`. This will backup all files that are being updated and write a log.
**Terminal**
@ -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 21 `INSTALL_PATH`
- Presence of `$HOME/.apps/Helium` when updating | changeable in line 22 `INSTALL_PATH`
- Executable named `Helium.AppImage`
- Loggs to `$HOME/.apps/Helium/assets/logs`
- Keeps backup archives from

0
assets/icon/helium.png Executable file → Normal file
View file

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Before After
Before After

0
assets/launcher/helium.desktop.template Executable file → Normal file
View file

0
assets/workflow/merge.yml Executable file → Normal file
View file

104
devdoc.md
View file

@ -1,104 +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
- 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
- Backup compression to pass as argument
- Restoration process added --> partially
- Backup selector works
- Backup decompression works
- Restoration config generator --> incomplete
- Restoration function --> incomlete
- Alias changed to "helium-helper"
## 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

@ -5,7 +5,6 @@ set -e
## SOME COLOR
CYN="\e[0;36m"
MGT="\e[0;35m"
YEL="\e[0;33m"
RED="\e[0;31m"
GRN="\e[0;32m"
@ -25,32 +24,31 @@ 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="helium-helper"
ALIAS="update-helium"
DATE=$(date +"%d%m%y")
## LOCATIONS
TMP=/tmp/$APP_NAME
INSTALL_PATH=$HOME/.apps/$APP_NAME\1
APP_CONFIG_FOLDER="net.imput.helium"
APP_CONFIG_PATH=$HOME/.config/$APP_CONFIG_FOLDER
INSTALL_PATH=$HOME/.apps/$APP_NAME
APP_CONFIG_PATH=$HOME/.config/net.imput.helium
ASSET_PATH=$INSTALL_PATH/assets
BACKUP_PATH=$ASSET_PATH/backup
LOG_PATH=$ASSET_PATH/logs
LOG=$LOG_PATH/log
LAUNCHER_PATH=$HOME/.local/share/applications1
SCRIPT_PATH=$HOME/.local/bin1
LAUNCHER_PATH=$HOME/.local/share/applications
SCRIPT_PATH=$HOME/.local/bin
## REMOTE LOCATIONS
REMOTE_REPO_BRANCH="main"
REMOTE_REPO_BRANCH="stable"
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 ###########
#################### DEPENDENCY CHECK ####################
### DEPENDENCIES
cmd_query() {
if ! command -v $PACKAGE > /dev/null 2>&1 ; then
if ! command -v $PACKAGE > /dev/null 2>&1 ; then
echo " - $PACKAGE" >> $TMP/missingDeps
fi
}
@ -65,27 +63,29 @@ dependency_check () {
done
if [ -f "$TMP/missingDeps" ] ; then
echo -e " ${RED}Following dependencies are missing :\n\n${CRS}$(cat $TMP/missingDeps)\n\n ${CYN}Please install and re-run script !${CRS}\n"
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"
exit_clean
fi
}
#################### SHELL CHECK ####################
### SHELL CHECK
shell_query() {
if [ "$(echo $SHELL | grep "$SHELL_OPTION")" ] ; then
ACTIVE_SHELL=$SHELL_OPTION
fi
fi
}
shell_check() {
SHELLS=("bash" "fish" "zsh")
for SHELL_OPTION in ${SHELLS[@]} ; do
for SHELL_OPTION in "${SHELLS[@]}" ; do
shell_query "$SHELL_OPTION"
done
}
#################### ARCH CHECK ####################
### ARCH CHECK
arch_check() {
if [ "$ARCH_OVERRIDE" ] ; then
ARCH=$ARCH_OVERRIDE
@ -106,7 +106,7 @@ arch_check() {
fi
}
#################### LOCAL INSTALL CHECK ####################
### CHECK LOCAL INSTALL
local_check() {
if ! [ -d "$INSTALL_PATH" ] ; then
echo -e "\n ${YEL}$APP_NAME_LONG directory not found!${CRS}\n"
@ -120,33 +120,7 @@ local_check() {
fi
}
#################### 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
install_application() {
if [ -f "$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" ] ; then
echo -e " ${YEL}$APP_NAME_LONG AppImage found! Trying to update...${CRS}"
@ -179,7 +153,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}"
@ -232,7 +206,7 @@ add_launcher() {
fi
}
#################### ALIAS ####################
### ALIAS
add_alias() {
if ! [ -f "$SCRIPT_PATH/$SCRIPT_FILE_NAME" ] ; then
mkdir -p $SCRIPT_PATH
@ -284,31 +258,29 @@ 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}\n"
echo -e "\n ${RED}Empty version tag from ${CYN}$APP_SOURCE${RED}! Can't compare, exiting...${CRS}"
exit
elif [ -z "$LOCAL_VERSION" ] ; then
echo -e "\n ${RED}Empty version tag from ${CYN}local $FILE_EXTENSION${RED}! Can't compare, exiting...${CRS}\n"
echo -e "\n ${RED}Empty version tag from ${CYN}local AppImage${RED}! Can't compare, exiting...${CRS}"
exit
fi
### COMPARE LOCAL & REMOTE VERSION
LOCAL_VERSION_NUM=$(echo $LOCAL_VERSION | tr -d .)
APP_SOURCE_VERSION_NUM=$(echo $APP_SOURCE_VERSION | tr -d .)
APP_SOURCE_VERSION_NUM=$(echo "1.$APP_SOURCE_VERSION_NUM")
LOCAL_VERSION_NUM=$(echo "1.$LOCAL_VERSION_NUM")
if [ "$APP_SOURCE_VERSION" == "$LOCAL_VERSION" ] ; then
echo -e "\n ${GRN}$APP_NAME_LONG is already up-to-date!${CRS}\n"
elif [ $(echo "$APP_SOURCE_VERSION_NUM > $LOCAL_VERSION_NUM" | bc -l) -eq 1 ] ; then
elif [ "$APP_SOURCE_VERSION_NUM" -gt "$LOCAL_VERSION_NUM" ] ; then
echo -e "\n ${LCY}$APP_NAME_LONG is updatable!${CRS}\n"
app_version_info
@ -345,10 +317,9 @@ update_application() {
fi
}
#################### BACKUP ####################
### BACKUP
call_backup() {
BACKUP_COUNT=$(ls $BACKUP_PATH/$APP_NAME.$BACKUP_METHOD.backup_* 2> /dev/null | wc -l)
if [[ "$BACKUP_COUNT" -gt "0" ]] ; then
if [ -f $BACKUP_PATH\/$APP_NAME\.$BACKUP_METHOD\.backup_* ] ; then
echo -e "\n ${CYN}A $BACKUP_METHOD backup already exists!${CRS}\n"
while true ; do
@ -356,86 +327,22 @@ call_backup() {
if [[ "$OVERWRITE_BACKUP" == "" || "$OVERWRITE_BACKUP" == "n" || "$OVERWRITE_BACKUP" == "N" ]] ; then
echo -e "\n ${YEL}Skipping backup process...${CRS}\n"
exit_clean
break
elif [[ "$OVERWRITE_BACKUP" == "y" || "$OVERWRITE_BACKUP" == "Y" ]] ; then
echo -e "\n ${YEL}Overwriting backup...${CRS}"
rm $BACKUP_PATH/$APP_NAME.$BACKUP_METHOD.backup_*
${BACKUP_METHOD}_backup
break
else
echo -e "\n ${YEL}Invalid response!${CRS}\n"
fi
done
done
else
${BACKUP_METHOD}_backup
fi
${BACKUP_METHOD}_backup
}
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
elif ! [ "$(cat $HOME/.zshrc | grep "$ALIAS")" ] ; then
echo " # Shell : $ACTIVE_SHELL" >> $TMP/backup/conf_log
echo " # Alias : FALSE" >> $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
elif ! [ "$(cat $HOME/.bashrc | grep "$ALIAS")" ] ; then
echo " # Shell : $ACTIVE_SHELL" >> $TMP/backup/conf_log
echo " # Alias : FALSE" >> $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
elif ! [ "$(cat $HOME/.config/fish/config.fish | grep "source $HOME/.config/fish/$ALIAS.fish")" ] ; then
echo " # Shell : $ACTIVE_SHELL" >> $TMP/backup/conf_log
echo " # Alias : FALSE" >> $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() {
@ -446,12 +353,10 @@ backup_file_collector() {
cp -r $BACKUP_ITEM $TMP/backup
elif [ -f "$BACKUP_ITEM" ] ; then
mkdir -p $TMP/backup
mkdir -p $TMP/backup
cp $BACKUP_ITEM $TMP/backup
fi
done
backup_logger
}
script_backup() {
@ -462,7 +367,7 @@ script_backup() {
pack_backup
else
echo -e "\n ${YEL}Nothing to back up...${CRS}\n"
echo -e " ${YEL}Nothing to back up...${CRS}"
fi
}
@ -474,7 +379,7 @@ app_backup() {
pack_backup
else
echo -e "\n ${YEL}Nothing to back up...${CRS}\n"
echo -e " ${YEL}Nothing to back up...${CRS}"
fi
}
@ -486,7 +391,7 @@ config_backup() {
pack_backup
else
echo -e "\n ${YEL}Nothing to back up...${CRS}\n"
echo -e " ${YEL}Nothing to back up...${CRS}"
fi
}
@ -498,7 +403,7 @@ full_backup() {
pack_backup
else
echo -e "\n ${YEL}Nothing to back up...${CRS}\n"
echo -e " ${YEL}Nothing to back up...${CRS}"
fi
}
@ -521,9 +426,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
@ -573,295 +478,7 @@ pack_backup() {
fi
}
#################### 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
}
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 > /dev/null 2>&1
tar -xf $APP_NAME.*.backup_*.tar
rm $APP_NAME.*.backup_*.tar.zip $APP_NAME.*.backup_*.tar
else
echo -e " ${YEL}TBA...${CRS}\n" #######################################################################
fi
configure_restore
}
configure_restore() {
echo -e " - ${CRS}Analysing ${CYN}$BACKUP_TYPE${CRS} backup content...${CRS}\n"
RESTORABLE=("$APP_NAME.$FILE_EXTENSION" "$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 "APP_CONFIG_PATH=\"$APP_CONFIG_PATH\" FILE_NAME=\"$RESTORE_ITEM\"" >> $TMP/restore_check
else
echo "APP_CONFIG_PATH=\"$APP_CONFIG_PATH\" FILE_NAME=\"$RESTORE_ITEM\"" >> $TMP/restore_check
echo "APP_CONFIG_PATH=\"$APP_CONFIG_PATH\" FILE_NAME=\"$RESTORE_ITEM\"" >> $TMP/restore_diff
fi
elif [ -f "$RESTORE_ITEM" ] ; then
if [[ -f "$INSTALL_PATH/$RESTORE_ITEM" || -f "$SCRIPT_PATH/$RESTORE_ITEM" || -f "$LAUNCHER_PATH/$RESTORE_ITEM" ]] ; then
if [ "$RESTORE_ITEM" == "$APP_NAME.$FILE_EXTENSION" ] ; then
echo "INSTALL_PATH=\"$INSTALL_PATH\" FILE_NAME=\"$RESTORE_ITEM\"" >> $TMP/restore_check
elif [[ "$RESTORE_ITEM" == "$SCRIPT_FILE_NAME" || "$RESTORE_ITEM" == "$AUTO_SCRIPT_FILE_NAME" ]] ; then
echo "SCRIPT_PATH=\"$SCRIPT_PATH\" FILE_NAME=\"$RESTORE_ITEM\"" >> $TMP/restore_check
elif [ "$RESTORE_ITEM" == "$APP_NAME.desktop" ] ; then
echo "LAUNCHER_PATH=\"$LAUNCHER_PATH\" FILE_NAME=\"$RESTORE_ITEM\"" >> $TMP/restore_check
fi
else
if [ "$RESTORE_ITEM" == "$APP_NAME.$FILE_EXTENSION" ] ; then
echo "INSTALL_PATH=\"$INSTALL_PATH\" FILE_NAME=\"$RESTORE_ITEM\"" >> $TMP/restore_check
echo "INSTALL_PATH=\"$INSTALL_PATH\" FILE_NAME=\"$RESTORE_ITEM\"" >> $TMP/restore_diff
elif [[ "$RESTORE_ITEM" == "$SCRIPT_FILE_NAME" || "$RESTORE_ITEM" == "$AUTO_SCRIPT_FILE_NAME" ]] ; then
echo "SCRIPT_PATH=\"$SCRIPT_PATH\" FILE_NAME=\"$RESTORE_ITEM\"" >> $TMP/restore_check
echo "SCRIPT_PATH=\"$SCRIPT_PATH\" FILE_NAME=\"$RESTORE_ITEM\"" >> $TMP/restore_diff
elif [ "$RESTORE_ITEM" == "$APP_NAME.desktop" ] ; then
echo "LAUNCHER_PATH=\"$LAUNCHER_PATH\" FILE_NAME=\"$RESTORE_ITEM\"" >> $TMP/restore_check
echo "LAUNCHER_PATH=\"$LAUNCHER_PATH\" FILE_NAME=\"$RESTORE_ITEM\"" >> $TMP/restore_diff
fi
fi
fi
done
echo -e " - ${CRS}Configuring ${CYN}$BACKUP_TYPE${CRS} restoration process...${CRS}\n"
i=1
RESTORE_PATH=$(cat $TMP/restore_check | awk -F'=' '{print $1}')
for PATH_VARIABLE in ${RESTORE_PATH[@]} ; do
PATH_CHECK=$(cat $TMP/restore_diff 2> /dev/null| grep "$PATH_VARIABLE" | awk '{print $1}' | awk -F'=' '{print $2}' | tr -d "\"")
if [[ "$PATH_CHECK" == "$INSTALL_PATH" || "$PATH_CHECK" == "$SCRIPT_PATH" || "$PATH_CHECK" == "$LAUNCHER_PATH" || "$PATH_CHECK" == "$APP_CONFIG_PATH" ]] ; then
echo " $i - DEFAULT_$PATH_VARIABLE = $PATH_CHECK" >> $TMP/restore_path_change
echo " BACKUP_$(cat conf_log | grep "$PATH_VARIABLE")" >> $TMP/restore_path_change
echo >> $TMP/restore_path_change
i=$(($i+1))
fi
done
if [ -f "$TMP/restore_path_change" ] ; then
echo -e " ${YEL}Path change detected!\n${CRS}"
echo -e "$(cat $TMP/restore_path_change)\n"
while true ; do
read -p " Which path to use? (DEFAULT/backup) : " PATH_OVERWRITE
echo
if [[ "$PATH_OVERWRITE" == "" || "$PATH_OVERWRITE" == "default" || "$PATH_OVERWRITE" == "DEFAULT" ]] ; then
break
elif [[ "$PATH_OVERWRITE" == "backup" || "$PATH_OVERWRITE" == "BACKUP" ]] ; then
TARGET_TO_CHANGE=$(cat $TMP/restore_diff | awk '{print $1}' | awk -F'=' '{print $1}')
for TARGET_VARIABLE in ${TARGET_TO_CHANGE[@]} ; do
PATH_TO_CHANGE=$(cat conf_log | grep "$TARGET_VARIABLE" | awk -F'=' '{print $2}' | tr -d " ")
if [ "$TARGET_VARIABLE" == "INSTALL_PATH" ] ; then
INSTALL_PATH=$PATH_TO_CHANGE
elif [ "$TARGET_VARIABLE" == "SCRIPT_PATH" ] ; then
SCRIPT_PATH=$PATH_TO_CHANGE
elif [ "$TARGET_VARIABLE" == "LAUNCHER_PATH" ] ; then
LAUNCHER_PATH=$PATH_TO_CHANGE
elif [ "$TARGET_VARIABLE" == "APP_CONFIG_PATH" ] ; then
APP_CONFIG_PATH=$PATH_TO_CHANGE
fi
done
break
else
echo -e " ${YEL}Invalid response!${CRS}\n"
fi
done
fi
for RESTORE_ITEM in ${RESTORABLE[@]} ; do
if [ -d "$RESTORE_ITEM" ] ; then
if [ -d "$APP_CONFIG_PATH" ] ; then
echo -e " - Folder : $RESTORE_ITEM \t| ${RED}directory existing${CRS}" >> $TMP/restore_content
else
echo -e " - Folder : $RESTORE_ITEM \t| ${GRN}not present${CRS}" >> $TMP/restore_content
fi
elif [ -f "$RESTORE_ITEM" ] ; then
if [[ -f "$INSTALL_PATH/$RESTORE_ITEM" || -f "$SCRIPT_PATH/$RESTORE_ITEM" || -f "$LAUNCHER_PATH/$RESTORE_ITEM" ]] ; then
echo -e " - File : $RESTORE_ITEM \t| ${RED}file existing${CRS}" >> $TMP/restore_content
else
echo -e " - File : $RESTORE_ITEM \t| ${GRN}not present${CRS}" >> $TMP/restore_content
fi
fi
done
restore_backup
}
restore_backup() { ###############################################
echo -e "\t${LCY}###### Restore Summary ######${CRS}\n"
echo -e " ${MGT}Destination${CRS}"
echo -e " - Install path \t: ${CYN}$INSTALL_PATH${CRS}"
echo -e " - Script path \t: ${CYN}$SCRIPT_PATH${CRS}"
echo -e " - Launcher path \t: ${CYN}$LAUNCHER_PATH${CRS}"
echo -e " - $APP_NAME config \t: ${CYN}$APP_CONFIG_PATH${CRS}\n"
echo -e " ${MGT}Backup content${CRS}"
echo -e "$(cat $TMP/restore_content)\n"
if [ -f "$TMP/restore_check" ] ; then
echo -e " ${RED}WARNING: Some items are existent 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
echo -e "\n - ${CRS}Restoring ${CYN}$BACKUP_TYPE${CRS} backup files...${CRS}\n"
EXISTING=$(cat $TMP/restore_check | awk -F'=' '{print $1}')
for REPLACE in ${EXISTING[@]} ; do
if [ "$REPLACE" == "INSTALL_PATH" ] ; then
rm -rf $INSTALL_PATH/$APP_NAME.$FILE_EXTENSION
chmod +x $APP_NAME.$FILE_EXTENSION
mv $APP_NAME.$FILE_EXTENSION $INSTALL_PATH
elif [ "$REPLACE" == "SCRIPT_PATH" ] ; then
rm -rf $SCRIPT_PATH/$SCRIPT_FILE_NAME $SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME
chmod +x *.sh
mv *.sh $SCRIPT_PATH
elif [ "$REPLACE" == "LAUNCHER_PATH" ] ; then
rm -rf $LAUNCHER_PATH/$APP_NAME.desktop
mv $APP_NAME.desktop $LAUNCHER_PATH
elif [ "$REPLACE" == "APP_CONFIG_PATH" ] ; then
rm -rf $APP_CONFIG_PATH
mv $APP_CONFIG_FOLDER $HOME/.config
fi
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}Restoring ${CYN}$BACKUP_TYPE${CRS} backup files...${CRS}\n"
for REPLACE in ${EXISTING[@]} ; do
if [ "$REPLACE" == "INSTALL_PATH" ] ; then
rm -rf $INSTALL_PATH/$APP_NAME.$FILE_EXTENSION
chmod +x $APP_NAME.$FILE_EXTENSION
mv $APP_NAME.$FILE_EXTENSION $INSTALL_PATH
elif [ "$REPLACE" == "SCRIPT_PATH" ] ; then
rm -rf $SCRIPT_PATH/$SCRIPT_FILE_NAME $SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME
chmod +x *.sh
mv *.sh $SCRIPT_PATH
elif [ "$REPLACE" == "LAUNCHER_PATH" ] ; then
rm -rf $LAUNCHER_PATH/$APP_NAME.desktop
mv $APP_NAME.desktop $LAUNCHER_PATH
elif [ "$REPLACE" == "APP_CONFIG_PATH" ] ; then
rm -rf $APP_CONFIG_PATH
mv $APP_CONFIG_FOLDER $HOME/.config
fi
done
elif [[ "$RESTORE_CONFIRM" == "n" || "$RESTORE_CONFIRM" == "N" ]] ; then
echo -e "\n ${RED}Cancelled!${CRS}\n"
break
else
echo -e "\n ${YEL}Invalid response!${CRS}\n"
fi
done
fi
}
#################### REMOVE ####################
### REMOVE
remove_application() {
if [ -d "$INSTALL_PATH" ] ; then
@ -906,11 +523,11 @@ remove_application() {
break
elif [[ "$CONFIRM_REMOVE" == "n" || "$CONFIRM_REMOVE" == "N" ]] ; then
echo -e "\n ${RED}Cancelled!${CRS}"
echo -e " ${RED}Cancelled!${CRS}"
exit
else
echo -e "\n ${YEL}Invalid response!${CRS}\n"
echo -e " ${YEL}Invalid response!${CRS}\n"
fi
done
@ -920,12 +537,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"
@ -941,12 +558,13 @@ 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 $TMP
mkdir -p $SCRIPT_PATH
mkdir -p $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}\n"
echo -e "\n ${GRN}$SCRIPT_FILE_NAME is up-to-date!${CRS}"
break
elif [[ "$CONFIRM_SCRIPT_INSTALL" == "n" || "$CONFIRM_SCRIPT_INSTALL" == "N" ]] ; then
@ -963,11 +581,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}\n"
echo -e "\n ${RED}Empty version tag from ${CYN}local script${RED}! Can't compare, exiting...${CRS}"
exit
elif [ -z "$REMOTE_SCRIPT_VERSION" ] ; then
echo -e "\n ${RED}Empty version tag from ${CYN}remote script${RED}! Can't compare, exiting...${CRS}\n"
echo -e "\n ${RED}Empty version tag from ${CYN}remote script${RED}! Can't compare, exiting...${CRS}"
exit
fi
@ -984,6 +602,7 @@ 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
@ -999,11 +618,11 @@ update_script() {
break
elif [[ "$CONFIRM_SCRIPT_UPDATE" == "n" || "$CONFIRM_SCRIPT_UPDATE" == "N" ]] ; then
echo -e "\n ${RED}Cancelled!${CRS}\n"
echo -e " ${RED}Cancelled!${CRS}\n"
break
else
echo -e "\n ${YEL}Invalid response!${CRS}\n"
echo -e " ${YEL}Invalid response!${CRS}\n"
fi
done
@ -1014,7 +633,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"
@ -1050,18 +669,17 @@ 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 | -B | -r | -c | -s | -S | -h ]\n"
echo -e "Syntax: $SCRIPT_FILE_NAME [ -i | -l | -a | -u | -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"
@ -1073,7 +691,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
@ -1082,9 +700,10 @@ exit_clean() {
exit
}
########################### MAIN ###########################
########## MAIN ##########
while getopts ":i,:l,:a,:u,:b,:B,:r,:c,:s,:S,:h" OPTION ; do
## GET OPTIONS
while getopts ":i,:l,:a,:u,: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}"
@ -1094,7 +713,6 @@ while getopts ":i,:l,:a,:u,:b,: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=$@
@ -1107,7 +725,6 @@ while getopts ":i,:l,:a,:u,:b,:B,:r,:c,:s,:S,:h" OPTION ; do
fi
dependency_check
arch_check
path_correction
install_application
exit_clean ;;
@ -1142,7 +759,6 @@ while getopts ":i,:l,:a,:u,:b,: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=$@
@ -1154,41 +770,13 @@ while getopts ":i,:l,:a,:u,:b,: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" || -d "$(pwd)/$PARAMETER" ]] ; then
elif [ -d "$PARAMETER" ] ; then
BACKUP_PATH=$PARAMETER
fi
done
fi
path_correction
call_backup
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 ;;
exit ;;
r)
echo -e "\n ${YEL}Removing $APP_NAME_LONG...${CRS}\n"
@ -1226,6 +814,8 @@ done
## ENVIRONMENT CHECK
dependency_check
arch_check
## CHECK LOCAL INSTALL
local_check
## UPDATE

View file

@ -9,6 +9,7 @@ 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"
@ -16,9 +17,6 @@ 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
@ -32,7 +30,7 @@ ICON=$ASSET_PATH/icon/helium.png
SCRIPT_PATH=$HOME/.local/bin
## REMOTE LOCATIONS
REMOTE_REPO_BRANCH="main"
REMOTE_REPO_BRANCH="stable"
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
@ -89,15 +87,6 @@ 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
@ -165,13 +154,13 @@ backup_helium() {
cd $TMP && rm -rf backup
else
echo "$LOG_DATE | Backup (uncompressed) written to $BACKUP_PATH" >> $LOG
echo "$LOG_DATE | Backup - Backup (uncompressed) written to $BACKUP_PATH" >> $LOG
mkdir -p $BACKUP_PATH
mv $TMP/backup $BACKUP_PATH/$APP_NAME.auto_backup_$DATE
cd $TMP && rm -rf backup
fi
echo "$LOG_DATE | Backup (compressed $BACKUP_COMPRESSION archive) written to $BACKUP_PATH" >> $LOG
echo "$LOG_DATE | Backup - Backup (compressed $BACKUP_COMPRESSION archive) written to $BACKUP_PATH" >> $LOG
notify-send --icon="$ICON" "$NOTIFY_NAME" "Backup created"
cd $CWD
fi
@ -364,9 +353,6 @@ done
## DEPENDENCY CHECK
dependency_check
## DE CHECK
desktop_environment
## UPDATE
update_helium