mirror of
https://git.h0ster.org/fr4nz/helium-helper.git
synced 2026-03-18 21:20:17 +01:00
removed unneeded
This commit is contained in:
parent
fe1dea14bd
commit
8a54125d52
8 changed files with 0 additions and 8284 deletions
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -1,825 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
# Helium BOWSER INSTALL & UPDATE SCRIPT ---> INTERACTIVE
|
|
||||||
########## PREREQUISITES ###########
|
|
||||||
set -e
|
|
||||||
|
|
||||||
## SOME COLOR
|
|
||||||
CYN="\e[0;36m"
|
|
||||||
YEL="\e[0;33m"
|
|
||||||
RED="\e[0;31m"
|
|
||||||
GRN="\e[0;32m"
|
|
||||||
LCY="\e[1;36m"
|
|
||||||
WHT="\e[1;37m"
|
|
||||||
CRS="\e[0m"
|
|
||||||
|
|
||||||
## GLOBAL VARIABLES
|
|
||||||
APP_NAME="Helium"
|
|
||||||
APP_NAME_LONG="Helium Web Browser"
|
|
||||||
FILE_EXTENSION="AppImage"
|
|
||||||
APP_SOURCE="GitHub"
|
|
||||||
ARCH_OVERRIDE=""
|
|
||||||
BACKUP_METHOD="full"
|
|
||||||
BACKUP_COMPRESSION_OVERRIDE=""
|
|
||||||
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"
|
|
||||||
DATE=$(date +"%d%m%y")
|
|
||||||
|
|
||||||
## LOCATIONS
|
|
||||||
TMP=/tmp/$APP_NAME
|
|
||||||
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/applications
|
|
||||||
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() {
|
|
||||||
if ! command -v $PACKAGE > /dev/null 2>&1 ; then
|
|
||||||
echo " - $PACKAGE" >> $TMP/missingDeps
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
dependency_check () {
|
|
||||||
DEPENDENCIES=("curl" "wget" "tar")
|
|
||||||
mkdir -p $TMP
|
|
||||||
|
|
||||||
for PACKAGE in "${DEPENDENCIES[@]}" ; do
|
|
||||||
cmd_query "$PACKAGE"
|
|
||||||
|
|
||||||
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"
|
|
||||||
exit_clean
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
### SHELL CHECK
|
|
||||||
shell_query() {
|
|
||||||
if [ "$(echo $SHELL | grep "$SHELL_OPTION")" ] ; then
|
|
||||||
ACTIVE_SHELL=$SHELL_OPTION
|
|
||||||
fi
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
shell_check() {
|
|
||||||
SHELLS=("bash" "fish" "zsh")
|
|
||||||
|
|
||||||
for SHELL_OPTION in "${SHELLS[@]}" ; do
|
|
||||||
shell_query "$SHELL_OPTION"
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
### ARCH CHECK
|
|
||||||
arch_check() {
|
|
||||||
if [ "$ARCH_OVERRIDE" ] ; then
|
|
||||||
ARCH=$ARCH_OVERRIDE
|
|
||||||
|
|
||||||
else
|
|
||||||
ARCH=$(uname -m)
|
|
||||||
if [ "$ARCH" == "aarch64" ] ; then
|
|
||||||
ARCH="arm64"
|
|
||||||
|
|
||||||
elif [ "$ARCH" == "amd64" ] ; then
|
|
||||||
ARCH="x86_64"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ! [[ "$ARCH" == "arm64" || "$ARCH" == "x86_64" ]] ; then
|
|
||||||
echo -e "\n ${CYN}$ARCH ${RED}unsupported! Only ${CYN}x86_68 ${RED}or ${CYN}arm64 ${RED}architecture are supported!${CRS}\n"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
### CHECK LOCAL INSTALL
|
|
||||||
local_check() {
|
|
||||||
if ! [ -d "$INSTALL_PATH" ] ; then
|
|
||||||
echo -e "\n ${YEL}$APP_NAME_LONG directory not found!${CRS}\n"
|
|
||||||
install_application
|
|
||||||
exit
|
|
||||||
|
|
||||||
elif ! [ -f "$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" ] ; then
|
|
||||||
echo -e "\n ${YEL}$APP_NAME_LONG directory found but no executable named ${CYN}$APP_NAME.$FILE_EXTENSION${YEL}!${CRS}\n"
|
|
||||||
install_application
|
|
||||||
exit
|
|
||||||
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}"
|
|
||||||
update_application
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
|
|
||||||
while true ; do
|
|
||||||
read -p " Download and install $APP_NAME_LONG from $APP_SOURCE? (Y/n) : " CONFIRM_INSTALL
|
|
||||||
|
|
||||||
if [[ "$CONFIRM_INSTALL" == "" || "$CONFIRM_INSTALL" == "y" || "$CONFIRM_INSTALL" == "Y" ]] ; then
|
|
||||||
DOWNLOAD_URL=$(curl -s $APP_SOURCE_URL | grep "browser_download_url" | grep "$ARCH.$FILE_EXTENSION" | grep -v "zsync" | tr -d \" | awk '{print $2}')
|
|
||||||
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}')
|
|
||||||
echo -e "\n - Downloading ${CYN}$APP_SOURCE_FILENAME${CRS}..."
|
|
||||||
wget -P $TMP $DOWNLOAD_URL -q
|
|
||||||
chmod +x $TMP/$APP_SOURCE_FILENAME
|
|
||||||
mkdir -p $INSTALL_PATH
|
|
||||||
mv $TMP/$APP_SOURCE_FILENAME $INSTALL_PATH/$APP_NAME.$FILE_EXTENSION
|
|
||||||
add_launcher
|
|
||||||
echo -e "\n ${GRN}$APP_NAME_LONG is installed!${CRS}\n"
|
|
||||||
break
|
|
||||||
|
|
||||||
elif [[ "$CONFIRM_INSTALL" == "n" || "$CONFIRM_INSTALL" == "N" ]] ; then
|
|
||||||
echo -e "\n ${RED}Cancelled!${CRS}\n"
|
|
||||||
break
|
|
||||||
|
|
||||||
else
|
|
||||||
echo -e "\n ${YEL}Invalid response!${CRS}\n"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
### LAUNCHER
|
|
||||||
add_launcher() {
|
|
||||||
if [ -f "$LAUNCHER_PATH/$APP_NAME.desktop" ] ; then
|
|
||||||
echo -e "\n ${YEL}${APP_NAME}.desktop already exists!${CRS}"
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
if [[ "$CONFIRM_LAUNCHER" == "" || "$CONFIRM_LAUNCHER" == "y" || "$CONFIRM_LAUNCHER" == "Y" ]] ; then
|
|
||||||
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
|
|
||||||
echo -e "\n - Downloading ${CYN}$AUTO_SCRIPT_FILE_NAME${CRS}..."
|
|
||||||
wget -P $TMP $AUTO_SCRIPT_URL -q
|
|
||||||
chmod +x $TMP/$AUTO_SCRIPT_FILE_NAME
|
|
||||||
mv $TMP/$AUTO_SCRIPT_FILE_NAME $SCRIPT_PATH
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo -e "\n - Downloading ${CYN}launcher files${CRS}..."
|
|
||||||
wget -P $TMP $LAUNCHER_URL -q
|
|
||||||
wget -P $TMP $ICON_URL -q
|
|
||||||
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
|
|
||||||
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 " ${RED}Launcher not added!${CRS}"
|
|
||||||
break
|
|
||||||
|
|
||||||
else
|
|
||||||
echo -e " ${YEL}Invalid response!${CRS}\n"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
else
|
|
||||||
echo -e "\n ${RED}$APP_NAME_LONG AppImage not found! Can't add launcher...${CRS}"
|
|
||||||
install_application
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
### ALIAS
|
|
||||||
add_alias() {
|
|
||||||
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 [ "$ACTIVE_SHELL" == "zsh" ] ; then
|
|
||||||
if [ "$(cat $HOME/.zshrc | grep "$ALIAS")" ] ; then
|
|
||||||
echo -e "\n ${LCY}$ALIAS${CRS} already present in ${CYN}$HOME/.zshrc${CRS}\n"
|
|
||||||
|
|
||||||
else
|
|
||||||
echo "### $APP_NAME_LONG Alias zsh ###" >> $HOME/.zshrc
|
|
||||||
echo "alias $ALIAS=\"$SCRIPT_PATH/$SCRIPT_FILE_NAME\"" >> $HOME/.zshrc
|
|
||||||
echo >> $HOME/.zshrc
|
|
||||||
echo -e "\n ${LCY}$ALIAS${CRS} added to ${CYN}$HOME/.zshrc${CRS}\n"
|
|
||||||
fi
|
|
||||||
|
|
||||||
elif [ "$ACTIVE_SHELL" == "bash" ] ; then
|
|
||||||
if [ "$(cat $HOME/.bashrc | grep "$ALIAS")" ] ; then
|
|
||||||
echo -e "\n ${LCY}$ALIAS${CRS} already present in ${CYN}$HOME/.bashrc${CRS}\n"
|
|
||||||
|
|
||||||
else
|
|
||||||
echo "### $APP_NAME_LONG Alias bash ###" >> $HOME/.bashrc
|
|
||||||
echo "alias $ALIAS=\"$SCRIPT_PATH/$SCRIPT_FILE_NAME\"" >> $HOME/.bashrc
|
|
||||||
echo >> $HOME/.bashrc
|
|
||||||
echo -e "\n ${LCY}$ALIAS${CRS} added to ${CYN}$HOME/.bashrc${CRS}\n"
|
|
||||||
fi
|
|
||||||
|
|
||||||
elif [ "$ACTIVE_SHELL" == "fish" ] ; then
|
|
||||||
if [ "$(cat $HOME/.config/fish/config.fish | grep "source $HOME/.config/fish/$ALIAS.fish")" ] ; then
|
|
||||||
echo -e "\n ${LCY}$ALIAS${CRS} already present in ${CYN}$HOME/.config/fish/config.fish${CRS}\n"
|
|
||||||
|
|
||||||
else
|
|
||||||
echo "### $APP_NAME_LONG Alias FISH ###" > $HOME/.config/fish/$ALIAS.fish
|
|
||||||
echo >> $HOME/.config/fish/$ALIAS.fish
|
|
||||||
echo "function $ALIAS" >> $HOME/.config/fish/$ALIAS.fish
|
|
||||||
echo " $SCRIPT_PATH/$SCRIPT_FILE_NAME \$argv" >> $HOME/.config/fish/$ALIAS.fish
|
|
||||||
echo "end" >> $HOME/.config/fish/$ALIAS.fish
|
|
||||||
echo >> $HOME/.config/fish/$ALIAS.fish
|
|
||||||
echo "source $HOME/.config/fish/$ALIAS.fish" >> $HOME/.config/fish/config.fish
|
|
||||||
echo -e "\n ${LCY}$ALIAS ${CRS}added to ${CYN}$HOME/.config/fish/config.fish${CRS}\n"
|
|
||||||
fi
|
|
||||||
|
|
||||||
else
|
|
||||||
echo -e "\n ${LCY}$ACTIVE_SHELL${RED}shell is not yet supported!${CRS}\n"
|
|
||||||
echo -e " ${CRS}Working implementation are available for bash, zsh & fish!${CRS}\n"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
### 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}"
|
|
||||||
exit
|
|
||||||
|
|
||||||
elif [ -z "$LOCAL_VERSION" ] ; then
|
|
||||||
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 .)
|
|
||||||
|
|
||||||
if [ "$APP_SOURCE_VERSION" == "$LOCAL_VERSION" ] ; then
|
|
||||||
echo -e "\n ${GRN}$APP_NAME_LONG is already up-to-date!${CRS}\n"
|
|
||||||
|
|
||||||
elif [ "$APP_SOURCE_VERSION_NUM" -gt "$LOCAL_VERSION_NUM" ] ; then
|
|
||||||
echo -e "\n ${LCY}$APP_NAME_LONG is updatable!${CRS}\n"
|
|
||||||
app_version_info
|
|
||||||
|
|
||||||
while true ; do
|
|
||||||
read -p " Download and update $APP_NAME_LONG from $APP_SOURCE? (Y/n) : " CONFIRM
|
|
||||||
|
|
||||||
if [[ "$CONFIRM" == "" || "$CONFIRM" == "y" || "$CONFIRM" == "Y" ]] ; then
|
|
||||||
DOWNLOAD_URL=$(curl -s $APP_SOURCE_URL | grep "browser_download_url" | grep "$ARCH.$FILE_EXTENSION" | grep -v "zsync" | tr -d \" | awk '{print $2}')
|
|
||||||
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
|
|
||||||
echo -e "\n - Downloading ${CYN}$APP_SOURCE_FILENAME${CRS}..."
|
|
||||||
wget -P $TMP $DOWNLOAD_URL -q
|
|
||||||
${BACKUP_METHOD}_backup
|
|
||||||
chmod +x $TMP/$APP_SOURCE_FILENAME
|
|
||||||
mv $TMP/$APP_SOURCE_FILENAME $INSTALL_PATH/$APP_NAME.$FILE_EXTENSION
|
|
||||||
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 " ${GRN}$APP_NAME_LONG is up-to-date!${CRS}\n"
|
|
||||||
break
|
|
||||||
|
|
||||||
elif [[ "$CONFIRM" == "n" || "$CONFIRM" == "N" ]] ; then
|
|
||||||
echo -e "\n ${RED}Cancelled!${CRS}\n"
|
|
||||||
exit
|
|
||||||
|
|
||||||
else
|
|
||||||
echo -e "\n ${YEL}Invalid response!${CRS}\n"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
else
|
|
||||||
echo -e "\n ${RED}Version tags malformed or you are using a Beta version!${CRS}\n"
|
|
||||||
app_version_info
|
|
||||||
echo -e " ${RED}Update failed... Exiting...${CRS}\n"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
### BACKUP
|
|
||||||
call_backup() {
|
|
||||||
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
|
|
||||||
read -p " Overwrite backup? (y/N) : " OVERWRITE_BACKUP
|
|
||||||
|
|
||||||
if [[ "$OVERWRITE_BACKUP" == "" || "$OVERWRITE_BACKUP" == "n" || "$OVERWRITE_BACKUP" == "N" ]] ; then
|
|
||||||
echo -e "\n ${YEL}Skipping backup process...${CRS}\n"
|
|
||||||
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
|
|
||||||
|
|
||||||
else
|
|
||||||
${BACKUP_METHOD}_backup
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
backup_file_collector() {
|
|
||||||
for BACKUP_ITEM in ${BACKUPABLE[@]} ; do
|
|
||||||
|
|
||||||
if [ -d "$BACKUP_ITEM" ] ; then
|
|
||||||
mkdir -p $TMP/backup
|
|
||||||
cp -r $BACKUP_ITEM $TMP/backup
|
|
||||||
|
|
||||||
elif [ -f "$BACKUP_ITEM" ] ; then
|
|
||||||
mkdir -p $TMP/backup
|
|
||||||
cp $BACKUP_ITEM $TMP/backup
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
script_backup() {
|
|
||||||
if [ -d "$SCRIPT_PATH" ] ; then
|
|
||||||
BACKUPABLE=("$SCRIPT_PATH/$SCRIPT_FILE_NAME" "$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME")
|
|
||||||
echo -e "\n - ${CRS}Collecting files for ${CYN}$BACKUP_METHOD${CRS} backup...${CRS}"
|
|
||||||
backup_file_collector
|
|
||||||
pack_backup
|
|
||||||
|
|
||||||
else
|
|
||||||
echo -e " ${YEL}Nothing to back up...${CRS}"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
app_backup() {
|
|
||||||
if [ -f "$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" ] ; then
|
|
||||||
BACKUPABLE=("$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION")
|
|
||||||
echo -e "\n - ${CRS}Collecting files for ${CYN}$BACKUP_METHOD${CRS} backup...${CRS}"
|
|
||||||
backup_file_collector
|
|
||||||
pack_backup
|
|
||||||
|
|
||||||
else
|
|
||||||
echo -e " ${YEL}Nothing to back up...${CRS}"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
config_backup() {
|
|
||||||
if [[ -d "$LAUNCHER_PATH" || -d $APP_CONFIG_PATH ]] ; then
|
|
||||||
BACKUPABLE=("$LAUNCHER_PATH/$APP_NAME.desktop" "$APP_CONFIG_PATH")
|
|
||||||
echo -e "\n - ${CRS}Collecting files for ${CYN}$BACKUP_METHOD${CRS} backup...${CRS}"
|
|
||||||
backup_file_collector
|
|
||||||
pack_backup
|
|
||||||
|
|
||||||
else
|
|
||||||
echo -e " ${YEL}Nothing to back up...${CRS}"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
full_backup() {
|
|
||||||
if [[ -d "$INSTALL_PATH" || -d "$SCRIPT_PATH" || -d $APP_CONFIG_PATH ]] ; then
|
|
||||||
BACKUPABLE=("$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")
|
|
||||||
echo -e "\n - ${CRS}Collecting files for ${CYN}$BACKUP_METHOD${CRS} backup...${CRS}"
|
|
||||||
backup_file_collector
|
|
||||||
pack_backup
|
|
||||||
|
|
||||||
else
|
|
||||||
echo -e " ${YEL}Nothing to back up...${CRS}"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
pack_backup() {
|
|
||||||
if [ -d "$TMP/backup" ] ; then
|
|
||||||
CWD=$(pwd)
|
|
||||||
cd $TMP/backup
|
|
||||||
|
|
||||||
if [[ -f "*.sh" ]] ; then
|
|
||||||
chmod -x *.sh
|
|
||||||
|
|
||||||
elif [[ -f "*.$FILE_EXTENSION" ]] ; then
|
|
||||||
chmod -x *.$FILE_EXTENSION
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$BACKUP_COMPRESSION_OVERRIDE" ] ; then
|
|
||||||
BACKUP_COMPRESSION=$BACKUP_COMPRESSION_OVERRIDE
|
|
||||||
|
|
||||||
else
|
|
||||||
COMPRESSION_METHOD=("pbzip2" "gzip" "bzip2" "zip")
|
|
||||||
|
|
||||||
until [ "$BACKUP_COMPRESSION" ] ; do
|
|
||||||
for COMPRESSION_TYPE in ${COMPRESSION_METHOD[@]} ; do
|
|
||||||
|
|
||||||
if [ "$(command -v $COMPRESSION_TYPE) > /dev/null 2>&1" ] ; then
|
|
||||||
BACKUP_COMPRESSION=$COMPRESSION_TYPE
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo -e "\n - ${CRS}Packing backup archive with ${CYN}$BACKUP_COMPRESSION${CRS}...${CRS}\n"
|
|
||||||
|
|
||||||
if [ "$BACKUP_COMPRESSION" == "pbzip2" ] ; then
|
|
||||||
tar -cf $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar * > /dev/null 2>&1
|
|
||||||
pbzip2 $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar
|
|
||||||
mkdir -p $BACKUP_PATH
|
|
||||||
mv $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar.bz2 $BACKUP_PATH
|
|
||||||
cd $TMP && rm -rf backup
|
|
||||||
|
|
||||||
elif [ "$BACKUP_COMPRESSION" == "gzip" ] ; then
|
|
||||||
tar -cf $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar * > /dev/null 2>&1
|
|
||||||
gzip $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar
|
|
||||||
mkdir -p $BACKUP_PATH
|
|
||||||
mv $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar.gz $BACKUP_PATH
|
|
||||||
cd $TMP && rm -rf backup
|
|
||||||
|
|
||||||
elif [ "$BACKUP_COMPRESSION" == "bzip2" ] ; then
|
|
||||||
tar -cf $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar * > /dev/null 2>&1
|
|
||||||
bzip2 $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar
|
|
||||||
mkdir -p $BACKUP_PATH
|
|
||||||
mv $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar.bz2 $BACKUP_PATH
|
|
||||||
cd $TMP && rm -rf backup
|
|
||||||
|
|
||||||
elif [ "$BACKUP_COMPRESSION" == "zip" ] ; then
|
|
||||||
tar -cf $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar * > /dev/null 2>&1
|
|
||||||
zip -r $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar.zip $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar > /dev/null 2>&1
|
|
||||||
mkdir -p $BACKUP_PATH
|
|
||||||
mv $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar.zip $BACKUP_PATH
|
|
||||||
cd $TMP && rm -rf backup
|
|
||||||
|
|
||||||
else
|
|
||||||
echo -e " ${YEL}No supported compression method detected! Copying backup uncompressed...${CRS}\n"
|
|
||||||
mkdir -p $BACKUP_PATH
|
|
||||||
mv $TMP/backup $BACKUP_PATH/$APP_NAME.$BACKUP_METHOD.backup_$DATE
|
|
||||||
cd $TMP && rm -rf backup
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo -e " - ${CRS}Backup stored in ${CYN}$BACKUP_PATH${CRS}...${CRS}\n"
|
|
||||||
cd $CWD
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
### REMOVE
|
|
||||||
remove_application() {
|
|
||||||
if [ -d "$INSTALL_PATH" ] ; then
|
|
||||||
|
|
||||||
while true ; do
|
|
||||||
read -p " Remove $APP_NAME_LONG incl. backups, configuration and launcher? (Y/n) : " CONFIRM_REMOVE
|
|
||||||
|
|
||||||
if [[ "$CONFIRM_REMOVE" == "" || "$CONFIRM_REMOVE" == "y" || "$CONFIRM_REMOVE" == "Y" ]] ; then
|
|
||||||
REMOVABLE=("$INSTALL_PATH" "$LAUNCHER_PATH/$APP_NAME.desktop" "$APP_CONFIG_PATH" "$SCRIPT_PATH/$SCRIPT_FILE_NAME" "$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME")
|
|
||||||
echo -e "\n - ${CRS}Removing ${CYN}$APP_NAME_LONG${CRS} files, directories and configuration...${CRS}"
|
|
||||||
|
|
||||||
for RM_PATH in "${REMOVABLE[@]}" ; do
|
|
||||||
if [[ -f "$RM_PATH" || -d "$RM_PATH" ]] ; then
|
|
||||||
rm -rf "$RM_PATH"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
shell_check
|
|
||||||
|
|
||||||
if [ "$ACTIVE_SHELL" == "zsh" ] ; then
|
|
||||||
if [ "$(cat $HOME/.zshrc | grep "$ALIAS")" ] ; then
|
|
||||||
sed -i "/$APP_NAME_LONG/d" $HOME/.zshrc
|
|
||||||
sed -i "/$ALIAS/d" $HOME/.zshrc
|
|
||||||
echo -e "\n - Alias removed from ${CYN}$ACTIVE_SHELL${CRS}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
elif [ "$ACTIVE_SHELL" == "bash" ] ; then
|
|
||||||
if [ "$(cat $HOME/.bashrc | grep "$ALIAS")" ] ; then
|
|
||||||
sed -i "/$APP_NAME_LONG/d" $HOME/.bashrc
|
|
||||||
sed -i "/$ALIAS/d" $HOME/.bashrc
|
|
||||||
echo -e "\n - Alias removed from ${CYN}$ACTIVE_SHELL${CRS}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
elif [ "$ACTIVE_SHELL" == "fish" ] ; then
|
|
||||||
if [ "$(cat $HOME/.config/fish/config.fish | grep "source $HOME/.config/fish/$ALIAS.fish")" ] ; then
|
|
||||||
sed -i "/$ALIAS/d" $HOME/.config/fish/config.fish
|
|
||||||
rm $HOME/.config/fish/$ALIAS.fish
|
|
||||||
echo -e "\n - Alias removed from ${CYN}$ACTIVE_SHELL${CRS}"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo -e "\n ${YEL}$APP_NAME_LONG removed!${CRS}\n"
|
|
||||||
break
|
|
||||||
|
|
||||||
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 " ${RED}Can't remove $APP_NAME_LONG! ${CYN}$INSTALL_PATH ${RED}directory not found...${CRS}\n"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
### SCRIPT VERSION
|
|
||||||
script_version() {
|
|
||||||
echo -e "\n ${CYN}$APP_NAME_LONG Helper Script Version : ${CRS}$SCRIPT_VERSION\n"
|
|
||||||
}
|
|
||||||
|
|
||||||
### UPDATE SCRIPT
|
|
||||||
scrip_version_info() {
|
|
||||||
echo -e " - ${CYN}Local Version :\t${CRS}$SCRIPT_VERSION"
|
|
||||||
echo -e " - ${CYN}Remote Version :\t${CRS}$REMOTE_SCRIPT_VERSION"
|
|
||||||
echo -e " - ${CYN}Update Branch :\t${CRS}$REMOTE_REPO_BRANCH\n"
|
|
||||||
}
|
|
||||||
|
|
||||||
update_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
|
|
||||||
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}"
|
|
||||||
break
|
|
||||||
|
|
||||||
elif [[ "$CONFIRM_SCRIPT_INSTALL" == "n" || "$CONFIRM_SCRIPT_INSTALL" == "N" ]] ; then
|
|
||||||
echo -e " ${RED}Cancelled!${CRS}\n"
|
|
||||||
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
|
|
||||||
|
|
||||||
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 ${LCY}$SCRIPT_FILE_NAME is updatable!${CRS}\n"
|
|
||||||
scrip_version_info
|
|
||||||
|
|
||||||
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
|
|
||||||
mv $SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME $BACKUP_PATH/$AUTO_SCRIPT_FILE_NAME.old
|
|
||||||
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 " ${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}\n"
|
|
||||||
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"
|
|
||||||
scrip_version_info
|
|
||||||
echo -e " ${RED}Updating script failed...${CRS}\n"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
### 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"
|
|
||||||
}
|
|
||||||
|
|
||||||
compare_version() {
|
|
||||||
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}')
|
|
||||||
|
|
||||||
if [ -z "$APP_SOURCE_VERSION" ] ; then
|
|
||||||
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}\n"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
|
|
||||||
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
|
|
||||||
echo -e "\n ${GRN}$APP_NAME_LONG is up-to-date!${CRS}\n"
|
|
||||||
app_version_info
|
|
||||||
|
|
||||||
elif [ "$APP_SOURCE_VERSION_NUM" -gt "$LOCAL_VERSION_NUM" ] ; then
|
|
||||||
echo -e "\n ${LCY}$APP_NAME_LONG is updatable!${CRS}\n"
|
|
||||||
app_version_info
|
|
||||||
|
|
||||||
else
|
|
||||||
echo -e "\n ${RED}Version tags malformed or you are using a Beta version!${CRS}\n"
|
|
||||||
app_version_info
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
### 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 "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-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_FILE_NAME"
|
|
||||||
echo -e "\t-h\tPrint this help page\n"
|
|
||||||
echo -e "Configured directories:\n"
|
|
||||||
echo -e "\t${CYN}${INSTALL_PATH}${CRS}\t\tInstall 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 ":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}"
|
|
||||||
help
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
|
|
||||||
case $OPTION in
|
|
||||||
i)
|
|
||||||
echo -e "\n ${YEL}Installing $APP_NAME_LONG...${CRS}\n"
|
|
||||||
if [ "$#" -gt "1" ] ; then
|
|
||||||
ALL_PARAMETER=$@
|
|
||||||
|
|
||||||
for PARAMETER in ${ALL_PARAMETER[@]} ; do
|
|
||||||
if [ -d "$PARAMETER" ] ; then
|
|
||||||
INSTALL_PATH=$PARAMETER
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
dependency_check
|
|
||||||
arch_check
|
|
||||||
install_application
|
|
||||||
exit_clean ;;
|
|
||||||
|
|
||||||
l)
|
|
||||||
echo -e "\n ${YEL}Adding $APP_NAME_LONG launcher...${CRS}"
|
|
||||||
dependency_check
|
|
||||||
local_check
|
|
||||||
add_launcher
|
|
||||||
exit_clean ;;
|
|
||||||
|
|
||||||
a)
|
|
||||||
echo -e "\n ${YEL}Adding alias...${CRS}"
|
|
||||||
if [ "$#" -gt "1" ] ; then
|
|
||||||
ALL_PARAMETER=$@
|
|
||||||
|
|
||||||
for PARAMETER in ${ALL_PARAMETER[@]} ; do
|
|
||||||
if [ "$PARAMETER" ] ; then
|
|
||||||
ALIAS=$PARAMETER
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
shell_check
|
|
||||||
add_alias
|
|
||||||
exit ;;
|
|
||||||
|
|
||||||
u)
|
|
||||||
echo -e "\n ${YEL}Updating $APP_NAME_LONG...${CRS}"
|
|
||||||
dependency_check
|
|
||||||
arch_check
|
|
||||||
local_check
|
|
||||||
update_application
|
|
||||||
exit_clean ;;
|
|
||||||
|
|
||||||
b)
|
|
||||||
echo -e "\n ${YEL}Backing up $APP_NAME_LONG...${CRS}"
|
|
||||||
if [ "$#" -gt "1" ] ; then
|
|
||||||
ALL_PARAMETER=$@
|
|
||||||
|
|
||||||
for PARAMETER in ${ALL_PARAMETER[@]} ; do
|
|
||||||
if [[ "$PARAMETER" == "script" || "$PARAMETER" == "config" || "$PARAMETER" == "app" || "$PARAMETER" == "full" ]] ; then
|
|
||||||
BACKUP_METHOD=$PARAMETER
|
|
||||||
|
|
||||||
elif [[ "$PARAMETER" == "pbzip2" || "$PARAMETER" == "gzip" || "$PARAMETER" == "bzip2" || "$PARAMETER" == "zip" ]] ; then
|
|
||||||
BACKUP_COMPRESSION_OVERRIDE=$PARAMETER
|
|
||||||
|
|
||||||
elif [ -d "$PARAMETER" ] ; then
|
|
||||||
BACKUP_PATH=$PARAMETER
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
call_backup
|
|
||||||
exit ;;
|
|
||||||
|
|
||||||
r)
|
|
||||||
echo -e "\n ${YEL}Removing $APP_NAME_LONG...${CRS}\n"
|
|
||||||
remove_application
|
|
||||||
exit ;;
|
|
||||||
|
|
||||||
c)
|
|
||||||
echo -e "\n ${YEL}Comparing remote to local version...${CRS}"
|
|
||||||
dependency_check
|
|
||||||
local_check
|
|
||||||
compare_version
|
|
||||||
exit_clean ;;
|
|
||||||
|
|
||||||
s)
|
|
||||||
script_version
|
|
||||||
exit ;;
|
|
||||||
|
|
||||||
S)
|
|
||||||
echo -e "\n ${YEL}Updating script...${CRS}"
|
|
||||||
dependency_check
|
|
||||||
update_script
|
|
||||||
exit_clean ;;
|
|
||||||
|
|
||||||
h)
|
|
||||||
help
|
|
||||||
exit ;;
|
|
||||||
|
|
||||||
*)
|
|
||||||
echo -e "\n${YEL}Option ${RED}$1${YEL} not recognized... Refer to help below!${CRS}"
|
|
||||||
help
|
|
||||||
exit ;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
## ENVIRONMENT CHECK
|
|
||||||
dependency_check
|
|
||||||
arch_check
|
|
||||||
|
|
||||||
## CHECK LOCAL INSTALL
|
|
||||||
local_check
|
|
||||||
|
|
||||||
## UPDATE
|
|
||||||
update_application
|
|
||||||
|
|
||||||
## CLEAN
|
|
||||||
exit_clean
|
|
||||||
|
|
@ -1,825 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
# Helium BOWSER INSTALL & UPDATE SCRIPT ---> INTERACTIVE
|
|
||||||
########## PREREQUISITES ###########
|
|
||||||
set -e
|
|
||||||
|
|
||||||
## SOME COLOR
|
|
||||||
CYN="\e[0;36m"
|
|
||||||
YEL="\e[0;33m"
|
|
||||||
RED="\e[0;31m"
|
|
||||||
GRN="\e[0;32m"
|
|
||||||
LCY="\e[1;36m"
|
|
||||||
WHT="\e[1;37m"
|
|
||||||
CRS="\e[0m"
|
|
||||||
|
|
||||||
## GLOBAL VARIABLES
|
|
||||||
APP_NAME="Helium"
|
|
||||||
APP_NAME_LONG="Helium Web Browser"
|
|
||||||
FILE_EXTENSION="AppImage"
|
|
||||||
APP_SOURCE="GitHub"
|
|
||||||
ARCH_OVERRIDE=""
|
|
||||||
BACKUP_METHOD="full"
|
|
||||||
BACKUP_COMPRESSION_OVERRIDE=""
|
|
||||||
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"
|
|
||||||
DATE=$(date +"%d%m%y")
|
|
||||||
|
|
||||||
## LOCATIONS
|
|
||||||
TMP=/tmp/$APP_NAME
|
|
||||||
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/applications
|
|
||||||
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() {
|
|
||||||
if ! command -v $PACKAGE > /dev/null 2>&1 ; then
|
|
||||||
echo " - $PACKAGE" >> $TMP/missingDeps
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
dependency_check () {
|
|
||||||
DEPENDENCIES=("curl" "wget" "tar")
|
|
||||||
mkdir -p $TMP
|
|
||||||
|
|
||||||
for PACKAGE in "${DEPENDENCIES[@]}" ; do
|
|
||||||
cmd_query "$PACKAGE"
|
|
||||||
|
|
||||||
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"
|
|
||||||
exit_clean
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
### SHELL CHECK
|
|
||||||
shell_query() {
|
|
||||||
if [ "$(echo $SHELL | grep "$SHELL_OPTION")" ] ; then
|
|
||||||
ACTIVE_SHELL=$SHELL_OPTION
|
|
||||||
fi
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
shell_check() {
|
|
||||||
SHELLS=("bash" "fish" "zsh")
|
|
||||||
|
|
||||||
for SHELL_OPTION in "${SHELLS[@]}" ; do
|
|
||||||
shell_query "$SHELL_OPTION"
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
### ARCH CHECK
|
|
||||||
arch_check() {
|
|
||||||
if [ "$ARCH_OVERRIDE" ] ; then
|
|
||||||
ARCH=$ARCH_OVERRIDE
|
|
||||||
|
|
||||||
else
|
|
||||||
ARCH=$(uname -m)
|
|
||||||
if [ "$ARCH" == "aarch64" ] ; then
|
|
||||||
ARCH="arm64"
|
|
||||||
|
|
||||||
elif [ "$ARCH" == "amd64" ] ; then
|
|
||||||
ARCH="x86_64"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ! [[ "$ARCH" == "arm64" || "$ARCH" == "x86_64" ]] ; then
|
|
||||||
echo -e "\n ${CYN}$ARCH ${RED}unsupported! Only ${CYN}x86_68 ${RED}or ${CYN}arm64 ${RED}architecture are supported!${CRS}\n"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
### CHECK LOCAL INSTALL
|
|
||||||
local_check() {
|
|
||||||
if ! [ -d "$INSTALL_PATH" ] ; then
|
|
||||||
echo -e "\n ${YEL}$APP_NAME_LONG directory not found!${CRS}\n"
|
|
||||||
install_application
|
|
||||||
exit
|
|
||||||
|
|
||||||
elif ! [ -f "$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" ] ; then
|
|
||||||
echo -e "\n ${YEL}$APP_NAME_LONG directory found but no executable named ${CYN}$APP_NAME.$FILE_EXTENSION${YEL}!${CRS}\n"
|
|
||||||
install_application
|
|
||||||
exit
|
|
||||||
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}"
|
|
||||||
update_application
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
|
|
||||||
while true ; do
|
|
||||||
read -p " Download and install $APP_NAME_LONG from $APP_SOURCE? (Y/n) : " CONFIRM_INSTALL
|
|
||||||
|
|
||||||
if [[ "$CONFIRM_INSTALL" == "" || "$CONFIRM_INSTALL" == "y" || "$CONFIRM_INSTALL" == "Y" ]] ; then
|
|
||||||
DOWNLOAD_URL=$(curl -s $APP_SOURCE_URL | grep "browser_download_url" | grep "$ARCH.$FILE_EXTENSION" | grep -v "zsync" | tr -d \" | awk '{print $2}')
|
|
||||||
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}')
|
|
||||||
echo -e "\n - Downloading ${CYN}$APP_SOURCE_FILENAME${CRS}..."
|
|
||||||
wget -P $TMP $DOWNLOAD_URL -q
|
|
||||||
chmod +x $TMP/$APP_SOURCE_FILENAME
|
|
||||||
mkdir -p $INSTALL_PATH
|
|
||||||
mv $TMP/$APP_SOURCE_FILENAME $INSTALL_PATH/$APP_NAME.$FILE_EXTENSION
|
|
||||||
add_launcher
|
|
||||||
echo -e "\n ${GRN}$APP_NAME_LONG is installed!${CRS}\n"
|
|
||||||
break
|
|
||||||
|
|
||||||
elif [[ "$CONFIRM_INSTALL" == "n" || "$CONFIRM_INSTALL" == "N" ]] ; then
|
|
||||||
echo -e "\n ${RED}Cancelled!${CRS}\n"
|
|
||||||
break
|
|
||||||
|
|
||||||
else
|
|
||||||
echo -e "\n ${YEL}Invalid response!${CRS}\n"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
### LAUNCHER
|
|
||||||
add_launcher() {
|
|
||||||
if [ -f "$LAUNCHER_PATH/$APP_NAME.desktop" ] ; then
|
|
||||||
echo -e "\n ${YEL}${APP_NAME}.desktop already exists!${CRS}"
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
if [[ "$CONFIRM_LAUNCHER" == "" || "$CONFIRM_LAUNCHER" == "y" || "$CONFIRM_LAUNCHER" == "Y" ]] ; then
|
|
||||||
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
|
|
||||||
echo -e "\n - Downloading ${CYN}$AUTO_SCRIPT_FILE_NAME${CRS}..."
|
|
||||||
wget -P $TMP $AUTO_SCRIPT_URL -q
|
|
||||||
chmod +x $TMP/$AUTO_SCRIPT_FILE_NAME
|
|
||||||
mv $TMP/$AUTO_SCRIPT_FILE_NAME $SCRIPT_PATH
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo -e "\n - Downloading ${CYN}launcher files${CRS}..."
|
|
||||||
wget -P $TMP $LAUNCHER_URL -q
|
|
||||||
wget -P $TMP $ICON_URL -q
|
|
||||||
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
|
|
||||||
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 " ${RED}Launcher not added!${CRS}"
|
|
||||||
break
|
|
||||||
|
|
||||||
else
|
|
||||||
echo -e " ${YEL}Invalid response!${CRS}\n"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
else
|
|
||||||
echo -e "\n ${RED}$APP_NAME_LONG AppImage not found! Can't add launcher...${CRS}"
|
|
||||||
install_application
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
### ALIAS
|
|
||||||
add_alias() {
|
|
||||||
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 [ "$ACTIVE_SHELL" == "zsh" ] ; then
|
|
||||||
if [ "$(cat $HOME/.zshrc | grep "$ALIAS")" ] ; then
|
|
||||||
echo -e "\n ${LCY}$ALIAS${CRS} already present in ${CYN}$HOME/.zshrc${CRS}\n"
|
|
||||||
|
|
||||||
else
|
|
||||||
echo "### $APP_NAME_LONG Alias zsh ###" >> $HOME/.zshrc
|
|
||||||
echo "alias $ALIAS=\"$SCRIPT_PATH/$SCRIPT_FILE_NAME\"" >> $HOME/.zshrc
|
|
||||||
echo >> $HOME/.zshrc
|
|
||||||
echo -e "\n ${LCY}$ALIAS${CRS} added to ${CYN}$HOME/.zshrc${CRS}\n"
|
|
||||||
fi
|
|
||||||
|
|
||||||
elif [ "$ACTIVE_SHELL" == "bash" ] ; then
|
|
||||||
if [ "$(cat $HOME/.bashrc | grep "$ALIAS")" ] ; then
|
|
||||||
echo -e "\n ${LCY}$ALIAS${CRS} already present in ${CYN}$HOME/.bashrc${CRS}\n"
|
|
||||||
|
|
||||||
else
|
|
||||||
echo "### $APP_NAME_LONG Alias bash ###" >> $HOME/.bashrc
|
|
||||||
echo "alias $ALIAS=\"$SCRIPT_PATH/$SCRIPT_FILE_NAME\"" >> $HOME/.bashrc
|
|
||||||
echo >> $HOME/.bashrc
|
|
||||||
echo -e "\n ${LCY}$ALIAS${CRS} added to ${CYN}$HOME/.bashrc${CRS}\n"
|
|
||||||
fi
|
|
||||||
|
|
||||||
elif [ "$ACTIVE_SHELL" == "fish" ] ; then
|
|
||||||
if [ "$(cat $HOME/.config/fish/config.fish | grep "source $HOME/.config/fish/$ALIAS.fish")" ] ; then
|
|
||||||
echo -e "\n ${LCY}$ALIAS${CRS} already present in ${CYN}$HOME/.config/fish/config.fish${CRS}\n"
|
|
||||||
|
|
||||||
else
|
|
||||||
echo "### $APP_NAME_LONG Alias FISH ###" > $HOME/.config/fish/$ALIAS.fish
|
|
||||||
echo >> $HOME/.config/fish/$ALIAS.fish
|
|
||||||
echo "function $ALIAS" >> $HOME/.config/fish/$ALIAS.fish
|
|
||||||
echo " $SCRIPT_PATH/$SCRIPT_FILE_NAME \$argv" >> $HOME/.config/fish/$ALIAS.fish
|
|
||||||
echo "end" >> $HOME/.config/fish/$ALIAS.fish
|
|
||||||
echo >> $HOME/.config/fish/$ALIAS.fish
|
|
||||||
echo "source $HOME/.config/fish/$ALIAS.fish" >> $HOME/.config/fish/config.fish
|
|
||||||
echo -e "\n ${LCY}$ALIAS ${CRS}added to ${CYN}$HOME/.config/fish/config.fish${CRS}\n"
|
|
||||||
fi
|
|
||||||
|
|
||||||
else
|
|
||||||
echo -e "\n ${LCY}$ACTIVE_SHELL${RED}shell is not yet supported!${CRS}\n"
|
|
||||||
echo -e " ${CRS}Working implementation are available for bash, zsh & fish!${CRS}\n"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
### 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}"
|
|
||||||
exit
|
|
||||||
|
|
||||||
elif [ -z "$LOCAL_VERSION" ] ; then
|
|
||||||
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 .)
|
|
||||||
|
|
||||||
if [ "$APP_SOURCE_VERSION" == "$LOCAL_VERSION" ] ; then
|
|
||||||
echo -e "\n ${GRN}$APP_NAME_LONG is already up-to-date!${CRS}\n"
|
|
||||||
|
|
||||||
elif [ "$APP_SOURCE_VERSION_NUM" -gt "$LOCAL_VERSION_NUM" ] ; then
|
|
||||||
echo -e "\n ${LCY}$APP_NAME_LONG is updatable!${CRS}\n"
|
|
||||||
app_version_info
|
|
||||||
|
|
||||||
while true ; do
|
|
||||||
read -p " Download and update $APP_NAME_LONG from $APP_SOURCE? (Y/n) : " CONFIRM
|
|
||||||
|
|
||||||
if [[ "$CONFIRM" == "" || "$CONFIRM" == "y" || "$CONFIRM" == "Y" ]] ; then
|
|
||||||
DOWNLOAD_URL=$(curl -s $APP_SOURCE_URL | grep "browser_download_url" | grep "$ARCH.$FILE_EXTENSION" | grep -v "zsync" | tr -d \" | awk '{print $2}')
|
|
||||||
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
|
|
||||||
echo -e "\n - Downloading ${CYN}$APP_SOURCE_FILENAME${CRS}..."
|
|
||||||
wget -P $TMP $DOWNLOAD_URL -q
|
|
||||||
${BACKUP_METHOD}_backup
|
|
||||||
chmod +x $TMP/$APP_SOURCE_FILENAME
|
|
||||||
mv $TMP/$APP_SOURCE_FILENAME $INSTALL_PATH/$APP_NAME.$FILE_EXTENSION
|
|
||||||
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 " ${GRN}$APP_NAME_LONG is up-to-date!${CRS}\n"
|
|
||||||
break
|
|
||||||
|
|
||||||
elif [[ "$CONFIRM" == "n" || "$CONFIRM" == "N" ]] ; then
|
|
||||||
echo -e "\n ${RED}Cancelled!${CRS}\n"
|
|
||||||
exit
|
|
||||||
|
|
||||||
else
|
|
||||||
echo -e "\n ${YEL}Invalid response!${CRS}\n"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
else
|
|
||||||
echo -e "\n ${RED}Version tags malformed or you are using a Beta version!${CRS}\n"
|
|
||||||
app_version_info
|
|
||||||
echo -e " ${RED}Update failed... Exiting...${CRS}\n"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
### BACKUP
|
|
||||||
call_backup() {
|
|
||||||
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
|
|
||||||
read -p " Overwrite backup? (y/N) : " OVERWRITE_BACKUP
|
|
||||||
|
|
||||||
if [[ "$OVERWRITE_BACKUP" == "" || "$OVERWRITE_BACKUP" == "n" || "$OVERWRITE_BACKUP" == "N" ]] ; then
|
|
||||||
echo -e "\n ${YEL}Skipping backup process...${CRS}\n"
|
|
||||||
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
|
|
||||||
|
|
||||||
else
|
|
||||||
${BACKUP_METHOD}_backup
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
backup_file_collector() {
|
|
||||||
for BACKUP_ITEM in ${BACKUPABLE[@]} ; do
|
|
||||||
|
|
||||||
if [ -d "$BACKUP_ITEM" ] ; then
|
|
||||||
mkdir -p $TMP/backup
|
|
||||||
cp -r $BACKUP_ITEM $TMP/backup
|
|
||||||
|
|
||||||
elif [ -f "$BACKUP_ITEM" ] ; then
|
|
||||||
mkdir -p $TMP/backup
|
|
||||||
cp $BACKUP_ITEM $TMP/backup
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
script_backup() {
|
|
||||||
if [ -d "$SCRIPT_PATH" ] ; then
|
|
||||||
BACKUPABLE=("$SCRIPT_PATH/$SCRIPT_FILE_NAME" "$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME")
|
|
||||||
echo -e "\n - ${CRS}Collecting files for ${CYN}$BACKUP_METHOD${CRS} backup...${CRS}"
|
|
||||||
backup_file_collector
|
|
||||||
pack_backup
|
|
||||||
|
|
||||||
else
|
|
||||||
echo -e " ${YEL}Nothing to back up...${CRS}"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
app_backup() {
|
|
||||||
if [ -f "$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION" ] ; then
|
|
||||||
BACKUPABLE=("$INSTALL_PATH/$APP_NAME.$FILE_EXTENSION")
|
|
||||||
echo -e "\n - ${CRS}Collecting files for ${CYN}$BACKUP_METHOD${CRS} backup...${CRS}"
|
|
||||||
backup_file_collector
|
|
||||||
pack_backup
|
|
||||||
|
|
||||||
else
|
|
||||||
echo -e " ${YEL}Nothing to back up...${CRS}"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
config_backup() {
|
|
||||||
if [[ -d "$LAUNCHER_PATH" || -d $APP_CONFIG_PATH ]] ; then
|
|
||||||
BACKUPABLE=("$LAUNCHER_PATH/$APP_NAME.desktop" "$APP_CONFIG_PATH")
|
|
||||||
echo -e "\n - ${CRS}Collecting files for ${CYN}$BACKUP_METHOD${CRS} backup...${CRS}"
|
|
||||||
backup_file_collector
|
|
||||||
pack_backup
|
|
||||||
|
|
||||||
else
|
|
||||||
echo -e " ${YEL}Nothing to back up...${CRS}"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
full_backup() {
|
|
||||||
if [[ -d "$INSTALL_PATH" || -d "$SCRIPT_PATH" || -d $APP_CONFIG_PATH ]] ; then
|
|
||||||
BACKUPABLE=("$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")
|
|
||||||
echo -e "\n - ${CRS}Collecting files for ${CYN}$BACKUP_METHOD${CRS} backup...${CRS}"
|
|
||||||
backup_file_collector
|
|
||||||
pack_backup
|
|
||||||
|
|
||||||
else
|
|
||||||
echo -e " ${YEL}Nothing to back up...${CRS}"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
pack_backup() {
|
|
||||||
if [ -d "$TMP/backup" ] ; then
|
|
||||||
CWD=$(pwd)
|
|
||||||
cd $TMP/backup
|
|
||||||
|
|
||||||
if [[ -f "*.sh" ]] ; then
|
|
||||||
chmod -x *.sh
|
|
||||||
|
|
||||||
elif [[ -f "*.$FILE_EXTENSION" ]] ; then
|
|
||||||
chmod -x *.$FILE_EXTENSION
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$BACKUP_COMPRESSION_OVERRIDE" ] ; then
|
|
||||||
BACKUP_COMPRESSION=$BACKUP_COMPRESSION_OVERRIDE
|
|
||||||
|
|
||||||
else
|
|
||||||
COMPRESSION_METHOD=("pbzip2" "gzip" "bzip2" "zip")
|
|
||||||
|
|
||||||
until [ "$BACKUP_COMPRESSION" ] ; do
|
|
||||||
for COMPRESSION_TYPE in ${COMPRESSION_METHOD[@]} ; do
|
|
||||||
|
|
||||||
if [ "$(command -v $COMPRESSION_TYPE) > /dev/null 2>&1" ] ; then
|
|
||||||
BACKUP_COMPRESSION=$COMPRESSION_TYPE
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo -e "\n - ${CRS}Packing backup archive with ${CYN}$BACKUP_COMPRESSION${CRS}...${CRS}\n"
|
|
||||||
|
|
||||||
if [ "$BACKUP_COMPRESSION" == "pbzip2" ] ; then
|
|
||||||
tar -cf $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar * > /dev/null 2>&1
|
|
||||||
pbzip2 $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar
|
|
||||||
mkdir -p $BACKUP_PATH
|
|
||||||
mv $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar.bz2 $BACKUP_PATH
|
|
||||||
cd $TMP && rm -rf backup
|
|
||||||
|
|
||||||
elif [ "$BACKUP_COMPRESSION" == "gzip" ] ; then
|
|
||||||
tar -cf $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar * > /dev/null 2>&1
|
|
||||||
gzip $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar
|
|
||||||
mkdir -p $BACKUP_PATH
|
|
||||||
mv $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar.gz $BACKUP_PATH
|
|
||||||
cd $TMP && rm -rf backup
|
|
||||||
|
|
||||||
elif [ "$BACKUP_COMPRESSION" == "bzip2" ] ; then
|
|
||||||
tar -cf $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar * > /dev/null 2>&1
|
|
||||||
bzip2 $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar
|
|
||||||
mkdir -p $BACKUP_PATH
|
|
||||||
mv $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar.bz2 $BACKUP_PATH
|
|
||||||
cd $TMP && rm -rf backup
|
|
||||||
|
|
||||||
elif [ "$BACKUP_COMPRESSION" == "zip" ] ; then
|
|
||||||
tar -cf $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar * > /dev/null 2>&1
|
|
||||||
zip -r $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar.zip $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar > /dev/null 2>&1
|
|
||||||
mkdir -p $BACKUP_PATH
|
|
||||||
mv $APP_NAME.$BACKUP_METHOD.backup_$DATE.tar.zip $BACKUP_PATH
|
|
||||||
cd $TMP && rm -rf backup
|
|
||||||
|
|
||||||
else
|
|
||||||
echo -e " ${YEL}No supported compression method detected! Copying backup uncompressed...${CRS}\n"
|
|
||||||
mkdir -p $BACKUP_PATH
|
|
||||||
mv $TMP/backup $BACKUP_PATH/$APP_NAME.$BACKUP_METHOD.backup_$DATE
|
|
||||||
cd $TMP && rm -rf backup
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo -e " - ${CRS}Backup stored in ${CYN}$BACKUP_PATH${CRS}...${CRS}\n"
|
|
||||||
cd $CWD
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
### REMOVE
|
|
||||||
remove_application() {
|
|
||||||
if [ -d "$INSTALL_PATH" ] ; then
|
|
||||||
|
|
||||||
while true ; do
|
|
||||||
read -p " Remove $APP_NAME_LONG incl. backups, configuration and launcher? (Y/n) : " CONFIRM_REMOVE
|
|
||||||
|
|
||||||
if [[ "$CONFIRM_REMOVE" == "" || "$CONFIRM_REMOVE" == "y" || "$CONFIRM_REMOVE" == "Y" ]] ; then
|
|
||||||
REMOVABLE=("$INSTALL_PATH" "$LAUNCHER_PATH/$APP_NAME.desktop" "$APP_CONFIG_PATH" "$SCRIPT_PATH/$SCRIPT_FILE_NAME" "$SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME")
|
|
||||||
echo -e "\n - ${CRS}Removing ${CYN}$APP_NAME_LONG${CRS} files, directories and configuration...${CRS}"
|
|
||||||
|
|
||||||
for RM_PATH in "${REMOVABLE[@]}" ; do
|
|
||||||
if [[ -f "$RM_PATH" || -d "$RM_PATH" ]] ; then
|
|
||||||
rm -rf "$RM_PATH"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
shell_check
|
|
||||||
|
|
||||||
if [ "$ACTIVE_SHELL" == "zsh" ] ; then
|
|
||||||
if [ "$(cat $HOME/.zshrc | grep "$ALIAS")" ] ; then
|
|
||||||
sed -i "/$APP_NAME_LONG/d" $HOME/.zshrc
|
|
||||||
sed -i "/$ALIAS/d" $HOME/.zshrc
|
|
||||||
echo -e "\n - Alias removed from ${CYN}$ACTIVE_SHELL${CRS}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
elif [ "$ACTIVE_SHELL" == "bash" ] ; then
|
|
||||||
if [ "$(cat $HOME/.bashrc | grep "$ALIAS")" ] ; then
|
|
||||||
sed -i "/$APP_NAME_LONG/d" $HOME/.bashrc
|
|
||||||
sed -i "/$ALIAS/d" $HOME/.bashrc
|
|
||||||
echo -e "\n - Alias removed from ${CYN}$ACTIVE_SHELL${CRS}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
elif [ "$ACTIVE_SHELL" == "fish" ] ; then
|
|
||||||
if [ "$(cat $HOME/.config/fish/config.fish | grep "source $HOME/.config/fish/$ALIAS.fish")" ] ; then
|
|
||||||
sed -i "/$ALIAS/d" $HOME/.config/fish/config.fish
|
|
||||||
rm $HOME/.config/fish/$ALIAS.fish
|
|
||||||
echo -e "\n - Alias removed from ${CYN}$ACTIVE_SHELL${CRS}"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo -e "\n ${YEL}$APP_NAME_LONG removed!${CRS}\n"
|
|
||||||
break
|
|
||||||
|
|
||||||
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 " ${RED}Can't remove $APP_NAME_LONG! ${CYN}$INSTALL_PATH ${RED}directory not found...${CRS}\n"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
### SCRIPT VERSION
|
|
||||||
script_version() {
|
|
||||||
echo -e "\n ${CYN}$APP_NAME_LONG Helper Script Version : ${CRS}$SCRIPT_VERSION\n"
|
|
||||||
}
|
|
||||||
|
|
||||||
### UPDATE SCRIPT
|
|
||||||
scrip_version_info() {
|
|
||||||
echo -e " - ${CYN}Local Version :\t${CRS}$SCRIPT_VERSION"
|
|
||||||
echo -e " - ${CYN}Remote Version :\t${CRS}$REMOTE_SCRIPT_VERSION"
|
|
||||||
echo -e " - ${CYN}Update Branch :\t${CRS}$REMOTE_REPO_BRANCH\n"
|
|
||||||
}
|
|
||||||
|
|
||||||
update_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
|
|
||||||
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}"
|
|
||||||
break
|
|
||||||
|
|
||||||
elif [[ "$CONFIRM_SCRIPT_INSTALL" == "n" || "$CONFIRM_SCRIPT_INSTALL" == "N" ]] ; then
|
|
||||||
echo -e " ${RED}Cancelled!${CRS}\n"
|
|
||||||
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
|
|
||||||
|
|
||||||
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 ${LCY}$SCRIPT_FILE_NAME is updatable!${CRS}\n"
|
|
||||||
scrip_version_info
|
|
||||||
|
|
||||||
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
|
|
||||||
mv $SCRIPT_PATH/$AUTO_SCRIPT_FILE_NAME $BACKUP_PATH/$AUTO_SCRIPT_FILE_NAME.old
|
|
||||||
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 " ${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}\n"
|
|
||||||
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"
|
|
||||||
scrip_version_info
|
|
||||||
echo -e " ${RED}Updating script failed...${CRS}\n"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
### 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"
|
|
||||||
}
|
|
||||||
|
|
||||||
compare_version() {
|
|
||||||
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}')
|
|
||||||
|
|
||||||
if [ -z "$APP_SOURCE_VERSION" ] ; then
|
|
||||||
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}\n"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
|
|
||||||
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
|
|
||||||
echo -e "\n ${GRN}$APP_NAME_LONG is up-to-date!${CRS}\n"
|
|
||||||
app_version_info
|
|
||||||
|
|
||||||
elif [ "$APP_SOURCE_VERSION_NUM" -gt "$LOCAL_VERSION_NUM" ] ; then
|
|
||||||
echo -e "\n ${LCY}$APP_NAME_LONG is updatable!${CRS}\n"
|
|
||||||
app_version_info
|
|
||||||
|
|
||||||
else
|
|
||||||
echo -e "\n ${RED}Version tags malformed or you are using a Beta version!${CRS}\n"
|
|
||||||
app_version_info
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
### 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 "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-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_FILE_NAME"
|
|
||||||
echo -e "\t-h\tPrint this help page\n"
|
|
||||||
echo -e "Configured directories:\n"
|
|
||||||
echo -e "\t${CYN}${INSTALL_PATH}${CRS}\t\tInstall 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 ":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}"
|
|
||||||
help
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
|
|
||||||
case $OPTION in
|
|
||||||
i)
|
|
||||||
echo -e "\n ${YEL}Installing $APP_NAME_LONG...${CRS}\n"
|
|
||||||
if [ "$#" -gt "1" ] ; then
|
|
||||||
ALL_PARAMETER=$@
|
|
||||||
|
|
||||||
for PARAMETER in ${ALL_PARAMETER[@]} ; do
|
|
||||||
if [ -d "$PARAMETER" ] ; then
|
|
||||||
INSTALL_PATH=$PARAMETER
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
dependency_check
|
|
||||||
arch_check
|
|
||||||
install_application
|
|
||||||
exit_clean ;;
|
|
||||||
|
|
||||||
l)
|
|
||||||
echo -e "\n ${YEL}Adding $APP_NAME_LONG launcher...${CRS}"
|
|
||||||
dependency_check
|
|
||||||
local_check
|
|
||||||
add_launcher
|
|
||||||
exit_clean ;;
|
|
||||||
|
|
||||||
a)
|
|
||||||
echo -e "\n ${YEL}Adding alias...${CRS}"
|
|
||||||
if [ "$#" -gt "1" ] ; then
|
|
||||||
ALL_PARAMETER=$@
|
|
||||||
|
|
||||||
for PARAMETER in ${ALL_PARAMETER[@]} ; do
|
|
||||||
if [ "$PARAMETER" ] ; then
|
|
||||||
ALIAS=$PARAMETER
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
shell_check
|
|
||||||
add_alias
|
|
||||||
exit ;;
|
|
||||||
|
|
||||||
u)
|
|
||||||
echo -e "\n ${YEL}Updating $APP_NAME_LONG...${CRS}"
|
|
||||||
dependency_check
|
|
||||||
arch_check
|
|
||||||
local_check
|
|
||||||
update_application
|
|
||||||
exit_clean ;;
|
|
||||||
|
|
||||||
b)
|
|
||||||
echo -e "\n ${YEL}Backing up $APP_NAME_LONG...${CRS}"
|
|
||||||
if [ "$#" -gt "1" ] ; then
|
|
||||||
ALL_PARAMETER=$@
|
|
||||||
|
|
||||||
for PARAMETER in ${ALL_PARAMETER[@]} ; do
|
|
||||||
if [[ "$PARAMETER" == "script" || "$PARAMETER" == "config" || "$PARAMETER" == "app" || "$PARAMETER" == "full" ]] ; then
|
|
||||||
BACKUP_METHOD=$PARAMETER
|
|
||||||
|
|
||||||
elif [[ "$PARAMETER" == "pbzip2" || "$PARAMETER" == "gzip" || "$PARAMETER" == "bzip2" || "$PARAMETER" == "zip" ]] ; then
|
|
||||||
BACKUP_COMPRESSION_OVERRIDE=$PARAMETER
|
|
||||||
|
|
||||||
elif [ -d "$PARAMETER" ] ; then
|
|
||||||
BACKUP_PATH=$PARAMETER
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
call_backup
|
|
||||||
exit ;;
|
|
||||||
|
|
||||||
r)
|
|
||||||
echo -e "\n ${YEL}Removing $APP_NAME_LONG...${CRS}\n"
|
|
||||||
remove_application
|
|
||||||
exit ;;
|
|
||||||
|
|
||||||
c)
|
|
||||||
echo -e "\n ${YEL}Comparing remote to local version...${CRS}"
|
|
||||||
dependency_check
|
|
||||||
local_check
|
|
||||||
compare_version
|
|
||||||
exit_clean ;;
|
|
||||||
|
|
||||||
s)
|
|
||||||
script_version
|
|
||||||
exit ;;
|
|
||||||
|
|
||||||
S)
|
|
||||||
echo -e "\n ${YEL}Updating script...${CRS}"
|
|
||||||
dependency_check
|
|
||||||
update_script
|
|
||||||
exit_clean ;;
|
|
||||||
|
|
||||||
h)
|
|
||||||
help
|
|
||||||
exit ;;
|
|
||||||
|
|
||||||
*)
|
|
||||||
echo -e "\n${YEL}Option ${RED}$1${YEL} not recognized... Refer to help below!${CRS}"
|
|
||||||
help
|
|
||||||
exit ;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
## ENVIRONMENT CHECK
|
|
||||||
dependency_check
|
|
||||||
arch_check
|
|
||||||
|
|
||||||
## CHECK LOCAL INSTALL
|
|
||||||
local_check
|
|
||||||
|
|
||||||
## UPDATE
|
|
||||||
update_application
|
|
||||||
|
|
||||||
## CLEAN
|
|
||||||
exit_clean
|
|
||||||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue