Compare commits

...
Sign in to create a new pull request.

11 commits
stable ... main

4 changed files with 345 additions and 53 deletions

View file

@ -10,7 +10,7 @@ With "little" tinkering it should be possible to apply this script to install, u
``` ```
--- ---
### First Install ### First Install
To initally install Helium browser via this script, download helium_helper.sh and make it executable: To initally install Helium browser via this script, download `helium_helper.sh` and make it executable:
```sh ```sh
wget https://lab.c95.org/fr4nz/helium-helper/raw/branch/main/helium_helper.sh && chmod +x helium_helper.sh wget https://lab.c95.org/fr4nz/helium-helper/raw/branch/main/helium_helper.sh && chmod +x helium_helper.sh
``` ```
@ -30,7 +30,7 @@ Run script with install parameter _-i_
### Updating ### Updating
**From launcher** (if added during install or by running `./helium_helper.sh -l`) **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** **Terminal**

View file

@ -43,12 +43,15 @@
- Removal process adjusted - Removal process adjusted
- $1 verifier added - $1 verifier added
- Readme updated - Readme updated
---
- Notification adjusted for KDE & GNOME
## Add/To Do ## Add/To Do
- Roll back from backup - Roll back from backup
- Update Readme - Update Readme
- Make functional launcher optional - Make functional launcher optional
- Variable transfer script
## Repo ## Repo
- Merge workflow - Merge workflow

View file

