UPDATER: fixed cooker updater that was failing

This commit is contained in:
XargonWan 2024-03-04 10:17:25 +01:00
parent 8835995829
commit 83629157fa
3 changed files with 31 additions and 8 deletions

View file

@ -31,6 +31,8 @@ check_desktop_mode() {
check_for_version_update() { check_for_version_update() {
# This function will perform a basic online version check and alert the user if there is a new version available. # This function will perform a basic online version check and alert the user if there is a new version available.
log d "Entering funtcion check_for_version_update"
wget -q --spider "https://api.github.com/repos/XargonWan/$update_repo/releases/latest" wget -q --spider "https://api.github.com/repos/XargonWan/$update_repo/releases/latest"
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
@ -60,15 +62,18 @@ check_for_version_update() {
# exit 1 # exit 1
# fi # fi
# TODO: add the logic to check and update the branch from the configuration file # TODO: add the logic to check and update the branch from the configuration file
log i "Showing new version found dialog"
choice=$(zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap --ok-label="OK" --extra-button="Ignore this version" \ choice=$(zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap --ok-label="OK" --extra-button="Ignore this version" \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \ --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
--title "RetroDECK Update Available" \ --title "RetroDECK Update Available" \
--text="There is a new version of RetroDECK on the stable release channel $online_version. Please update through the Discover app!\n\nIf you would like to ignore this version and recieve a notification at the NEXT version,\nclick the \"Ignore this version\" button.") --text="There is a new version of RetroDECK on the stable release channel $online_version. Please update through the Discover app!\n\nIf you would like to ignore this version and recieve a notification at the NEXT version,\nclick the \"Ignore this version\" button.")
rc=$? # Capture return code, as "OK" button has no text value rc=$? # Capture return code, as "OK" button has no text value
if [[ $rc == "1" ]]; then # If any button other than "OK" was clicked if [[ $rc == "1" ]]; then # If any button other than "OK" was clicked
log i "Selected: \"OK\""
set_setting_value $rd_conf "update_ignore" "$online_version" retrodeck "options" # Store version to ignore for future checks set_setting_value $rd_conf "update_ignore" "$online_version" retrodeck "options" # Store version to ignore for future checks
fi fi
elif [[ "$update_repo" == "RetroDECK-cooker" ]] && [[ ! $version == $online_version ]]; then elif [[ "$update_repo" == "RetroDECK-cooker" ]] && [[ ! $version == $online_version ]]; then
log i "Showing update request dialog as \"$online_version\" was found and is greater then \"$version\""
choice=$(zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap --ok-label="Yes" --extra-button="No" --extra-button="Ignore this version" \ choice=$(zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap --ok-label="Yes" --extra-button="No" --extra-button="Ignore this version" \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \ --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
--title "RetroDECK Update Available" \ --title "RetroDECK Update Available" \
@ -76,17 +81,30 @@ check_for_version_update() {
rc=$? # Capture return code, as "Yes" button has no text value rc=$? # Capture return code, as "Yes" button has no text value
if [[ $rc == "1" ]]; then # If any button other than "Yes" was clicked if [[ $rc == "1" ]]; then # If any button other than "Yes" was clicked
if [[ $choice == "Ignore this version" ]]; then if [[ $choice == "Ignore this version" ]]; then
log i "\"Ignore this version\" selected, updating \"$rd_conf\""
set_setting_value $rd_conf "update_ignore" "$online_version" retrodeck "options" # Store version to ignore for future checks. set_setting_value $rd_conf "update_ignore" "$online_version" retrodeck "options" # Store version to ignore for future checks.
fi fi
else # User clicked "Yes" else # User clicked "Yes"
log i "Selected: \"Yes\""
configurator_generic_dialog "RetroDECK Online Update" "The update process may take several minutes.\n\nAfter the update is complete, RetroDECK will close. When you run it again you will be using the latest version." configurator_generic_dialog "RetroDECK Online Update" "The update process may take several minutes.\n\nAfter the update is complete, RetroDECK will close. When you run it again you will be using the latest version."
( (
local latest_cooker_download=$(curl --silent https://api.github.com/repos/XargonWan/$update_repo/releases/latest | grep '"browser_download_url":' | sed -E 's/.*"([^"]+)".*/\1/') local latest_cooker_download=$(curl --silent https://api.github.com/repos/XargonWan/$update_repo/releases/latest | grep '"browser_download_url":' | sed -E 's/.*"([^"]+)".*/\1/')
create_dir "$rdhome/RetroDECK_Updates" local temp_folder="$rdhome/RetroDECK_Updates"
wget -P "$rdhome/RetroDECK_Updates" $latest_cooker_download create_dir $temp_folder
log i "Downloading version \"$online_version\" in \"$temp_folder/RetroDECK-cooker.flatpak\" from url: \"$latest_cooker_download\""
wget -P "$temp_folder" "$latest_cooker_download"
log d "Uninstalling old RetroDECK flatpak"
flatpak-spawn --host flatpak remove --noninteractive -y net.retrodeck.retrodeck # Remove current version before installing new one, to avoid duplicates flatpak-spawn --host flatpak remove --noninteractive -y net.retrodeck.retrodeck # Remove current version before installing new one, to avoid duplicates
flatpak-spawn --host flatpak install --user --bundle --noninteractive -y "$rdhome/RetroDECK_Updates/RetroDECK-cooker.flatpak" log d "Installing new flatpak file from: \"$temp_folder/RetroDECK-cooker.flatpak\""
rm -rf "$rdhome/RetroDECK_Updates" # Cleanup old bundles to save space if [ -f "$temp_folder/RetroDECK-cooker.flatpak" ]; then
log d "Flatpak file \"$temp_folder/RetroDECK-cooker.flatpak\" found, proceeding."
flatpak-spawn --host flatpak install --user --bundle --noninteractive -y "$temp_folder/RetroDECK-cooker.flatpak"
else
log e "Flatpak file \"$temp_folder/RetroDECK-cooker.flatpak\" NOT FOUND. Quitting"
configurator_generic_dialog "RetroDECK Online Update" "There was an error during the update: flatpak file not found please check the log file."
exit 1
fi
rm -rf "$temp_folder" # Cleanup old bundles to save space
) | ) |
zenity --icon-name=net.retrodeck.retrodeck --progress --no-cancel --pulsate --auto-close \ zenity --icon-name=net.retrodeck.retrodeck --progress --no-cancel --pulsate --auto-close \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \ --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
@ -119,7 +137,7 @@ check_version_is_older_than() {
local current_version="$version" local current_version="$version"
local new_version="$1" local new_version="$1"
is_newer_version="false" local is_newer_version="false"
current_version_major_rev=$(sed 's/^\([0-9]*\)\..*/\1/' <<< "$current_version") current_version_major_rev=$(sed 's/^\([0-9]*\)\..*/\1/' <<< "$current_version")
new_version_major_rev=$(sed 's/^\([0-9]*\)\..*/\1/' <<< "$new_version") new_version_major_rev=$(sed 's/^\([0-9]*\)\..*/\1/' <<< "$new_version")

View file

@ -30,6 +30,7 @@ configurator_process_complete_dialog() {
configurator_generic_dialog() { configurator_generic_dialog() {
# This dialog is for showing temporary messages before another process happens. # This dialog is for showing temporary messages before another process happens.
# USAGE: configurator_generic_dialog "title text" "info text" # USAGE: configurator_generic_dialog "title text" "info text"
log i "Showing a configurator_generic_dialog"
zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap \ zenity --icon-name=net.retrodeck.retrodeck --info --no-wrap \
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \ --window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
--title "$1" \ --title "$1" \

View file

@ -99,13 +99,14 @@ https://retrodeck.net
esac esac
done done
# UPDATE TRIGGERED log d "Update triggered"
# if lockfile exists # if lockfile exists
if [ -f "$lockfile" ]; then if [ -f "$lockfile" ]; then
# ...but the version doesn't match with the config file log d "Lockfile found but the version doesn't match with the config file"
if [ "$hard_version" != "$version" ]; then if [ "$hard_version" != "$version" ]; then
log i "Config file's version is $version but the actual version is $hard_version" log i "Config file's version is $version but the actual version is $hard_version"
if grep -qF "cooker" <<< $hard_version; then # If newly-installed version is a "cooker" build if grep -qF "cooker" <<< $hard_version; then # If newly-installed version is a "cooker" build
log d "Newly-installed version is a \"cooker\" build"
configurator_generic_dialog "RetroDECK Cooker Warning" "RUNNING COOKER VERSIONS OF RETRODECK CAN BE EXTREMELY DANGEROUS AND ALL OF YOUR RETRODECK DATA\n(INCLUDING BIOS FILES, BORDERS, DOWNLOADED MEDIA, GAMELISTS, MODS, ROMS, SAVES, STATES, SCREENSHOTS, TEXTURE PACKS AND THEMES)\nARE AT RISK BY CONTINUING!" configurator_generic_dialog "RetroDECK Cooker Warning" "RUNNING COOKER VERSIONS OF RETRODECK CAN BE EXTREMELY DANGEROUS AND ALL OF YOUR RETRODECK DATA\n(INCLUDING BIOS FILES, BORDERS, DOWNLOADED MEDIA, GAMELISTS, MODS, ROMS, SAVES, STATES, SCREENSHOTS, TEXTURE PACKS AND THEMES)\nARE AT RISK BY CONTINUING!"
set_setting_value $rd_conf "update_repo" "RetroDECK-cooker" retrodeck "options" set_setting_value $rd_conf "update_repo" "RetroDECK-cooker" retrodeck "options"
set_setting_value $rd_conf "update_check" "true" retrodeck "options" set_setting_value $rd_conf "update_check" "true" retrodeck "options"
@ -137,7 +138,7 @@ if [ -f "$lockfile" ]; then
fi fi
fi fi
else else
log i "Performing normal upgrade process for version" $cooker_base_version log i "Performing normal upgrade process for version $cooker_base_version"
version=$cooker_base_version # Temporarily assign cooker base version to $version so update script can read it properly. version=$cooker_base_version # Temporarily assign cooker base version to $version so update script can read it properly.
post_update post_update
fi fi
@ -170,10 +171,13 @@ desktop_mode_warning
low_space_warning low_space_warning
# Check if there is a new version of RetroDECK available, if update_check=true in retrodeck.cfg and there is network connectivity available. # Check if there is a new version of RetroDECK available, if update_check=true in retrodeck.cfg and there is network connectivity available.
log i "Check if there is a new version of RetroDECK available"
if [[ $update_check == "true" ]]; then if [[ $update_check == "true" ]]; then
if [[ $(check_network_connectivity) == "true" ]]; then if [[ $(check_network_connectivity) == "true" ]]; then
log d "Running function check_for_version_update"
check_for_version_update check_for_version_update
fi fi
log i "You're running the latest version"
fi fi
# THIS IS A ONE-OFF FORCED REFRESH OF RETRODECK CONTROLLER PROFILES IN A 0.7.6b VERSION REFRESH - REMOVE BEFORE NEXT VERSION RELEASE # THIS IS A ONE-OFF FORCED REFRESH OF RETRODECK CONTROLLER PROFILES IN A 0.7.6b VERSION REFRESH - REMOVE BEFORE NEXT VERSION RELEASE