From f56c1ac3ea5723cbfcd9555a95a010891df7992a Mon Sep 17 00:00:00 2001 From: Fr4nzD13trich Date: Tue, 23 Dec 2025 17:47:06 +0100 Subject: [PATCH] Script updater added --- helium_helper.sh | 149 ++++++++++++++++++++++++++++++++--------------- test.sh | 1 + todo.md | 56 ++++++++++-------- 3 files changed, 134 insertions(+), 72 deletions(-) create mode 100644 test.sh diff --git a/helium_helper.sh b/helium_helper.sh index ce849b8..8fe2dc9 100755 --- a/helium_helper.sh +++ b/helium_helper.sh @@ -19,7 +19,7 @@ APP_NAME_LONG="Helium Web Browser" SOURCE="GitHub" SCRIPT_NAME="$APP_NAME Helper Script" SCRIPT_FILE_NAME="helium_helper.sh" -SCRIPT_VERSION="0.5.1" +SCRIPT_VERSION="0.1" DATE=$(date) ## LOCATIONS @@ -58,7 +58,6 @@ dependency_check () { MISSING=$(cat $TMP/missingDeps) echo -e "\n ${RED}Following dependencies are missing :\n\n${CRS}$MISSING\n\n ${CYN}Please install and re-run script !${CRS}" exit_clean - exit fi } @@ -98,13 +97,13 @@ install_helium() { chmod +x $TMP/$GIT_FILENAME mkdir -p $INSTALL_PATH mv $TMP/$GIT_FILENAME $INSTALL_PATH/$APP_NAME.AppImage - echo -e "\n ${GRN}$APP_NAME_LONG is installed!${CRS}\n" add_launcher - exit_clean + echo -e "\n ${GRN}$APP_NAME_LONG is installed!${CRS}\n" + break elif [[ "$CONFIRM_INSTALL" == "n" || "$CONFIRM_INSTALL" == "N" ]] ; then - echo -e " ${RED}Cancelled!${CRS}\n" - exit + echo -e " ${RED}Cancelled!${CRS}" + break else echo -e " ${YEL}Invalid response!${CRS}\n" @@ -114,14 +113,14 @@ install_helium() { done } -### LAUNCHER --> TO DO +### LAUNCHER add_launcher() { if [ -f "$LAUNCHER_PATH/$APP_NAME.desktop" ] ; then - echo -e "\n ${RED}${APP_NAME}.desktop already exists!${CRS}" - exit + echo -e "\n ${YEL}${APP_NAME}.desktop already exists!${CRS}" elif [ -f "$INSTALL_PATH/$APP_NAME.AppImage" ] ; then while true ; do + echo read -p " Add $APP_NAME_LONG launcher to $LAUNCHER_PATH? (Y/n) : " CONFIRM_LAUNCHER echo @@ -137,12 +136,12 @@ add_launcher() { mkdir -p $LAUNCHER_PATH $BACKUP_PATH $CONFIG_PATH/icon mv $TMP/helium.desktop.template $LAUNCHER_PATH/$APP_NAME.desktop mv $TMP/helium.png $CONFIG_PATH/icon - echo -e "\n ${GRN}$APP_NAME_LONG launcher is set up!${CRS}\n" - exit_clean + echo -e "\n ${GRN}$APP_NAME_LONG launcher is set up!${CRS}" + break elif [[ "$CONFIRM_LAUNCHER" == "n" || "$CONFIRM_LAUNCHER" == "N" ]] ; then - echo -e " ${RED}Cancelled!${CRS}\n" - exit + echo -e " ${RED}Launcher not added!${CRS}" + break else echo -e " ${YEL}Invalid response!${CRS}\n" @@ -208,7 +207,7 @@ update_helium() { break elif [[ "$CONFIRM" == "n" || "$CONFIRM" == "N" ]] ; then - echo -e " ${RED}Cancelled!${CRS}\n" + echo -e " ${RED}Cancelled!${CRS}" exit else @@ -237,7 +236,6 @@ auto_update() { else echo -e "\n ${RED}Not implemented yet...${CRS}" - exit fi } @@ -247,16 +245,18 @@ remove_helium() { if [ -d "$INSTALL_PATH" ] ; then while true ; do - read -p " Remove $APP_NAME_LONG folder $INSTALL_PATH? (Y/n) : " CONFIRM_REMOVE + read -p " Remove $APP_NAME_LONG incl. backups and launcher? (Y/n) : " CONFIRM_REMOVE if [[ "$CONFIRM_REMOVE" == "" || "$CONFIRM_REMOVE" == "y" || "$CONFIRM_REMOVE" == "Y" ]] ; then rm -rf $INSTALL_PATH - rm $LAUNCHER_PATH/$APP_NAME.desktop - echo -e "\n ${RED}$APP_NAME_LONG removed!${CRS}\n" + if [ -f "$LAUNCHER_PATH/$APP_NAME.desktop" ] ; then + rm $LAUNCHER_PATH/$APP_NAME.desktop + fi + echo -e "\n ${RED}$APP_NAME_LONG removed!${CRS}" exit elif [[ "$CONFIRM_REMOVE" == "n" || "$CONFIRM_REMOVE" == "N" ]] ; then - echo -e " ${RED}Cancelled!${CRS}\n" + echo -e " ${RED}Cancelled!${CRS}" exit else @@ -267,7 +267,7 @@ remove_helium() { done else - echo -e "\n ${RED}Can't remove $APP_NAME_LONG! ${YEL}$INSTALL_PATH ${RED}directory not found...${CRS}\n" + echo -e "\n ${RED}Can't remove $APP_NAME_LONG! ${YEL}$INSTALL_PATH ${RED}directory not found...${CRS}" exit fi @@ -275,22 +275,83 @@ remove_helium() { ### SCRIPT VERSION script_version() { - echo -e "\n ${CYN}$APP_NAME_LONG Helper Script Version : ${GRN}${SCRIPT_VERSION}${CRS}\n" + echo -e "\n ${CYN}$APP_NAME_LONG Helper Script Version :${CRS} $SCRIPT_VERSION\n" exit } ### UPDATE SCRIPT --> TO DO +remote_script_check() { + REMOTE_SCRIPT_URL=https://lab.c95.org/fr4nz/helium-helper/raw/branch/main/helium_helper.sh + mkdir -p $TMP + wget -P $TMP $REMOTE_SCRIPT_URL -q + chmod +x $TMP/$SCRIPT_FILE_NAME +} update_script() { - if ! [ -f "$INSTALL_PATH/$APP_NAME.AppImage" ] ; then - echo -e "\n ${RED}$APP_NAME_LONG AppImage not found! Can't update script...${CRS}" - exit - - else - echo -e "\n ${RED}Not implemented yet...${CRS}" + remote_script_check + + ### CHECK FOR LOCAL SCRIPT + if ! [ -f "$SCRIPT_PATH/$SCRIPT_FILE_NAME" ] ; then + echo -e "\n ${RED}$SCRIPT_FILE_NAME not found! Can't update script...${CRS}" exit fi + + REMOTE_SCRIPT_VERSION=$($TMP/$SCRIPT_FILE_NAME -s | awk '{print $8}' | tr -d '\n' ) + + ### 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" + echo -e " ${CYN}Local Version :\t${CRS}${SCRIPT_VERSION}" + echo -e " ${CYN}Remote Version :\t${CRS}${REMOTE_SCRIPT_VERSION}\n" + + elif [ "$REMOTE_SCRIPT_VERSION_NUM" -gt "$SCRIPT_VERSION_NUM" ] ; then + echo -e "\n ${YEL}$SCIPT_FILE_NAME is updatable!${CRS}\n" + echo -e " ${CYN}Local Version :\t${CRS}${SCRIPT_VERSION}" + echo -e " ${CYN}Remote Version :\t${CRS}${REMOTE_SCRIPT_VERSION}\n" + + 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 + mv $SCRIPT_PATH/$SCRIPT_FILE_NAME $BACKUP_PATH/$SCRIPT_FILE_NAME.old + mv $TMP/$SCRIPT_FILE_NAME $SCRIPT_PATH + echo -e "\n ${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}" + 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" + echo -e " ${CYN}Local Version :\t${CRS}${SCRIPT_VERSION}" + echo -e " ${CYN}Remote Version :\t${CRS}${REMOTE_SCRIPT_VERSION}\n" + echo -e " ${RED}Updating script failed...${CRS}\n" + + fi } ### COMPARE APPIMAGE VERSION @@ -339,16 +400,17 @@ compare_version() { 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 | -u | -r | -c | -s | -h ]\n" # | -U | -S + echo -e "Syntax: $SCRIPT_FILE_NAME [ -i | -l | -u | -r | -c | -s | -h ]\n" # | -U | -S | -a | echo -e "Options:\n" echo -e "\t-i\tDownload & install $APP_NAME_LONG from $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 ${RED}--> Not yet working${CRS}" echo -e "\t-u\tDownload & update $APP_NAME_LONG from $SOURCE" echo -e "\t-U\tEnable automatic updates on login ${RED}--> Not yet working${CRS}" 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 ${RED}--> Not yet working${CRS}" + echo -e "\t-S\tUpdate $SCRIPT_FILE_NAME ${RED}--> Not yet working${CRS}" echo -e "\t-h\tPrint this help page.\n" echo -e "Configured locations:\n" echo -e "\t${CYN}${INSTALL_PATH}${CRS}\t\tInstall location" @@ -369,38 +431,34 @@ exit_clean() { ########## MAIN ########## ## GET OPTIONS -while getopts ":i,:L,:u,:U,:r,:c,:s,:S,:h" OPTION ; do +while getopts ":i,:l,:a,:u,:U,:r,:c,:s,:S,:h" OPTION ; do case $OPTION in i) echo -e "\n ${YEL}Installing $APP_NAME_LONG...${CRS}" dependency_check install_helium - exit_clean - exit ;; + exit_clean ;; - L) + l) echo -e "\n ${YEL}Adding $APP_NAME_LONG launcher...${CRS}" dependency_check local_check add_launcher - exit_clean - exit ;; + exit_clean ;; u) echo -e "\n ${YEL}Updating $APP_NAME_LONG...${CRS}" dependency_check local_check update_helium - exit_clean - exit ;; + exit_clean ;; U) echo -e "\n ${YEL}Enabling automatic updates...${CRS}" dependency_check local_check auto_update - exit_clean - exit ;; + exit_clean ;; r) echo -e "\n ${YEL}Removing $APP_NAME_LONG...${CRS}" @@ -412,8 +470,7 @@ while getopts ":i,:L,:u,:U,:r,:c,:s,:S,:h" OPTION ; do dependency_check local_check compare_version - exit_clean - exit ;; + exit_clean ;; s) script_version @@ -422,19 +479,17 @@ while getopts ":i,:L,:u,:U,:r,:c,:s,:S,:h" OPTION ; do S) echo -e "\n ${YEL}Updating script...${CRS}" dependency_check - local_check update_script - exit_clean - exit ;; + exit_clean ;; h) help - exit;; + exit ;; *) echo -e "\n${YEL}Option ${RED}$1${YEL} not recognized... Refer to help below!${CRS}" help - exit;; + exit ;; esac diff --git a/test.sh b/test.sh new file mode 100644 index 0000000..a9bf588 --- /dev/null +++ b/test.sh @@ -0,0 +1 @@ +#!/bin/bash diff --git a/todo.md b/todo.md index 8343156..5bc2c62 100644 --- a/todo.md +++ b/todo.md @@ -4,6 +4,8 @@ - Readme updated - Desktop Entry updater - Launcher has an update option now +- Launcher installer refined +- Clean Up ## Add - Internet connectivity check in [Auto Update Script](https://lab.c95.org/fr4nz/helium-helper/src/branch/main/helium_auto_update.sh) @@ -25,37 +27,41 @@ ## Notes +- Auto Update ```sh -############# TO DO - while true ; do - read -p " Enable automatic update check on login? (y/N) : " AUTO_UPDATE +while true ; do + read -p " Enable automatic update check on login? (y/N) : " AUTO_UPDATE - if [[ "$AUTO_UPDATE" == "" || "$AUTO_UPDATE" == "n" || "$AUTO_UPDATE" == "N" ]] ; then - break + if [[ "$AUTO_UPDATE" == "" || "$AUTO_UPDATE" == "n" || "$AUTO_UPDATE" == "N" ]] ; then + break - elif [[ "$AUTO_UPDATE" == "y" || "$AUTO_UPDATE" == "Y" ]] ; then - if ! [ -f "$PROFILE" ] ; then - echo -e "\n ${RED}Following file is missing :\n\n${YEL}$PROFILE\n\n ${CYN}Please investigate and re-run script !${CRS}" - exit 1 + elif [[ "$AUTO_UPDATE" == "y" || "$AUTO_UPDATE" == "Y" ]] ; then + if ! [ -f "$PROFILE" ] ; then + echo -e "\n ${RED}Following file is missing :\n\n${YEL}$PROFILE\n\n ${CYN}Please investigate and re-run script !${CRS}" + exit 1 - else - wget -P $TMP https://lab.c95.org/fr4nz/shell-scripts/src/branch/main/helium-browser/helium_auto_update.sh -q --show-progress - chmod +x $TMP/helium_auto_update.sh - mv $TMP/helium_auto_update.sh $INSTALL_PATH/helium_auto_update.sh - echo >> $PROFILE - echo "### HELIUM AUTO UPDATE ###" >> $PROFILE - echo "${INSTALL_PATH}/helium_auto_update.sh" >> $PROFILE - echo >> $PROFILE - echo -e "\n ${GRN}Automatic updates enabled ! ${CRS}\n" - break + else + wget -P $TMP https://lab.c95.org/fr4nz/shell-scripts/src/branch/main/helium-browser/helium_auto_update.sh -q --show-progress + chmod +x $TMP/helium_auto_update.sh + mv $TMP/helium_auto_update.sh $INSTALL_PATH/helium_auto_update.sh + echo >> $PROFILE + echo "### HELIUM AUTO UPDATE ###" >> $PROFILE + echo "${INSTALL_PATH}/helium_auto_update.sh" >> $PROFILE + echo >> $PROFILE + echo -e "\n ${GRN}Automatic updates enabled ! ${CRS}\n" + break - fi + fi - else - echo -e " ${YEL}Invalid response !${CRS}\n" + else + echo -e " ${YEL}Invalid response !${CRS}\n" - fi + fi - done -############# +done +``` + +- Script update +```sh +$SCRIPT_PATH/$SCRIPT_FILE_NAME -s | awk {'print $8'} ``` \ No newline at end of file