diff --git a/rclone_script-install-dialog.sh b/rclone_script-install-dialog.sh index 3e446c0..40e1223 100644 --- a/rclone_script-install-dialog.sh +++ b/rclone_script-install-dialog.sh @@ -58,87 +58,13 @@ function dialogBetaWarning () # Installer function installer () { - local retval - initSteps dialogShowProgress 0 -# 1a. Testing for RCLONE binary - updateStep "1a" "in progress" 0 - - 1aTestRCLONE - if [[ $? -eq 0 ]] - then - updateStep "1a" "found" 5 - updateStep "1b" "skipped" 10 - else - updateStep "1a" "not found" 5 - -# 1b. Getting RCLONE binary - updateStep "1b" "in progress" 5 - - 1bInstallRCLONE - if [[ $? -eq 0 ]] - then - updateStep "1b" "done" 10 - else - updateStep "1b" "failed" 5 - fi - fi - -# 1c. Testing RCLONE configuration - updateStep "1c" "in progress" 10 - - 1cTestRCLONEremote - if [[ $? -eq 0 ]] - then - updateStep "1c" "found" 15 - updateStep "1d" "skipped" 20 - else - updateStep "1c" "not found" 15 - -# 1d. Create RCLONE remote - updateStep "1d" "in progress" 15 - 1dCreateRCLONEremote - updateStep "1d" "done" 20 - fi - -# 2a. Testing for PNGVIEW binary - updateStep "2a" "in progress" 20 - - 2aTestPNGVIEW - if [[ $? -eq 0 ]] - then - updateStep "2a" "found" 25 - updateStep "2b" "skipped" 30 - updateStep "2c" "skipped" 35 - else - updateStep "2a" "not found" 25 - -# 2b. Getting PNGVIEW source - updateStep "2b" "in progress" 25 - - 2bGetPNGVIEWsource - if [[ $? -eq 0 ]] - then - updateStep "2b" "done" 30 - -# 2c. Compiling PNGVIEW - updateStep "2c" "in progress" 30 - - 2cCompilePNGVIEW - if [[ $? -eq 0 ]] - then - updateStep "2c" "done" 35 - else - updateStep "2c" "failed" 30 - exit - fi - else - updateStep "2b" "failed" 25 - exit - fi - fi + 1RCLONE + 2PNGVIEW + 3IMAGEMAGICK + 4RCLONE_SCRIPT } @@ -268,6 +194,49 @@ function updateStep () dialogShowProgress ${percent} } +function 1RCLONE () +{ +# 1a. Testing for RCLONE binary + updateStep "1a" "in progress" 0 + + 1aTestRCLONE + if [[ $? -eq 0 ]] + then + updateStep "1a" "found" 5 + updateStep "1b" "skipped" 10 + else + updateStep "1a" "not found" 5 + +# 1b. Getting RCLONE binary + updateStep "1b" "in progress" 5 + + 1bInstallRCLONE + if [[ $? -eq 0 ]] + then + updateStep "1b" "done" 10 + else + updateStep "1b" "failed" 5 + fi + fi + +# 1c. Testing RCLONE configuration + updateStep "1c" "in progress" 10 + + 1cTestRCLONEremote + if [[ $? -eq 0 ]] + then + updateStep "1c" "found" 15 + updateStep "1d" "skipped" 20 + else + updateStep "1c" "not found" 15 + +# 1d. Create RCLONE remote + updateStep "1d" "in progress" 15 + 1dCreateRCLONEremote + updateStep "1d" "done" 20 + fi +} + # Checks if RCLONE is installed # RETURN # 0 > RCLONE is installed @@ -286,7 +255,7 @@ function 1aTestRCLONE () fi } -# Installs RCLONE +# Installs RCLONE by download # RETURN # 0 > RCLONE has been installed # 1 > Error while installing RCLONE @@ -390,6 +359,46 @@ function 1dCreateRCLONEremote () fi } +function 2PNGVIEW () +{ +# 2a. Testing for PNGVIEW binary + updateStep "2a" "in progress" 20 + + 2aTestPNGVIEW + if [[ $? -eq 0 ]] + then + updateStep "2a" "found" 25 + updateStep "2b" "skipped" 30 + updateStep "2c" "skipped" 35 + else + updateStep "2a" "not found" 25 + +# 2b. Getting PNGVIEW source + updateStep "2b" "in progress" 25 + + 2bGetPNGVIEWsource + if [[ $? -eq 0 ]] + then + updateStep "2b" "done" 30 + +# 2c. Compiling PNGVIEW + updateStep "2c" "in progress" 30 + + 2cCompilePNGVIEW + if [[ $? -eq 0 ]] + then + updateStep "2c" "done" 35 + else + updateStep "2c" "failed" 30 + exit + fi + else + updateStep "2b" "failed" 25 + exit + fi + fi +} + # Checks if PNGVIEW is installed # RETURN # 0 > PNGVIEW is installed @@ -470,6 +479,168 @@ function 2cCompilePNGVIEW () } } +function 3IMAGEMAGICK () +{ +# 3a. Testing for IMAGEMAGICK + updateStep "3a" "in progress" 35 + + 3aTestIMAGEMAGICK + if [[ $? -eq 0 ]] + then + updateStep "3a" "found" 40 + updateStep "3b" "skipped" 45 + else + updateStep "3a" "not found" 40 + +# 3b. Getting IMAGEMAGICK + updateStep "3b" "in progress" 40 + 3bInstallIMAGEMAGICK + if [[ $? -eq 0 ]] + then + updateStep "3b" "done" 45 + else + updateStep "3b" "failed" 40 + fi + fi +} + +# Checks is IMAGEMAGICK is installed +# RETURN +# 0 > IMAGEMAGICK is installed +# 1 > IMAGEMAGICK is not installed +function 3aTestIMAGEMAGICK () +{ + printf "$(date +%FT%T%:z):\t3aTestIMAGEMAGICK\tSTART\n" >> ./rclone_script-install.log + + if [ -f /usr/bin/convert ] + then + printf "$(date +%FT%T%:z):\t3aTestIMAGEMAGICK\tFOUND\n" >> ./rclone_script-install.log + return 0 + else + printf "$(date +%FT%T%:z):\t3aTestIMAGEMAGICK\tNOT FOUND\n" >> ./rclone_script-install.log + return 1 + fi +} + +# Installs IMAGEMAGICK via APT-GET +# RETURN +# 0 > IMAGEMAGICK has been installed +# 1 > Error while installing IMAGEMAGICK +function 3bInstallIMAGEMAGICK () +{ + printf "$(date +%FT%T%:z):\t3bInstallIMAGEMAGICK\tSTART\n" >> ./rclone_script-install.log + + sudo apt-get update >> ./rclone_script-install.log && + sudo apt-get --yes install imagemagick >> ./rclone_script-install.log && + + if [[ $? -eq 0 ]] + then + printf "$(date +%FT%T%:z):\t3bInstallIMAGEMAGICK\tDONE\n" >> ./rclone_script-install.log && + return 0 + else + printf "$(date +%FT%T%:z):\t3bInstallIMAGEMAGICK\tERROR\n" >> ./rclone_script-install.log && + return 1 + fi +} + +function 4RCLONE_SCRIPT () +{ +# 4a. Getting RCLONE_SCRIPT + updateStep "4a" "in progress" 45 + + 4aGetRCLONE_SCRIPT + if [[ $? -eq 0 ]] + then + updateStep "4a" "done" 50 + else + updateStep "4a" "failed" 45 + exit + fi + +# 4b. Creating RCLONE_SCRIPT menu item + updateStep "4b" "in progress" 50 + + 4bCreateRCLONE_SCRIPTMenuItem + if [[ $? -eq 0 ]] + then + updateStep "4b" "done" 55 + else + updateStep "4b" "failed" 50 + exit + fi + +# 4c. Configure RCLONE_SCRIPT +} + +# Gets RCLONE_SCRIPT +# RETURN +# 0 > downloaded successfully +# 1 > errors while downloading +function 4aGetRCLONE_SCRIPT () +{ + printf "$(date +%FT%T%:z):\t4aGetRCLONE_SCRIPT\tSTART\n" >> ./rclone_script-install.log + + # create directory if necessary + if [ ! -d ~/scripts/rclone_script ] + then + mkdir ~/scripts/rclone_script >> ./rclone_script-install.log + fi + + { #try + # get script files + wget -N -P ~/scripts/rclone_script ${url}/${branch}/rclone_script.sh --append-output=./rclone_script-install.log && + wget -N -P ~/scripts/rclone_script ${url}/${branch}/rclone_script-menu.sh --append-output=./rclone_script-install.log && + wget -N -P ~/scripts/rclone_script ${url}/${branch}/rclone_script-uninstall.sh --append-output=./rclone_script-install.log && + + # change mod + chmod +x ~/scripts/rclone_script/rclone_script.sh >> ./rclone_script-install.log && + chmod +x ~/scripts/rclone_script/rclone_script-menu.sh >> ./rclone_script-install.log && + chmod +x ~/scripts/rclone_script/rclone_script-uninstall.sh >> ./rclone_script-install.log && + + printf "$(date +%FT%T%:z):\t4aGetRCLONE_SCRIPT\tDONE\n" >> ./rclone_script-install.log && + + return 0 + } || { # catch + printf "$(date +%FT%T%:z):\t4aGetRCLONE_SCRIPT\tERROR\n" >> ./rclone_script-install.log + + return 1 + } +} + +# Creates a menu item for RCLONE_SCRIPT in RetroPie menu +# RETURN +# 0 > menu item has been found or created +# 1 > error while creating menu item +function 4bCreateRCLONE_SCRIPTMenuItem () +{ + printf "$(date +%FT%T%:z):\t4bCreateRCLONE_SCRIPTMenuItem\tSTART\n" >> ./rclone_script-install.log + + # move menu script + mv --force ~/scripts/rclone_script/rclone_script-menu.sh ~/RetroPie/retropiemenu >> ./rclone_script-install.log + + # check if menu item exists + if grep -Fq "./rclone_script-menu.sh" ~/.emulationstation/gamelists/retropie/gamelist.xml + then + printf "$(date +%FT%T%:z):\t4bCreateRCLONE_SCRIPTMenuItem\tFOUND\n" >> ./rclone_script-install.log + return 0 + else + printf "$(date +%FT%T%:z):\t4bCreateRCLONE_SCRIPTMenuItem\tNOT FOUND\n" >> ./rclone_script-install.log + + sed -i "/<\/gameList>/c\\\\t\n\t\t.\/rclone_script-menu.sh<\/path>\n\t\tRCLONE_SCRIPT menu<\/name>\n\t\tCustomize RCLONE_SCRIPT, start a full sync, uninstall RCLONE_SCRIPT<\/desc>\n\t\t\n\t<\/game>\n<\/gameList>" ~/.emulationstation/gamelists/retropie/gamelist.xml + + if [[ $? -eq 0 ]] + then + printf "$(date +%FT%T%:z):\t4bCreateRCLONE_SCRIPTMenuItem\tCREATED\n" >> ./rclone_script-install.log + return 0 + else + printf "$(date +%FT%T%:z):\t4bCreateRCLONE_SCRIPTMenuItem\tERROR\n" >> ./rclone_script-install.log + return 1 + fi + fi +} + + + # main if [ "${branch}" == "beta" ] diff --git a/rclone_sync-menu.sh b/rclone_sync-menu.sh new file mode 100644 index 0000000..8c04ac9 --- /dev/null +++ b/rclone_sync-menu.sh @@ -0,0 +1,40 @@ +#!/bin/bash + + +NORMAL="\Zn" +BLACK="\Z0" +RED="\Z1" +GREEN="\Z2" +YELLOW="\Z3" +BLUE="\Z4" +MAGENTA="\Z5" +CYAN="\Z6" +WHITE="\Z7" +BOLD="\Zb" +REVERSE="\Zr" +UNDERLINE="\Zu" + + +function main_menu () +{ + local choice + + while true + do + choice=$(dialog \ + --stdout \ + --ascii-lines \ + --backtitle "RCLONE_SCRIPT menu" \ + --title "main menu" \ + --menu "\nWhat do you want to do?" 25 75 20 \ + 1 "Full sync" \ + 9 "uninstall" + ) + + case "$choice" in + 1) ~/scripts/rclone_script/rclone_script.sh "full" ;; + 9) ~/scripts/rclone_script/rclone_script-uninstall.sh + *) break ;; + esac + done +} \ No newline at end of file