diff --git a/DBRepair.sh b/DBRepair.sh index eac7899..07bf564 100755 --- a/DBRepair.sh +++ b/DBRepair.sh @@ -1435,10 +1435,46 @@ DoUpdateTimestamp() { TimeStamp="$(date "+%Y-%m-%d_%H.%M.%S")" } +# Get latest version from Github +GetLatestRelease() { + response=$(curl -s "https://api.github.com/repos/ChuckPa/PlexDBRepair/tags") + if [ $? -eq 0 ]; then + LatestVersion=$(echo "$response" | grep -oP '"name":\s*"\K[^"]*' | sed -n '1p') + else + LatestVersion=$Version + fi + +} + +# Download and update script +DownloadAndUpdate() { + url="$1" + filename="$2" + + # Download the file and check if the download was successful + if curl -s "$url" --output "$filename"; then + Output "Update downloaded successfully" + + # Check if the file was written to + if [ -f "$filename" ]; then + Output "Update written successfully" + else + Output "Error: File not written" + fi + else + Output "Error: Download failed" + fi +} + ############################################################# # Main utility begins here # ############################################################# +# Set Script Path +ScriptPath="$( readlink -f "$0")" +ScriptName="$(basename "$ScriptPath")" +ScriptWorkingDirectory="$(dirname "$ScriptPath")" + # Initialize LastName LastTimestamp SetLast "" "" @@ -1569,6 +1605,7 @@ do echo " 11 - 'status' - Report status of PMS (run-state and databases)" echo " 12 - 'undo' - Undo last successful command" echo "" + echo " 88 - 'update' - Check for script update" echo " 99 - 'quit' - Quit immediately. Keep all temporary files." echo " 'exit' - Exit with cleanup options." fi @@ -1870,6 +1907,34 @@ do DoUndo ;; + 88|upda*) + + DoUpdate=0 + Output "Checking for script update" + GetLatestRelease + if [ $LatestVersion != $Version ] && ([ $Scripted -eq 1 ] || ConfirmYesNo "Download and update script?"); then + DoUpdate=1 + Output "Version update available" + else + Output "No update available or user declined update" + fi + + # Check if script path is writable + if [ $DoUpdate -eq 1 ]; then + if [ -w "$ScriptWorkingDirectory" ]; then + Output "Performing update" + DownloadAndUpdate "https://raw.githubusercontent.com/ChuckPa/PlexDBRepair/master/DBRepair.sh" "$ScriptWorkingDirectory/$ScriptName" + exit 0 + else + Output "Script path is not writable." + fi + fi + + if [ $Scripted -eq 1 ]; then + exit 0 + fi + ;; + # Quit 99|quit)