diff --git a/helium_helper.sh b/helium_helper.sh index 074fe40..92e5019 100755 --- a/helium_helper.sh +++ b/helium_helper.sh @@ -2,6 +2,8 @@ # HELIUM BOWSER INSTALL & UPDATE SCRIPT ---> INTERACTIVE +########## PREREQUISITES ########### + ## SOME COLOR CYN="\e[0;36m" YEL="\e[0;33m" @@ -16,22 +18,59 @@ INSTALL_PATH=$HOME/.apps/Helium #PROFILE=$HOME/.profile ### for AUTO UPDATE ## GLOBAL VARIABLES -SCRIPT_NAME="Helium Helper" -SCRIPT_VERSION="0.4" +SCRIPT_NAME="Helium Helper Script" +SCRIPT_VERSION="0.4.1" DEPENDENCIES=("curl" "wget") MISSING=$(cat $TMP/missingDeps 2>/dev/null) GIT_VERSION=$(curl -s https://api.github.com/repos/imputnet/helium-linux/releases/latest | grep "tag_name" | tr -d \", | awk '{print $2}') -## FUNCTIONS -### DEPENDENCIES -dependency_check() { - local PACKAGE="$1" +########## FUNCTIONS ########### - if command -v "$PACKAGE" >/dev/null 2>&1 ; then +### DEPENDENCIES +dependency_check() { + cmd_query() { + local PACKAGE="$1" + + if command -v "$PACKAGE" >/dev/null 2>&1 ; then + : + + else + echo "$PACKAGE" >> $TMP/missingDeps + + fi + } + + for PACKAGE in "${DEPENDENCIES[@]}" ; do + cmd_query "$PACKAGE" + + done + + if ! [ "$MISSING" ] ; then : else - echo "$PACKAGE" >> $TMP/missingDeps + echo -e "\n ${RED}Following dependencies are missing :\n\n${YEL}$MISSING\n\n ${CYN}Please install and re-run script!${CRS}" + rm $TMP/missingDeps + exit 1 + + fi +} + +### CHECK LOCAL INSTALL +local_check() { + + if ! [ -d "$INSTALL_PATH" ] ; then + echo -e "\n ${RED}Helium directory not found!${CRS}" + install_helium + exit 1 + + elif ! [ -f "$INSTALL_PATH/helium-browser.AppImage" ] ; then + echo -e "\n ${RED}Helium directory found but no executable named ${CYN}helium-browser.AppImage${RED}!${CRS}" + install_helium + exit 1 + + else + : fi } @@ -39,6 +78,16 @@ dependency_check() { ### INSTALL install_helium() { + if [ -f "$INSTALL_PATH/helium-browser.AppImage" ] ; then + echo -e "\n ${CYN}Helium AppImage found! Trying to update...${CRS}" + update_helium + exit 1 + + else + : + + fi + while true ; do read -p " Download and install Helium from GitHub? (Y/n) : " CONFIRM_INSTALL @@ -49,16 +98,16 @@ install_helium() { chmod +x $TMP/$GIT_FILENAME mkdir -p $INSTALL_PATH mv $TMP/$GIT_FILENAME $INSTALL_PATH/helium-browser.AppImage - echo -e "\n ${GRN}Helium is installed !${CRS}\n" + echo -e "\n ${GRN}Helium is installed!${CRS}\n" rm -rf $TMP exit 0 elif [[ "$CONFIRM_INSTALL" == "n" || "$CONFIRM_INSTALL" == "N" ]] ; then - echo -e "\n ${RED}Installation cancelled !${CRS}\n" + echo -e "\n ${RED}Installation cancelled!${CRS}\n" exit 1 else - echo -e " ${YEL}Invalid response !${CRS}\n" + echo -e " ${YEL}Invalid response!${CRS}\n" fi @@ -67,126 +116,175 @@ install_helium() { ### UPDATE update_helium() { + LOCAL_VERSION=$($INSTALL_PATH/helium-browser.AppImage --version | awk '{print $2}') - while true ; do - read -p " Download and update Helium from GitHub? (Y/n) : " CONFIRM + ### CHECK FOR EMPTY VERSION TAGS + if [ -z "$GIT_VERSION" ] ; then + echo -e "\n ${RED}Empty version tag from ${CYN}GitHub${RED}! Can't compare, exiting...${CRS}" + exit 1 - if [[ "$CONFIRM" == "" || "$CONFIRM" == "y" || "$CONFIRM" == "Y" ]] ; then - GIT_URL=$(curl -s https://api.github.com/repos/imputnet/helium-linux/releases/latest | grep "browser_download_url" | grep "x86_64.AppImage" | grep -v "zsync" | tr -d \" | awk '{print $2}') - GIT_FILENAME=$(curl -s https://api.github.com/repos/imputnet/helium-linux/releases/latest | grep "browser_download_url" | grep "x86_64.AppImage" | grep -v "zsync" | tr -d \" | awk '{print $2}' | awk -F'/' '{print $9}') - wget -P $TMP $GIT_URL -q --show-progress - chmod +x $TMP/$GIT_FILENAME - rm $INSTALL_PATH/helium-browser.OldAppImage >/dev/null 2>&1 - mv $INSTALL_PATH/helium-browser.AppImage $INSTALL_PATH/helium-browser.OldAppImage >/dev/null 2>&1 - mv $TMP/$GIT_FILENAME $INSTALL_PATH/helium-browser.AppImage - echo -e "\n ${GRN}Helium is up-to-date !${CRS}\n" - break + elif [ -z "$LOCAL_VERSION" ] ; then + echo -e "\n ${RED}Empty version tag from ${CYN}local AppImage${RED}! Can't compare, exiting...${CRS}" + exit 1 - elif [[ "$CONFIRM" == "n" || "$CONFIRM" == "N" ]] ; then - echo -e "\n ${RED}Update cancelled !${CRS}\n" - exit 1 + else + : - else - echo -e " ${YEL}Invalid response !${CRS}\n" - - fi + fi + + ### COMPARE LOCAL & REMOTE VERSION + LOCAL_VERSION_NUM=$(echo $LOCAL_VERSION | tr -d .) + GIT_VERSION_NUM=$(echo $GIT_VERSION | tr -d .) + + if [ "$GIT_VERSION" == "$LOCAL_VERSION" ] ; then + echo -e "\n ${GRN}Helium is already up-to-date!${CRS}\n" + + elif [ "$GIT_VERSION_NUM" -gt "$LOCAL_VERSION_NUM" ] ; then + echo -e "\n ${RED}Helium is updatable!${CRS}\n" + echo -e " ${CYN}Local Version :\t${CRS}${LOCAL_VERSION}" + echo -e " ${CYN}GitHub Version :\t${CRS}${GIT_VERSION}\n" + + while true ; do + read -p " Download and update Helium from GitHub? (Y/n) : " CONFIRM + + if [[ "$CONFIRM" == "" || "$CONFIRM" == "y" || "$CONFIRM" == "Y" ]] ; then + GIT_URL=$(curl -s https://api.github.com/repos/imputnet/helium-linux/releases/latest | grep "browser_download_url" | grep "x86_64.AppImage" | grep -v "zsync" | tr -d \" | awk '{print $2}') + GIT_FILENAME=$(curl -s https://api.github.com/repos/imputnet/helium-linux/releases/latest | grep "browser_download_url" | grep "x86_64.AppImage" | grep -v "zsync" | tr -d \" | awk '{print $2}' | awk -F'/' '{print $9}') + wget -P $TMP $GIT_URL -q --show-progress + chmod +x $TMP/$GIT_FILENAME + rm $INSTALL_PATH/helium-browser.OldAppImage >/dev/null 2>&1 + mv $INSTALL_PATH/helium-browser.AppImage $INSTALL_PATH/helium-browser.OldAppImage >/dev/null 2>&1 + mv $TMP/$GIT_FILENAME $INSTALL_PATH/helium-browser.AppImage + echo -e "\n ${GRN}Helium is up-to-date !${CRS}\n" + break + + elif [[ "$CONFIRM" == "n" || "$CONFIRM" == "N" ]] ; then + echo -e "\n ${RED}Update cancelled!${CRS}\n" + exit 1 + + else + echo -e " ${YEL}Invalid response!${CRS}\n" + + fi + + done + + else + echo -e "\n ${RED}Version tags malformed or you are using a Beta version!${CRS}\n" + echo -e " ${CYN}Local Version :\t${CRS}${LOCAL_VERSION}" + echo -e " ${CYN}GitHub Version :\t${CRS}${GIT_VERSION}\n" + echo -e " ${RED}Update failed... Exiting...${CRS}\n" + exit 1 + + fi - done } -### VERSION -version() { - echo -e " ${CYN}Script Version :\t${GRN}${SCRIPT_VERSION}${CRS}" +### SCRIPT VERSION +script_version() { + echo -e "\n ${CYN}Helium Helper Script Version : ${GRN}${SCRIPT_VERSION}${CRS}\n" + exit 0 + +} + +### COMPARE VERSION +compare_version() { + LOCAL_VERSION=$($INSTALL_PATH/helium-browser.AppImage --version | awk '{print $2}') + + ### CHECK FOR EMPTY VERSION TAGS + if [ -z "$GIT_VERSION" ] ; then + echo -e "\n ${RED}Empty version tag from ${CYN}GitHub${RED}! Can't compare, exiting...${CRS}" + exit 1 + + elif [ -z "$LOCAL_VERSION" ] ; then + echo -e "\n ${RED}Empty version tag from ${CYN}local AppImage${RED}! Can't compare, exiting...${CRS}" + exit 1 + + else + : + + fi + + ### COMPARE LOCAL & REMOTE VERSION + LOCAL_VERSION_NUM=$(echo $LOCAL_VERSION | tr -d .) + GIT_VERSION_NUM=$(echo $GIT_VERSION | tr -d .) + + if [ "$GIT_VERSION" == "$LOCAL_VERSION" ] ; then + echo -e "\n ${GRN}Helium is up-to-date!${CRS}\n" + echo -e " ${CYN}Local Version :\t${CRS}${LOCAL_VERSION}" + echo -e " ${CYN}GitHub Version :\t${CRS}${GIT_VERSION}\n" + + elif [ "$GIT_VERSION_NUM" -gt "$LOCAL_VERSION_NUM" ] ; then + echo -e "\n ${YEL}Helium is updatable!${CRS}\n" + echo -e " ${CYN}Local Version :\t${CRS}${LOCAL_VERSION}" + echo -e " ${CYN}GitHub Version :\t${CRS}${GIT_VERSION}\n" + + else + echo -e "\n ${RED}Version tags malformed or you are using a Beta version!${CRS}\n" + echo -e " ${CYN}Local Version :\t${CRS}${LOCAL_VERSION}" + echo -e " ${CYN}GitHub Version :\t${CRS}${GIT_VERSION}\n" + echo -e " ${RED}Update failed ... Exiting ...${CRS}\n" + exit 1 + + fi } ### HELP help() { - echo - echo -e "${CYN}${SCRIPT_NAME}${CRS}" - echo - echo -e "Description of scripts purpose and/or function" - echo - echo -e "Syntax: script_name.sh [-h|-i|-V|-v]" - echo - echo -e "Options:" - echo - echo -e "\t-h\tPrint this help page." - echo -e "\t-i\tInstall something." - echo -e "\t-V\tShow script version." - echo -e "\t-v\tVerbose mode." - echo + echo -e "\n${CYN}${SCRIPT_NAME}${CRS}\n" + echo -e "Helium Browser installer & updater script\n" + echo -e "Syntax: helium_helper.sh [ -i | -u | -c | -s | -h ]\n" + echo -e "Options :\n" + echo -e "\t-i\tInstall Helium to ${GRN}${INSTALL_PATH}${CRS}" + echo -e "\t-u\tUpdate Helium from GitHub" + echo -e "\t-c\tCompare local to remote version" + echo -e "\t-s\tShow script version" + echo -e "\t-h\tPrint this help page.\n" } ########## MAIN ########## -## DEPENDENCY CHECK -for PACKAGE in "${DEPENDENCIES[@]}" ; do - dependency_check "$PACKAGE" +## GET OPTIONS +while getopts ":i,:u,:c,:s,:h" OPTION ; do + case $OPTION in + i) + echo -e "\n ${YEL}Installing Helium Browser...${CRS}" + dependency_check + install_helium + exit ;; + + u) + echo -e "\n ${YEL}Updating Helium Browser...${CRS}" + dependency_check + update_helium + exit ;; + + c) + echo -e "\n ${YEL}Comparing remote to local version...${CRS}" + dependency_check + compare_version + exit ;; + + s) + script_version + exit ;; + + h) + help + exit;; + + esac done -if ! [ "$MISSING" ] ; then - : - -else - echo -e "\n ${RED}Following dependencies are missing :\n\n${YEL}$MISSING\n\n ${CYN}Please install and re-run script !${CRS}" - rm $TMP/missingDeps - exit 1 - -fi +## DEPENDENCY CHECK +dependency_check ## CHECK FOR LOCAL INSTALL -if ! [ -d "$INSTALL_PATH" ] ; then - echo -e "\n ${RED}Helium directory not found !${CRS}" - install_helium - -elif ! [ -f "$INSTALL_PATH/helium-browser.AppImage" ] ; then - echo -e "\n ${RED}Helium directory found but no executable named ${CYN}helium-browser.AppImage ${RED}!${CRS}" - install_helium - -else - : - -fi +local_check ## UPDATE -LOCAL_VERSION=$($INSTALL_PATH/helium-browser.AppImage --version | awk '{print $2}') - -### CHECK FOR EMPTY VERSION TAGS -if [ -z "$GIT_VERSION" ] ; then - echo -e "\n ${RED}Empty version tag from ${CYN}GitHub ${RED}! Can't compare, exiting ...${CRS}" - exit 1 - -elif [ -z "$LOCAL_VERSION" ] ; then - echo -e "\n ${RED}Empty version tag from ${CYN}local AppImage ${RED}! Can't compare, exiting ...${CRS}" - exit 1 - -else - : - -fi - -### COMPARE LOCAL & REMOTE VERSION -LOCAL_VERSION_NUM=$(echo $LOCAL_VERSION | tr -d .) -GIT_VERSION_NUM=$(echo $GIT_VERSION | tr -d .) - -if [ "$GIT_VERSION" == "$LOCAL_VERSION" ] ; then - echo -e "\n ${GRN}Helium is up-to-date !${CRS}\n" - -elif [ "$GIT_VERSION_NUM" -gt "$LOCAL_VERSION_NUM" ] ; then - echo -e "\n ${RED}Helium is updatable !${CRS}\n" - echo -e " ${CYN}Local Version :\t${CRS}${LOCAL_VERSION}" - echo -e " ${CYN}GitHub Version :\t${CRS}${GIT_VERSION}\n" - update_helium - -else - echo -e "\n ${RED}Version tags malformed or you are using a Beta version !${CRS}\n" - echo -e " ${CYN}Local Version :\t${CRS}${LOCAL_VERSION}" - echo -e " ${CYN}GitHub Version :\t${CRS}${GIT_VERSION}\n" - echo -e " ${RED}Update failed ... Exiting ...${CRS}\n" - exit 1 - -fi +update_helium rm -rf $TMP