@ -24,13 +24,14 @@ SCRIPT_NAME="$APP_NAME Helper Script"
SCRIPT_FILE_NAME="helium_helper.sh" SCRIPT_FILE_NAME="helium_helper.sh"
AUTO_SCRIPT_FILE_NAME="helium_launcher_update.sh" AUTO_SCRIPT_FILE_NAME="helium_launcher_update.sh"
SCRIPT_VERSION="0.5.9.1" SCRIPT_VERSION="0.5.9.1"
ALIAS="update-helium" ALIAS="helium-helper"
DATE=$(date +"%d%m%y") DATE=$(date +"%d%m%y")
## LOCATIONS ## LOCATIONS
TMP=/tmp/$APP_NAME TMP=/tmp/$APP_NAME
INSTALL_PATH=$HOME/.apps/$APP_NAME INSTALL_PATH=$HOME/.apps/$APP_NAME\1
APP_CONFIG_PATH=$HOME/.config/net.imput.helium APP_CONFIG_FOLDER="net.imput.helium"
APP_CONFIG_PATH=$HOME/.config/$APP_CONFIG_FOLDER
ASSET_PATH=$INSTALL_PATH/assets ASSET_PATH=$INSTALL_PATH/assets
BACKUP_PATH=$ASSET_PATH/backup BACKUP_PATH=$ASSET_PATH/backup
LOG_PATH=$ASSET_PATH/logs LOG_PATH=$ASSET_PATH/logs
@ -44,9 +45,9 @@ REMOTE_REPO_URL=https://lab.c95.org/fr4nz/helium-helper/raw/branch/$REMOTE_REPO_
REMOTE_SCRIPT_URL=$REMOTE_REPO_URL/$SCRIPT_FILE_NAME REMOTE_SCRIPT_URL=$REMOTE_REPO_URL/$SCRIPT_FILE_NAME
APP_SOURCE_URL=https://api.github.com/repos/imputnet/helium-linux/releases/latest APP_SOURCE_URL=https://api.github.com/repos/imputnet/helium-linux/releases/latest
########## FUNCTIONS ########### ########################### FUNCTIONS ############################
### DEPENDENCIES #################### DEPENDENCY CHECK ####################
cmd_query() { cmd_query() {
if ! command -v $PACKAGE > /dev/null 2>&1 ; then if ! command -v $PACKAGE > /dev/null 2>&1 ; then
echo " - $PACKAGE" >> $TMP/missingDeps echo " - $PACKAGE" >> $TMP/missingDeps
@ -63,13 +64,12 @@ dependency_check () {
done done
if [ -f "$TMP/missingDeps" ] ; then if [ -f "$TMP/missingDeps" ] ; then
MISSING=$(cat $TMP/missingDeps) echo -e " ${RED}Following dependencies are missing :\n\n${CRS}$(cat $TMP/missingDeps)\n\n ${CYN}Please install and re-run script !${CRS}\n"
echo -e " ${RED}Following dependencies are missing :\n\n${CRS}$MISSING\n\n ${CYN}Please install and re-run script !${CRS}\n"
exit_clean exit_clean
fi fi
} }
### SHELL CHECK #################### SHELL CHECK ####################
shell_query() { shell_query() {
if [ "$(echo $SHELL | grep "$SHELL_OPTION")" ] ; then if [ "$(echo $SHELL | grep "$SHELL_OPTION")" ] ; then
ACTIVE_SHELL=$SHELL_OPTION ACTIVE_SHELL=$SHELL_OPTION
@ -85,7 +85,7 @@ shell_check() {
done done
} }
### ARCH CHECK #################### ARCH CHECK ####################
arch_check() { arch_check() {
if [ "$ARCH_OVERRIDE" ] ; then if [ "$ARCH_OVERRIDE" ] ; then
ARCH=$ARCH_OVERRIDE ARCH=$ARCH_OVERRIDE
@ -106,7 +106,7 @@ arch_check() {
fi fi
} }
### CHECK LOCAL INSTALL #################### LOCAL INSTALL CHECK ####################
local_check() { local_check() {
if ! [ -d "$INSTALL_PATH" ] ; then if ! [ -d "$INSTALL_PATH" ] ; then
echo -e "\n ${YEL}$APP_NAME_LONG directory not found!${CRS}\n" echo -e "\n ${YEL}$APP_NAME_LONG directory not found!${CRS}\n"
@ -120,7 +120,33 @@ local_check() {
fi 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() { install_application() {
if [ -f "$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" ] ; then if [ -f "$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" ] ; then
echo -e " ${YEL}$APP_NAME_LONG AppImage found! Trying to update...${CRS}" echo -e " ${YEL}$APP_NAME_LONG AppImage found! Trying to update...${CRS}"
@ -153,7 +179,7 @@ install_application() {
done done
} }
### LAUNCHER #################### LAUNCHER ####################
add_launcher() { add_launcher() {
if [ -f "$LAUNCHER_PATH/$APP_NAME.desktop" ] ; then if [ -f "$LAUNCHER_PATH/$APP_NAME.desktop" ] ; then
echo -e "\n ${YEL}${APP_NAME}.desktop already exists!${CRS}" echo -e "\n ${YEL}${APP_NAME}.desktop already exists!${CRS}"
@ -206,7 +232,7 @@ add_launcher() {
fi fi
} }
### ALIAS #################### ALIAS ####################
add_alias() { add_alias() {
if ! [ -f "$SCRIPT_PATH/$SCRIPT_FILE_NAME" ] ; then if ! [ -f "$SCRIPT_PATH/$SCRIPT_FILE_NAME" ] ; then
mkdir -p $SCRIPT_PATH mkdir -p $SCRIPT_PATH
@ -258,18 +284,18 @@ add_alias() {
fi fi
} }
### UPDATE #################### UPDATE ####################
update_application() { update_application() {
LOCAL_VERSION=$($INSTALL_PATH/$APP_NAME.$FILE_EXTENSION --version | awk '{print $2}') LOCAL_VERSION=$($INSTALL_PATH/$APP_NAME.$FILE_EXTENSION --version | awk '{print $2}')
APP_SOURCE_VERSION=$(curl -s $APP_SOURCE_URL | grep "tag_name" | tr -d \", | awk '{print $2}') APP_SOURCE_VERSION=$(curl -s $APP_SOURCE_URL | grep "tag_name" | tr -d \", | awk '{print $2}')
### CHECK FOR EMPTY VERSION TAGS ### CHECK FOR EMPTY VERSION TAGS
if [ -z "$APP_SOURCE_VERSION" ] ; then if [ -z "$APP_SOURCE_VERSION" ] ; then
echo -e "\n ${RED}Empty version tag from ${CYN}$APP_SOURCE${RED}! Can't compare, exiting...${CRS}" echo -e "\n ${RED}Empty version tag from ${CYN}$APP_SOURCE${RED}! Can't compare, exiting...${CRS}\n"
exit exit
elif [ -z "$LOCAL_VERSION" ] ; then elif [ -z "$LOCAL_VERSION" ] ; then
echo -e "\n ${RED}Empty version tag from ${CYN}local AppImage${RED}! Can't compare, exiting...${CRS}" echo -e "\n ${RED}Empty version tag from ${CYN}local AppImage${RED}! Can't compare, exiting...${CRS}\n"
exit exit
fi fi
@ -317,9 +343,10 @@ update_application() {
fi fi
} }
### BACKUP #################### BACKUP ####################
call_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" echo -e "\n ${CYN}A $BACKUP_METHOD backup already exists!${CRS}\n"
while true ; do while true ; do
@ -331,20 +358,74 @@ call_backup() {
elif [[ "$OVERWRITE_BACKUP" == "y" || "$OVERWRITE_BACKUP" == "Y" ]] ; then elif [[ "$OVERWRITE_BACKUP" == "y" || "$OVERWRITE_BACKUP" == "Y" ]] ; then
echo -e "\n ${YEL}Overwriting backup...${CRS}" 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 ${BACKUP_METHOD}_backup
break break
else else
echo -e "\n ${YEL}Invalid response!${CRS}\n" echo -e "\n ${YEL}Invalid response!${CRS}\n"
fi fi
done done
else else
${BACKUP_METHOD}_backup ${BACKUP_METHOD}_backup
fi 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() { backup_file_collector() {
for BACKUP_ITEM in ${BACKUPABLE[@]} ; do for BACKUP_ITEM in ${BACKUPABLE[@]} ; do
@ -353,10 +434,12 @@ backup_file_collector() {
cp -r $BACKUP_ITEM $TMP/backup cp -r $BACKUP_ITEM $TMP/backup
elif [ -f "$BACKUP_ITEM" ] ; then elif [ -f "$BACKUP_ITEM" ] ; then
mkdir -p $TMP/backup mkdir -p $TMP/backup
cp $BACKUP_ITEM $TMP/backup cp $BACKUP_ITEM $TMP/backup
fi fi
done done
backup_logger
} }
script_backup() { script_backup() {
@ -426,9 +509,9 @@ pack_backup() {
COMPRESSION_METHOD=("pbzip2" "gzip" "bzip2" "zip") COMPRESSION_METHOD=("pbzip2" "gzip" "bzip2" "zip")
until [ "$BACKUP_COMPRESSION" ] ; do 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 BACKUP_COMPRESSION=$COMPRESSION_TYPE
break break
fi fi
@ -478,7 +561,170 @@ pack_backup() {
fi 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() { remove_application() {
if [ -d "$INSTALL_PATH" ] ; then if [ -d "$INSTALL_PATH" ] ; then
@ -523,11 +769,11 @@ remove_application() {
break break
elif [[ "$CONFIRM_REMOVE" == "n" || "$CONFIRM_REMOVE" == "N" ]] ; then elif [[ "$CONFIRM_REMOVE" == "n" || "$CONFIRM_REMOVE" == "N" ]] ; then
echo -e " ${RED}Cancelled!${CRS}" echo -e "\n ${RED}Cancelled!${CRS}"
exit exit
else else
echo -e " ${YEL}Invalid response!${CRS}\n" echo -e "\n ${YEL}Invalid response!${CRS}\n"
fi fi
done done
@ -537,12 +783,12 @@ remove_application() {
fi fi
} }
### SCRIPT VERSION #################### SCRIPT VERSION ####################
script_version() { script_version() {
echo -e "\n ${CYN}$APP_NAME_LONG Helper Script Version : ${CRS}$SCRIPT_VERSION\n" echo -e "\n ${CYN}$APP_NAME_LONG Helper Script Version : ${CRS}$SCRIPT_VERSION\n"
} }
### UPDATE SCRIPT #################### UPDATE SCRIPT ####################
scrip_version_info() { scrip_version_info() {
echo -e " - ${CYN}Local Version :\t${CRS}$SCRIPT_VERSION" echo -e " - ${CYN}Local Version :\t${CRS}$SCRIPT_VERSION"
echo -e " - ${CYN}Remote Version :\t${CRS}$REMOTE_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 read -p " Copy script to $SCRIPT_PATH? (Y/n) : " CONFIRM_SCRIPT_INSTALL
if [[ "$CONFIRM_SCRIPT_INSTALL" == "" || "$CONFIRM_SCRIPT_INSTALL" == "y" || "$CONFIRM_SCRIPT_INSTALL" == "Y" ]] ; then if [[ "$CONFIRM_SCRIPT_INSTALL" == "" || "$CONFIRM_SCRIPT_INSTALL" == "y" || "$CONFIRM_SCRIPT_INSTALL" == "Y" ]] ; then
mkdir -p $SCRIPT_PATH mkdir -p $SCRIPT_PATH $TMP
mkdir -p $TMP
wget -P $TMP $REMOTE_SCRIPT_URL -q wget -P $TMP $REMOTE_SCRIPT_URL -q
wget -P $TMP $REMOTE_REPO_URL/$AUTO_SCRIPT_FILE_NAME -q wget -P $TMP $REMOTE_REPO_URL/$AUTO_SCRIPT_FILE_NAME -q
chmod +x $TMP/$SCRIPT_FILE_NAME $TMP/$AUTO_SCRIPT_FILE_NAME chmod +x $TMP/$SCRIPT_FILE_NAME $TMP/$AUTO_SCRIPT_FILE_NAME
mv $TMP/$SCRIPT_FILE_NAME $TMP/$AUTO_SCRIPT_FILE_NAME $SCRIPT_PATH mv $TMP/$SCRIPT_FILE_NAME $TMP/$AUTO_SCRIPT_FILE_NAME $SCRIPT_PATH
echo -e "\n ${GRN}$SCRIPT_FILE_NAME is up-to-date!${CRS}" echo -e "\n ${GRN}$SCRIPT_FILE_NAME is up-to-date!${CRS}\n"
break break
elif [[ "$CONFIRM_SCRIPT_INSTALL" == "n" || "$CONFIRM_SCRIPT_INSTALL" == "N" ]] ; then elif [[ "$CONFIRM_SCRIPT_INSTALL" == "n" || "$CONFIRM_SCRIPT_INSTALL" == "N" ]] ; then
@ -581,11 +826,11 @@ update_script() {
### CHECK FOR EMPTY VERSION TAGS ### CHECK FOR EMPTY VERSION TAGS
if [ -z "$SCRIPT_VERSION" ] ; then 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 exit
elif [ -z "$REMOTE_SCRIPT_VERSION" ] ; then elif [ -z "$REMOTE_SCRIPT_VERSION" ] ; then
echo -e "\n ${RED}Empty version tag from ${CYN}remote script${RED}! Can't compare, exiting...${CRS}" echo -e "\n ${RED}Empty version tag from ${CYN}remote script${RED}! Can't compare, exiting...${CRS}\n"
exit exit
fi fi
@ -602,7 +847,6 @@ update_script() {
while true ; do while true ; do
read -p " Update $SCRIPT_FILE_NAME? (Y/n) : " CONFIRM_SCRIPT_UPDATE read -p " Update $SCRIPT_FILE_NAME? (Y/n) : " CONFIRM_SCRIPT_UPDATE
echo
if [[ "$CONFIRM_SCRIPT_UPDATE" == "" || "$CONFIRM_SCRIPT_UPDATE" == "y" || "$CONFIRM_SCRIPT_UPDATE" == "Y" ]] ; then if [[ "$CONFIRM_SCRIPT_UPDATE" == "" || "$CONFIRM_SCRIPT_UPDATE" == "y" || "$CONFIRM_SCRIPT_UPDATE" == "Y" ]] ; then
if ! [ -d "$BACKUP_PATH" ] ; then if ! [ -d "$BACKUP_PATH" ] ; then
@ -618,11 +862,11 @@ update_script() {
break break
elif [[ "$CONFIRM_SCRIPT_UPDATE" == "n" || "$CONFIRM_SCRIPT_UPDATE" == "N" ]] ; then elif [[ "$CONFIRM_SCRIPT_UPDATE" == "n" || "$CONFIRM_SCRIPT_UPDATE" == "N" ]] ; then
echo -e " ${RED}Cancelled!${CRS}\n" echo -e "\n ${RED}Cancelled!${CRS}\n"
break break
else else
echo -e " ${YEL}Invalid response!${CRS}\n" echo -e "\n ${YEL}Invalid response!${CRS}\n"
fi fi
done done
@ -633,7 +877,7 @@ update_script() {
fi fi
} }
### COMPARE APP VERSION #################### COMPARE APP VERSION ####################
app_version_info() { app_version_info() {
echo -e " - ${CYN}Local Version :\t${CRS}$LOCAL_VERSION" echo -e " - ${CYN}Local Version :\t${CRS}$LOCAL_VERSION"
echo -e " - ${CYN}$APP_SOURCE Version :\t${CRS}$APP_SOURCE_VERSION\n" echo -e " - ${CYN}$APP_SOURCE Version :\t${CRS}$APP_SOURCE_VERSION\n"
@ -669,17 +913,18 @@ compare_version() {
fi fi
} }
### HELP #################### HELP ####################
help() { help() {
echo -e "\n${LCY}${SCRIPT_NAME}${CRS}\n" echo -e "\n${LCY}${SCRIPT_NAME}${CRS}\n"
echo -e "$APP_NAME_LONG installer & updater script\n" echo -e "$APP_NAME_LONG installer & updater script\n"
echo -e "Syntax: $SCRIPT_FILE_NAME [ -i | -l | -a | -u | -b | -r | -c | -s | -S | -h ]\n" echo -e "Syntax: $SCRIPT_FILE_NAME [ -i | -l | -a | -u | -b | -B | -r | -c | -s | -S | -h ]\n"
echo -e "Options:\n" echo -e "Options:\n"
echo -e "\t-i\tInstall $APP_NAME_LONG from $APP_SOURCE" echo -e "\t-i\tInstall $APP_NAME_LONG from $APP_SOURCE"
echo -e "\t-l\tCreate desktop launcher" echo -e "\t-l\tCreate desktop launcher"
echo -e "\t-a\tCreate alias for $SCRIPT_FILE_NAME" echo -e "\t-a\tCreate alias for $SCRIPT_FILE_NAME"
echo -e "\t-u\tUpdate $APP_NAME_LONG from $APP_SOURCE" echo -e "\t-u\tUpdate $APP_NAME_LONG from $APP_SOURCE"
echo -e "\t-b\tBackup $APP_NAME_LONG & configuration" 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-r\tRemove $APP_NAME_LONG"
echo -e "\t-c\tCompare local to remote version" echo -e "\t-c\tCompare local to remote version"
echo -e "\t-s\tShow script version" echo -e "\t-s\tShow script version"
@ -691,7 +936,7 @@ help() {
echo -e "\t${CYN}${SCRIPT_PATH}${CRS}\t\t\tScript location\n" echo -e "\t${CYN}${SCRIPT_PATH}${CRS}\t\t\tScript location\n"
} }
### EXIT CLEAN #################### EXIT CLEAN ####################
exit_clean() { exit_clean() {
if [ -d "$TMP" ] ; then if [ -d "$TMP" ] ; then
rm -rf $TMP rm -rf $TMP
@ -700,10 +945,9 @@ exit_clean() {
exit exit
} }
########## MAIN ########## ########################### MAIN ###########################
## GET OPTIONS while getopts ":i,:l,:a,:u,:b,:B,:r,:c,:s,:S,:h" OPTION ; do
while getopts ":i,:l,:a,:u,:b,:r,:c,:s,:S,:h" OPTION ; do
if [ "$(echo $1 | wc -m)" -gt "3" ] ; then 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}" 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 case $OPTION in
i) i)
TARGET="INSTALL"
echo -e "\n ${YEL}Installing $APP_NAME_LONG...${CRS}\n" echo -e "\n ${YEL}Installing $APP_NAME_LONG...${CRS}\n"
if [ "$#" -gt "1" ] ; then if [ "$#" -gt "1" ] ; then
ALL_PARAMETER=$@ ALL_PARAMETER=$@
@ -725,6 +970,7 @@ while getopts ":i,:l,:a,:u,:b,:r,:c,:s,:S,:h" OPTION ; do
fi fi
dependency_check dependency_check
arch_check arch_check
path_correction
install_application install_application
exit_clean ;; exit_clean ;;
@ -759,6 +1005,7 @@ while getopts ":i,:l,:a,:u,:b,:r,:c,:s,:S,:h" OPTION ; do
exit_clean ;; exit_clean ;;
b) b)
TARGET="BACKUP"
echo -e "\n ${YEL}Backing up $APP_NAME_LONG...${CRS}" echo -e "\n ${YEL}Backing up $APP_NAME_LONG...${CRS}"
if [ "$#" -gt "1" ] ; then if [ "$#" -gt "1" ] ; then
ALL_PARAMETER=$@ 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 elif [[ "$PARAMETER" == "pbzip2" || "$PARAMETER" == "gzip" || "$PARAMETER" == "bzip2" || "$PARAMETER" == "zip" ]] ; then
BACKUP_COMPRESSION_OVERRIDE=$PARAMETER BACKUP_COMPRESSION_OVERRIDE=$PARAMETER
elif [ -d "$PARAMETER" ] ; then elif [[ -d "$PARAMETER" || -d "$(pwd)/$PARAMETER" ]] ; then
BACKUP_PATH=$PARAMETER BACKUP_PATH=$PARAMETER
fi fi
done done
fi fi
path_correction
call_backup 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) r)
echo -e "\n ${YEL}Removing $APP_NAME_LONG...${CRS}\n" 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" ARCH="x86_64"
FILE_EXTENSION="AppImage" FILE_EXTENSION="AppImage"
APP_SOURCE="GitHub" APP_SOURCE="GitHub"
NOTIFY_NAME="Helium Helper"
SCRIPT_NAME="$APP_NAME Launcher Updater" SCRIPT_NAME="$APP_NAME Launcher Updater"
PARENT_SCRIPT_FILE_NAME="helium_helper.sh" PARENT_SCRIPT_FILE_NAME="helium_helper.sh"
SCRIPT_FILE_NAME="helium_launcher_update.sh" SCRIPT_FILE_NAME="helium_launcher_update.sh"
@ -17,6 +16,9 @@ SCRIPT_VERSION="0.5.9.1"
LOG_DATE=$(date) LOG_DATE=$(date)
DATE=$(date +"%d%m%y") DATE=$(date +"%d%m%y")
## NOTIFICATIONS
NOTIFY_NAME="Helium Helper"
## LOCATIONS ## LOCATIONS
TMP=/tmp/$APP_NAME TMP=/tmp/$APP_NAME
INSTALL_PATH=$HOME/.apps/$APP_NAME INSTALL_PATH=$HOME/.apps/$APP_NAME
@ -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
backup_helium() { backup_helium() {
if [[ -d "$INSTALL_PATH" || -d "$SCRIPT_PATH" || -d $APP_CONFIG_PATH ]] ; then if [[ -d "$INSTALL_PATH" || -d "$SCRIPT_PATH" || -d $APP_CONFIG_PATH ]] ; then
@ -154,13 +165,13 @@ backup_helium() {
cd $TMP && rm -rf backup cd $TMP && rm -rf backup
else 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 mkdir -p $BACKUP_PATH
mv $TMP/backup $BACKUP_PATH/$APP_NAME.auto_backup_$DATE mv $TMP/backup $BACKUP_PATH/$APP_NAME.auto_backup_$DATE
cd $TMP && rm -rf backup cd $TMP && rm -rf backup
fi 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" notify-send --icon="$ICON" "$NOTIFY_NAME" "Backup created"
cd $CWD cd $CWD
fi fi
@ -353,6 +364,9 @@ done
## DEPENDENCY CHECK ## DEPENDENCY CHECK
dependency_check dependency_check
## DE CHECK
desktop_environment
## UPDATE ## UPDATE
update_helium update_helium